2011-08-16 26 views
0

当我尝试在win-XP + VS2005下编译Merrill的基数排序时,出现错误。错误:asm操作数类型大小(1)与约束'r'暗示的类型/大小不匹配。关于Duane Merrill的GPU基数排序

错误: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) 

由于

+0

你用什么版本的nvcc和toolchain编译这个? – talonmies

+0

谢谢你,Talonmies。我使用的工具包v4.0和我的图形卡是GT520(能力是2.1)。 s8有没有命令(比如“r”)? – Yik

回答

1

这似乎可以通过试图编译包含内汇编指令在32为64位主机平台特别编写CUDA内核代码引起位平台。

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