4

我有一些无法加载的 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;
}
4

2 回答 2

6

您收到错误是因为您的 PTX 包含语法错误,因此它永远不会编译。线

mov.b64 func_retval0, %rl0;

引用一个 label 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
于 2013-03-02T01:25:16.570 回答
1

关于运行 ptxas 的好建议。我收到错误 209:问题原来是 __shared__ 内存被超额订阅。以前这将是编译时的警告。我有 Cuda 5.5,现在编译时没有警告——即使打开了详细信息。谢谢

于 2013-11-13T03:27:08.210 回答