标签:定义 thread dim3 Fortran CUDA block
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。