AmgX 是一个 GPU 加速的核心求解器库,可以加速计算密集型仿真中的线性求解部分。该库包含一个灵活的求解器组合系统,允许用户轻松构建复杂的嵌套求解器和预处理器。该库非常适合隐式非结构化方法。
AmgX 库为大规模并行提供了优化方法,具有灵活选择求解器构建方式的能力,并通过简单的 C API 实现访问,该 API 抽象了单个或多个 GPU 上的并行性和规模,使用用户提供的 MPI。
这是 NVIDIA 注册开发者计划门户网站上 AMGX 库的源代码。
该库的主要特性包括:
查看这些案例研究和白皮书:
以下是如何构建库并在 Matrix Market 格式文件的矩阵上运行示例求解器的说明。默认提供的示例使用全 1 向量作为线性系统的右侧,使用全 0 向量作为初始解。如果要提供自己的右侧值和初始解,请编辑示例。
要构建项目,您需要 CMake 和 CUDA Toolkit。如果要尝试 AMGX 库的分布式版本,还需要 MPI 实现,例如 Linux 上的 OpenMPI 或 Windows 上的 MPICH。您需要支持 c++11 的编译器(例如 GCC 4.8 或 MSVC 14.0)。 您还需要计算能力 >=3.0 的 NVIDIA GPU,请在此处查看您的 GPU 是否支持。
为了拉取所有必要的依赖项,必须使用 --recursive 选项克隆 AmgX,即:
git clone --recursive git@github.com:nvidia/amgx.git
如果要更新未使用 --recursive 克隆的存储库副本,可以使用:
git submodule update --init --recursive
从项目根目录进行典型的构建命令:
mkdir build cd build cmake ../ make -j16 all
有几个自定义 CMake 标志可以使用:
cmake .... -DCUDA_ARCH="60 70" ....
构建系统现在启用 CUDA 作为语言,并使用 FindCUDAToolkit 和 FindMPI, 因此请参考 CMake 安装中这些脚本的模块特定标志。
使用 NVIDIA HPC SDK 构建时,请使用 CMake >= 3.22, 并使用 GCC 进行 C/CXX 编译,例如
cmake \
-DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release \
-DCUDA_ARCH="80" ..
构建的产物是共享库和静态库(libamgxsh.so 或 amgxsh.dll 和 libamgx.a 或 amgx.lib)以及"examples"目录中的几个二进制文件,为您提供 使用各种 AMGX C API 的示例。仅在启用 MPI 构建时才构建 MPI 示例。
示例输入矩阵 matrix.mtx 位于 examples 目录中。示例 AMGX 求解器配置位于根文件夹中的 src/configs 目录中。确保示例能够找到 AMGX 共享库 - 默认情况下,二进制文件使用 -rpath 标志,但您可以在环境变量中手动指定路径:Linux 上的 LD_LIBRARY_PATH 和 Windows 上的 PATH。
> examples/amgx_capi -m ../examples/matrix.mtx -c ../src/configs/FGMRES_AGGREGATION.json AMGX 版本 2.0.0-public-build125 构建于 2017年10月7日 04:51:11 使用 CUDA Runtime 9.0 编译,使用 CUDA 驱动程序 9.0 警告:未指定模式,默认使用 dDDI。 正在读取数据... 未找到 RHS 向量。使用 RHS b=[1,…,1]^T 未找到解向量。将初始解设置为 x=[0,…,0]^T 读取完成 AMG 网格: 层级数:1 层级 行数 非零元素数 稀疏度 内存 (GB) -------------------------------------------------------------- 0(D) 12 61 0.424 8.75e-07 -------------------------------------------------------------- 网格复杂度:1 算子复杂度:1 总内存使用:8.75443e-07 GB -------------------------------------------------------------- 迭代 内存使用 (GB) 残差 收敛率 -------------------------------------------------------------- 初始 0.403564 3.464102e+00 0 0.403564 1.619840e-14 0.0000 -------------------------------------------------------------- 总迭代次数:1 平均收敛率: 0.0000 最终残差: 1.619840e-14 残差总减少量: 4.676075e-15 最大内存使用: 0.404 GB -------------------------------------------------------------- 总时间:0.00169123 设置:0.00100198 秒 求解:0.000689248 秒 求解(每次迭代):0.000689248 秒
> mpirun -n 2 examples/amgx_mpi_capi.exe -m ../examples/matrix.mtx -c ../src/configs/FGMRES_AGGREGATION.json 进程 0 选择设备 0 进程 1 选择设备 0 AMGX 版本 2.0.0-public-build125 构建于 2017年10月7日 04:51:11 使用 CUDA Runtime 9.0 编译,使用 CUDA 驱动程序 9.0 警告:未指定模式,默认使用 dDDI。 警告:未指定模式,默认使用 dDDI。 无法将文件读取为 JSON 对象,尝试作为 AMGX 配置读取 将配置字符串转换为当前配置版本 解析配置字符串:exception_handling=1 ; 使用普通 MPI(主机缓冲区)通信器... 正在读取文件中的矩阵维度:../examples/matrix.mtx 正在读取数据... 未找到 RHS 向量。使用 RHS b=[1,…,1]^T 未找到解向量。将初始解设置为 x=[0,…,0]^T 读取完成 使用普通 MPI(主机缓冲区)通信器... 使用普通 MPI(主机缓冲区)通信器... 使用普通 MPI(主机缓冲区)通信器... AMG 网格: 层级数:1 层级 行数 非零元素数 稀疏度 内存 (GB) -------------------------------------------------------------- 0(D) 12 61 0.424 1.1e-06 -------------------------------------------------------------- 网格复杂度:1 算子复杂度:1 总内存使用:1.09896e-06 GB -------------------------------------------------------------- 迭代 内存使用 (GB) 残差 收敛率 -------------------------------------------------------------- 初始 0.79834 3.464102e+00 0 0.79834 3.166381e+00 0.9141 1 0.7983 3.046277e+00 0.9621 2 0.7983 2.804132e+00 0.9205 3 0.7983 2.596292e+00 0.9259 4 0.7983 2.593806e+00 0.9990 5 0.7983 3.124839e-01 0.1205 6 0.7983 5.373423e-02 0.1720 7 0.7983 9.795357e-04 0.0182 8 0.7983 1.651436e-13 0.0000 -------------------------------------------------------------- 总迭代次数:9 平均收敛率: 0.0331 最终残差: 1.651436e-13 残差总减少量: 4.767284e-14 最大内存使用: 0.798 GB -------------------------------------------------------------- 总时间:0.0170917 设置:0.00145344 秒 求解:0.0156382 秒 求解(每次迭代):0.00173758 秒
AmgX 使用 ci/ 目录中的基础设施自动进行测试,
更多信息请参阅 README.md。
用户 @shwina 构建了 AMGX 的 Python 绑定,请查看以下仓库:https://github.com/shwina/pyamgx。
用户 @piyueh 提供了他们用于 AMGX 的 PETSc 包装器插件的链接:https://github.com/barbagroup/AmgXWrapper。
AMGX 的 Julia 绑定可在以下地址获得:https://github.com/JuliaGPU/AMGX.jl。
有关接口的详细描述,请参阅 API 参考文档。在接下来的几周内,我们将提供更多有关该项目的信息和细节,例如:


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全, 同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

