На каком устройстве работает ядро 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 ) );
}