1

有什么方法可以从内核(GPU 代码)找出代码在哪个设备上运行?您可以找到 blockIdx、threadIdx、blockDim 和 gridDim,但有什么方法可以找到 CUDA 设备 ID?

对于那些想知道的人,我计划在 OptiX 程序中使用它来更好地控制 OptiX 缓冲区。

4

1 回答 1

1

这在 OptiX 3.0 和 3.5 中有效,但我不能保证它会一直有效。我们应该在未来的版本中为此提供一个真正的 API。

namespace rti_internal_register
{
    __device__ unsigned reg_device_id;
}

rtBuffer<uchar4, 2> output_buffer;

RT_PROGRAM void pinhole_camera()
{
    if( rti_internal_register::reg_device_id == 0 )
        output_buffer[launch_index] = make_color( make_float3( 0.5, 0.0, 0.0 ) );
    else
        output_buffer[launch_index] = make_color( make_float3( 0.0, 0.5, 0.0 ) );
}
于 2013-11-11T19:05:22.710 回答