# isai **Repository Path**: Microzhy/isai ## Basic Information - **Project Name**: isai - **Description**: No description available - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-13 - **Last Updated**: 2025-10-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ginkgo ISAI 预条件子求解器 本项目包含两个版本的ISAI预条件子求解器,分别运行在CPU和GPU上。 ## 文件结构 - `isai_cpu.cu` - CPU版本,使用Reference执行器 - `isai_gpu.cu` - GPU版本,使用CUDA执行器 - `makefile` - 构建脚本 - `run_clean.sh` - GPU版本简洁输出脚本 - `run_minimal.sh` - GPU版本最简洁输出脚本 ## 编译 ```bash # 编译所有版本 make all # 只编译CPU版本 make isai_cpu # 只编译GPU版本 make isai_gpu # 查看帮助 make help # 清理生成的文件 make clean ``` ## 运行 ### CPU版本 ```bash ./isai_cpu <矩阵文件.mtx> ``` ### GPU版本 ```bash # 直接运行(显示详细日志) ./isai_gpu <矩阵文件.mtx> # 简洁输出 ./run_clean.sh <矩阵文件.mtx> # 最简洁输出 ./run_minimal.sh <矩阵文件.mtx> ``` ## 功能特性 ### CPU版本 (isai_cpu) - 使用Reference执行器(CPU) - 使用ISAI预条件子 - 显示每步的残差值和迭代次数 - 输出格式: ``` 步骤 1: 残差 = 1.73205 步骤 2: 残差 = 1 步骤 3: 残差 = 0.333333 步骤 4: 残差 = 4.99546e-16 ``` ### GPU版本 (isai_gpu) - 使用CUDA执行器(GPU) - 使用ISAI预条件子 - 支持多种输出格式: - 直接运行:显示详细日志 - `run_clean.sh`:简洁输出,显示残差状态 - `run_minimal.sh`:最简洁输出,只显示步数 ## 示例 使用3x3测试矩阵: ```bash # CPU版本 ./isai_cpu simple_test_3x3.mtx # GPU版本 - 简洁输出 ./run_minimal.sh simple_test_3x3.mtx ``` ## 输出示例 ### CPU版本输出 ``` 开始程序,矩阵文件: simple_test_3x3.mtx 执行器创建成功(CPU模式) 矩阵文件打开成功: simple_test_3x3.mtx 矩阵读取成功 矩阵大小: 3 向量创建成功 开始创建 ISAI 预条件子... ISAI 预条件子创建成功 GMRES 求解器创建成功 开始生成求解器... 求解器生成成功 开始应用求解器... 步骤 1: 残差 = 1.73205 步骤 2: 残差 = 1 步骤 3: 残差 = 0.333333 步骤 4: 残差 = 4.99546e-16 求解器应用成功 求解耗时: 0 毫秒 迭代次数: 4 求解完成,解向量 x 的前几项: x[0] = -0.5 x[1] = -1 x[2] = -2 ``` ### GPU版本输出(最简洁) ``` 矩阵大小: 3 开始应用求解器... 步骤 1 步骤 2 步骤 3 步骤 4 求解耗时: 52 毫秒 求解完成,解向量 x 的前几项: x[0] = -0.5 x[1] = -1 x[2] = -2 ```