Cuda error CUDA_ERROR_NO_BINARY_FOR_GPU

У меня есть код PTX, который не загружается. Я запускаю это на 650M, с OSX. Другие примеры CUDA отлично работают в системе, но при загрузке модуля я всегда получаю ошибку 209: CUDA_ERROR_NO_BINARY_FOR_GPU

Что мне не хватает?

 .version 3.1
.target sm_20, texmode_independent
.address_size 64


    // .globl   examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx
.entry examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx(
    .param .u64 .ptr .global .align 8 examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx_param_0,
    .param .f64 examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx_param_1,
    .param .f64 examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx_param_2,
    .param .f64 examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx_param_3
)
{
    .reg .pred %p<396>;
    .reg .s16 %rc<396>;
    .reg .s16 %rs<396>;
    .reg .s32 %r<396>;
    .reg .s64 %rl<396>;
    .reg .f32 %f<396>;
    .reg .f64 %fl<396>;

    ld.param.u64    %rl0, [examples_2E_mandelbrot_2F_calc_2D_mandelbrot_2D_ptx_param_0];
    mov.b64 func_retval0, %rl0;
    ret;
}

2 ответа

Решение

Вы получаете ошибку, потому что ваш PTX содержит синтаксическую ошибку, и в результате он никогда не компилируется. Линия

mov.b64 func_retval0, %rl0;

ссылается на этикетку func_retval0, но это нигде не определено в файле PTX. Вы можете проверить это, попробовав самостоятельно скомпилировать PTX с помощью цепочки инструментов:

$ ptxas -arch=sm_20 own.ptx 
ptxas own.ptx, line 24; error   : Arguments mismatch for instruction 'mov'
ptxas own.ptx, line 24; error   : Unknown symbol 'func_retval0'
ptxas own.ptx, line 24; error   : Label expected for forward reference of 'func_retval0'
ptxas fatal   : Ptx assembly aborted due to errors

Отличный совет по запуску ptxas. Я получал ошибку 209: проблема оказалась __shared__ память была переподписана. Раньше это было бы предупреждением при компиляции. У меня Cuda 5.5 и никаких предупреждений о компиляции сейчас - даже с включенным многословным. Спасибо

Другие вопросы по тегам