参考:
优达学城:https://classroom.udacity.com/courses/cs344/lessons/55120467/concepts/670611900923
CUDA Zone:https://www.nvidia.cn/object/cuda_education_cn_old.html
一、CPU与GPU的关系
1.计算机有两个不同的处理器,CPU(host)和GPU(device)
2.单纯的C语言编程(plain C program)只能让CPU工作
二、CUDA作用
1.CUDA:可以让代码在CPU和GPU上运行
2.CUDA:将GPU看作是CPU的协同处理器,并假设它们分别有各自的内存。
3.把你的程序分成小块,分别在CPU和GPU上运行,并分别为他们生成代码。
三、程序运行时CPU与GPU的关系
1.CPU和GPU的关系中,CPU占主导,它运行主程序,并向GPU发送指令,告诉GPU做什么。
*也就是说,无论是CPU向GPU发送数据还是GPU向CPU发送数据,都要CPU来控制/initiate。
2.运行时系统要做如下工作:
①将CPU中的数据送到GPU中
②将GPU的数据返回CPU
在C程序中,将数据从一个地方copy到另一个地方的命令叫Memcy;不难理解在gpu运算中,将数据传输来传输去叫做cudaMemcy。
③在GPU上分配存储
C程序中,分配存储的命令叫做Malloc;GPU运算中,就叫做cudaMalloc。
④调用kernel函数,即在GPU上并行运算的程序(行话中:The host launches kernels on the device.)