cuda编程的规约策略-MINRES算法的进阶优化

详细内容可以先参考本人知乎了解细节添加链接描述

CUDA编程的常见问题

1:Error: CUDA driver version is insufficient for CUDA runtime version,这个问题一般是任务在登录节点运行出现的,如果放到计算节点(slurm提交)就会消失。
2:__global__开头的函数没有被GPU调用,这种情况可能是slurm文件有问题,比如说没有指定分区gpu(许多人直接拿openmp的slurm用,但是openmp指定分区cpu)。
3:所有代码都正确,但是结果有问题,经过考察发现这种问题一般是设置的blockdim=(NX,NY,NZ)中NX×NY×NZ大于1024导致的,因为一般的服务器一个block最多只能是1024个线程。
4:规约操作有误,之前代码编写的时候我也遇到规约反复出错,后来发现规约的时候使用了__share__申明共享内存变量,但是调用kernel函数的时候使用的是<<>>,事实上,此时调用kernel函数需要指定共享内存大小,即<<>>。
5:.cu文件明明定义了相关的cuda_minres函数,但是编译报错说undefined of “cuda_minres”,这种可能是在.cu文件里面没有提前申明extern “C” cuda_minres,即这个函数需要提前指定C语言类型。如果全过程使用C++就不需要这个申明了。

你可能感兴趣的:(传统数值方法,高性能计算,算法,python,开发语言)