我正在使用Microsoft Visual Studio 2012作为我的IDE环境。显然,我的机器运行的是Windows 7 x64,我正在尝试开发64位程序。
但请注意,编译器是Nvidia的nvcc(我已经验证我下载了64位版本)。
为了详细说明,这是Visual Studio打印出来的编译命令:
D:..."C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -g -DWIN64 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o x64\Debug\kernel.cu.obj "...kernel.cu" -clean
它似乎正在以64位进行编译。
如果是这种情况,我就注意到了这一点:
When compiled to run on a Windows platform...
(1) sizeof(int) == 4
(2) sizeof(long) == 4 //Where 1 and 2 are true regardless of platform, x86 or x64
(3) sizeof(long long) == 8
这准确吗?如果它是,这是否意味着我必须声明一个很长的长度才能在Windows中使用8字节“喜欢”整数? (这意味着我需要避免双打和漂浮)。
答案 0 :(得分:3)
long long
为64位或更长,因此您的猜测是正确的。但是,为清楚起见,最好包含<cstdint>
并使用int64_t
或int_least64_t
。
答案 1 :(得分:0)
是的,MSVC中的整数是4个字节。有关MSVC大小的详细信息,请参阅this article。
对于8个字节的数字,请使用long long
或double
。