На каком устройстве работает ядро ​​cuda

Есть ли способ из ядра (код GPU) узнать, на каком устройстве работает код? Вы можете найти blockIdx, threadIdx, blockDim и gridDim, но есть ли способ найти идентификатор устройства CUDA?

Для тех, кто интересуется, я планирую использовать его в программе OptiX, чтобы иметь больше контроля над буферами OptiX.

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 ) );
}
Другие вопросы по тегам