- 基于c/c++的编程方法
- 支持异构编程的扩展方法
- 简单明了的apis,能够轻松的管理存储系统
cuda支持的编程语言:c/c++/python/fortran/java…
- 异构计算
- CUDA 安装
- CUDA 程序的编写
- CUDA 程序编译
- 利用NVProf查看程序执行情况
gpu不是单独的在计算机中完成任务,而是通过协助cpu和整个系统完成计算机任务,把一部分代码和更多的计算任务放到gpu上处理,逻辑控制、变量处理以及数据预处理等等放在cpu上处理。
host 指的是cpu和内存
device 指的是gpu和显存
nvidia-smi 查看当前gpu的运行状态
系统中安装了cuda但是执行nvcc找不到命令。
添加环境变量。
vim ~/.bashrc
加入环境变量
export PATH="/usr/local/cuda-10.2/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
再次执行nvcc -V结果如下。
2.1 hellowordnvcc也可以支持纯c的代码,所以先写一个helloword的代码进行,使用nvcc进行编译!
cuda程序的编译器驱动nvcc支持编译纯粹的c++代码,一个标准的CUDA程序中既有C++代码也有不属于C++的cuda代码。cuda程序的编译器驱动nvcc在编译一个cuda程序时,会将纯粹的c++代码交给c++的编译器,他自己负责编译剩下的部分(cuda)代码。
创建hell.cu文件,cuda的代码需要以cu为后缀结尾。
#includeint main() { printf("hellowordn"); return 0; } ~
运行结果如下。
cuda 中的核函数与c++中的函数是类似的,cuda的核函数必须被限定词__global__修饰,核函数的返回类型必须是空类型,即void.
#include__global__ void hello_from_gpu() { printf("hello word from the gpu!n"); } int main() { hello_from_gpu<<<1,1>>>(); cudaDeviceSynchronize(); printf("hellowordn"); return 0; } ~
运行结果如下。



