我有一个关于从全局CUDA内核调用设备功能的基本问题。我想调用设备函数时可以指定块和线程的数量吗???
我在前面发布了一个关于最小缩减的问题(在此处),我想在另一个全局内核中调用此函数。但是,归约代码需要某些块和线程。
设备上可以调用两种类型的功能:
__device__
函数类似于普通函数c
或c++
函数:它们在单个(CUDA)线程的上下文中运行。可以从一个块中的任意数量的线程中调用这些线程,但是从函数本身的角度来看,它不会像内核启动那样自动创建一组线程。
__global__
函数或“内核” 只能使用内核启动方法(例如my_kernel<<<...>>>(...);
,在CUDA运行时API中)调用。__global__
通过内核启动调用函数时,您可以指定要作为内核配置(<<<...>>>
)的一部分启动的块和线程数。如果您的GPU具有3.5或更高的计算能力,那么您还可以从设备代码中调用一个__global__
函数(使用本质上相同的内核启动语法,该语法允许您为“子”内核指定块和线程)。它采用了CUDA动态并行功能 ,在编程指南的整个章节中都有专门介绍。
有许多CUDA示例代码演示:
__device__
函数,例如simpleTemplates__global__
从设备调用函数,例如cdpSimplePrint 归档时间: |
|
查看次数: |
885 次 |
最近记录: |