0

我在win-XP + VS2005 下尝试编译美林的基数排序时出现错误。

错误:asm 操作数类型大小 (1) 与约束“r”隐含的类型/大小不匹配。

它出现在以下代码中

#define B40C_DEFINE_GLOBAL_LOAD(base_type, dest_type, short_type, ptx_type, reg_mod)\
asm("ld.global.cg."#ptx_type" %0, [%1];" : "="#reg_mod(dest) : _B40C_ASM_PTR_(d_ptr + offset));\
...
B40C_DEFINE_GLOBAL_LOAD(char, signed char, char, s8, r)

谢谢

4

1 回答 1

1

这似乎是由于试图在 32 位平台上编译包含专门为 64 位主机平台编写的内联汇编指令的 CUDA 内核代码造成的。

sizeof(void *)CUDA 工具链通过发出与主机 CPU 的地址模式匹配的 GPU 代码来确保主机和设备上的一致性。这个特定的代码假设指针是 64 位的,而代码是在 32 位主机模式下编译的,导致大小不匹配。

于 2016-01-10T11:40:10.050 回答