4

我在当前项目中使用 Thrust,因此我不必自己编写device_vector抽象或(分段)扫描内核。

到目前为止,我已经使用推力抽象完成了所有工作,但是对于简单的内核或不容易转换为 for_each 或转换抽象的内核,我更愿意在某些时候编写自己的内核。

所以我的问题是:我可以通过 Thrust(或者可能是 CUDA)询问当前正在使用哪个设备以及它具有哪些属性(最大块大小、最大共享内存,所有这些东西)?

如果我无法获得当前设备,那么如果我提供内核寄存器和共享内存要求,是否有某种方法可以让我获得计算内核尺寸的动力?

4

1 回答 1

3

您可以使用 CUDA 查询当前设备。请参阅有关设备管理的 CUDA 文档。寻找cudaGetDevice(), cudaSetDevice(),cudaGetDeviceProperties()等。

Thrust 目前没有设备管理的概念。我不确定“获得推力以计算内核尺寸”是什么意思,但是如果您正在寻找确定用于启动自定义内核的网格尺寸,那么您需要自己做。它可以帮助查询内核的属性cudaFuncGetAttributes(),这是 Thrust 使用的。

于 2012-07-11T02:53:30.207 回答