1 Star 1 Fork 0

于要杰/kokkos-gmres

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

kokkos-GMRES项目简介

本项目的目的是使用Kokkos实现GMRES方法求解线性方程组Ax=b,并在CPU和GPU(CUDA)上运行。

GMRES算法

广义最小残差(Generalized Minimum RESidual, GMRES)是有Saad等人提出了一种求解大型线性方程组的Krylov子空间方法,GMRES在理论上和共轭梯度法等价,但它的适用范围更广,适用于非对称线性方程组的求解。此外,GMRES方法在计算开销和内存需求上均比CG方法有所降低。它的算法如下:

GMRES

如何编译?

1. 串行编译

# 切换的项目目录
cd kokkos-gmres
# 建立串行的build_serial文件
mkdir build_serial && cd build_serial
# 编译
cmake .. && make -j4
# 切换到项目路径下的bin文件夹
cd ../bin
# 在bin中建立gmres.serial的链接
ln -s ../build/src/gmres.serial gmres.serial
# 开始计算,默认的输入矩阵为gr_30_30.mtx
./gmres.serial

2. OpenMP编译

# 切换的项目目录
cd kokkos-gmres
# 建立串行的build_openmp文件
mkdir build_openmp && cd build_openmp
# 编译
cmake -DKokkos_ENABLE_OPENMP=ON .. && make -j4
# 切换到项目路径下的bin文件夹
cd ../bin
# 在bin中建立gmres.serial的链接
ln -s ../build_openmp/src/gmres.openmp gmres.openmp
# 开始计算,默认的输入矩阵为gr_30_30.mtx
./gmres.openmp --kokkos-threads=2

3. CUDA编译

# 切换的项目目录
cd kokkos-gmres
# 建立串行的build_openmp文件
mkdir build_cuda && cd build_cuda
# 此处替换成kokkos的路径
export CXX=/path/to/kokkos-kokkos/external/kokkos/bin/nvcc_wrapper
# 编译(注意将-DKokkos_ARCH_MAXWELL50=ON替换成相应GPU的架构)
cmake -DKokkos_ENABLE_CUDA=ON -DKokkos_ENABLE_CUDA_LAMBDA=ON -DKokkos_ARCH_MAXWELL50=ON ..
# 切换到项目路径下的bin文件夹
cd ../bin
# 在bin中建立gmres.serial的链接
ln -s ../build_cuda/src/gmres.cuda gmres.cuda
# 开始计算,默认的输入矩阵为gr_30_30.mtx
./gmres.cuda gr_30_30.mtx

GPU的编译比较复杂,容易出错。如果编译未通过,请使用ccmake进入可视化图形操作。需要kokkos能够找到CUDA的路径, 例如: /usr/local/cuda-9.0.

3. HIP等

在AMD的GPU编译和运行方式如下:

# 切换的项目目录
cd kokkos-gmres
# 建立串行的build_openmp文件
mkdir build_hip && cd build_hip
# 编译(此处的clang是rocm文件夹的clang)
export CXX=/public/software/compiler/rocm/rocm-4.0.1/bin/hipcc
cmake  -DKokkos_ENABLE_HIP=ON -DKokkos_ARCH_VEGA906=ON ..
# 切换到项目路径下的bin文件夹
cd ../bin
# 在bin中建立软链接
ln -s ../build_cuda/src/gmres.hip gmres.hip
# 开始运行
./gmres.hip gr_30_30.mtx

空文件

简介

基于Kokkos并行编程模型实现GMRES算法。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/yaojieyu/kokkos-gmres.git
git@gitee.com:yaojieyu/kokkos-gmres.git
yaojieyu
kokkos-gmres
kokkos-gmres
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891