CUDA Fortran中如何定义block和thread的维度
作者:互联网
CUDA Fortran中如何定义block和thread的维度
在CUDA中,存在grid,block,thread的概念,而在调用核函数时,这些参数需要我们人为地去指定.当这三个参数为一维时只需要用一个整形变量去定义即可.但当需要定义二维及以上的grid,block和thread时,在 CUDA C 中只需要用dim3
关键字,如 dim3 block(2,2)
便是定义了一个$2 \times 2 $的线程块,三维只需要增加一个参数: dim3 block(2,2,2)
即可.但是在CUDA Fortran中,和CUDA C稍有区别,其语法为:
type(dim3) :: blocks, threads
...
blocks = dim3(2,2,2)
threads = dim3(2,2,2)
call devkernel<<<blocks,threads>>>(...)
相比CUDA C来说会繁琐一些,首先是变量需要另外进行声明,另外,dim3括号内的参数必须是三个,否则编译会报错,如果需要的是二维的block或thread,那么只需要将三个参数中的一个设为1即可.
标签:定义,thread,dim3,Fortran,CUDA,block 来源: https://www.cnblogs.com/yukina/p/16421531.html