典型的CUDA程序的执行流程如下:
分配host, 并进行数据初始化
分配device内存, 并从host将数据拷贝到device上.
调用CUDA的和函数在device上完成指定的运算....释放device和host上分配的内存.
kernel是在device上并行执行的函数, 在调用此类函数时, 将由N个不同的CUDA线程并行执行N次, 执行kernel的每个线程都会被分配一个唯一的线程...是异构模型, 所以需要区分host和device上的代码, 在CUDA中通过函数修饰限定词来区分的: 主要三种限定词如下:
__global__: 在device上执行, 从host中调用, 返回类型必须是...void, 不支持可变参数, 不能成为类成员函数....__host__: 在host上执行, 仅可以从host上调用, 一般省略不写, 不可以和__global__同时用, 但可以和__device__同时用, 此时函数会在device和host上都编译.