首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ptxas抱怨(输入)我的可悲的设备功能

ptxas抱怨(输入)我的可悲的设备功能
EN

Stack Overflow用户
提问于 2020-02-15 22:11:42
回答 1查看 38关注 0票数 0

考虑以下PTX代码:

代码语言:javascript
复制
//
// Generated by NVIDIA NVVM Compiler... sort of
//
// Compiler Build ID: CL-25769353
// Cuda compilation tools, release 10.1, V10.1.105
// Based on LLVM 3.4svn
//

.version 6.4
.target sm_30
.address_size 64

.func  (.param .b32 func_retval0) foo(
        .param .b32 foo_param_0,
        .param .b32 foo_param_1,
        .param .b32 foo_param_2
)
{
        .reg .b16       %rs<3>;
        .reg .b32       %r<3>;


        ld.param.u16    %rs1, [foo_param_0];
        ld.param.u16    %rs2, [foo_param_1];
        ld.param.u32    %r2, [foo_param_2];
        // inline asm
        sad.s16 %r1, %rs1, %rs2, %r2;
        // inline asm
        st.param.b32    [func_retval0+0], %r1;
        ret;
}

当我试图用ptxas (CUDA 10.1)编译它时,我得到:

代码语言:javascript
复制
ptxas /tmp/a.ptx, line 27; error   : Arguments mismatch for instruction 'sad'
ptxas fatal   : Ptx assembly aborted due to errors

为什么会这样呢?这种类型组合有什么问题?

PTX参考说:

sad.type d,a,b,c;.type ={ .u16,.u32,.u64,.s16,.s32,.s64 };

dc似乎永远都是u32,而type适用于ab。这正是__sad()函数在device_functions.h中所拥有的。

EN

回答 1

Stack Overflow用户

发布于 2020-02-15 22:11:42

实际上,da的类型需要是“bc类型的无符号版本”。因此,这应该是可行的:

代码语言:javascript
复制
.func  (.param .b32 func_retval0) foo(
        .param .b32 foo_param_0,
        .param .b32 foo_param_1,
        .param .b32 foo_param_2
)
{
        .reg .b32       %r<5>;


        ld.param.u32    %r4, [foo_param_2];
        ld.param.s16    %r2, [foo_param_0];
        ld.param.s16    %r3, [foo_param_1];
        // inline asm
        sad.s32 %r1, %r2, %r3, %r4;
        // inline asm
        st.param.b32    [func_retval0+0], %r1;
        ret;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60243590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档