【cuda】- 01

    科技2022-08-15  103

    1. 基本概念

    host :指代 cpu 及其内存device :指代 gpu 及其内存cuda 程序 包括 host 程序和 device 程序,分别在 cpu 和 gpu 上运行host 和 device 之间可以通信,进行数据拷贝

    2. cuda 程序执行流程

    分配 host 内存,数据初始化分配 device 内存,并从 host 将数据拷贝到 device 上调用 cuda 核函数在 device 上完成运算将 device 的运算结果拷贝到 host 上释放 device 和 host 上分配的内存

    核函数 :

    需要用 _ _ global_ _ 符号声明调用时需要用 <<<grid, block>>> 来指定 kernel 要执行的线程数量 cuda 中每一个线程都要执行核函数,并且每个线程都会分配一个唯一的线程号 thread ID,这个 ID 值可以通过核函数的内置变量 threadidx 获得

    cuda 核函数

    kernel_function<<<num_blocks, num_threads>>>(param1, param2, ...)

    num_blocks : 线程块的数量 num_threads : 执行内核函数的线程数量

    举个栗子:

    some_kernel_func<<<2, 64>>>(a, b, c)

    这将会调用 some_kernel_func 这个 gp× 64 次

    然后具体核函数:

    __global__ void some_kernel_func(int * const a, const int * const b,const int * constc) { const unsigned int thread_idx = (blockIdx.x * blockDim.x) + threadIdx.x; a[thread_idx] = b[thread_idx] * c[thread_idx]; }
    Processed: 0.025, SQL: 9