use*_*687 9 c++ cuda nvcc visual-c++
我需要从命令行使用nvcc编译cuda .cu文件.该文件是"vectorAdd_kernel.cu"并包含以下代码:
extern "C" __global__ void VecAdd_kernel(const float* A, const float* B, float* C, int N)
{
int i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < N)
C[i] = A[i] + B[i];
}
Run Code Online (Sandbox Code Playgroud)
我使用以下命令(我需要获取.cubin文件):
nvcc --cubin --use-local-env --cl-version 2010 -keep -I "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include" vectorAdd_kernel.cu
Run Code Online (Sandbox Code Playgroud)
编译器创建文件vectorAdd_kernel.cpp4.ii和vectorAdd_kernel.cpp1.ii然后它使用以下输出停止:
C:\Users\Massimo\Desktop\Pluto>nvcc --cubin --use-local-env --cl-version 2010 vectorAdd_kernel.cu -keep -I "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"
vectorAdd_kernel.cu
vectorAdd_kernel.cu
c:\program files (x86)\microsoft visual studio 10.0\vc\include\codeanalysis\sourceannotations.h(29): error: invalid redeclaration of type name "size_t"
C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include\new(51): error: first parameter of allocation function must be of type## Heading ## "size_t"
C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include\new(55): error: first parameter of allocation function must be of type "size_t"
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?
干杯,
马西莫
Mik*_*ise 13
我刚刚在 Visual Studio 2017 和 Cuda v9.0 中遇到了这个问题,试图从命令行使用nvcc. 经过长时间的会话后,我意识到我的 Visual Studio 命令行工具已设置为cl.exe从x86Director 而不是x64. 有多种方法可以解决它,一种方法是覆盖它查找其编译器工具的目录 - 例如:
nvcc -ccbin "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.11.25503\bin\HostX86\x64" -o add_cuda add_cuda.cu
Run Code Online (Sandbox Code Playgroud)
然后它工作正常。
我还会提到我使用which.exegit 工具中的实用程序来确定cl.exe它正在访问的版本,但是where命令 - Windows 原生 - 也可以使用。
另一种方法 - 可能是更好的方法 - 处理这个问题是将 Visual Studio 环境变量正确设置为企业版的 64 位,如下所示:
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
Run Code Online (Sandbox Code Playgroud)
对于社区版,在路径中将“社区”替换为“企业”。
您还可以选择工具集(例如)--vcvars_ver=14.0选择 14.0 工具集,这是使用 15.5 版本的 Visual Studio 编译 CUDA 9.1 所必需的。
然后你可以用这个简单地构建:
nvcc -o add_cuda add_cuda.cu
Run Code Online (Sandbox Code Playgroud)
小智 1
我也遇到过类似的问题。
SourceAnnotations.h 中构建中断的代码:
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
typedef _W64 unsigned int size_t;
#endif
Run Code Online (Sandbox Code Playgroud)
我已经_WIN64用 this 添加了编译器符号--compiler-options "-D _WIN64"。我的 nvcc 构建字符串如下所示:
nvcc kernel.cu --cubin --compiler-options "-D _WIN64"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2841 次 |
| 最近记录: |