我需要从命令行使用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];
}
我使用了以下命令(我需要获取.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
编译器创建文件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 "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"
请帮助我解决这个问题?
干杯,
的Massimo
答案 0 :(得分:3)
我刚刚在Visual Studio 2017和Cuda v9.0中尝试使用cl.exe
从命令行进行编译。经过漫长的会话后,我意识到我的Visual Studio命令行工具已设置为使用x86
导演中的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
。有许多方法可以解决它,一种方法是覆盖它查找其编译器工具的目录 - 例如:在
which.exe
然后工作正常。
我还要提到我使用git工具中的cl.exe
实用程序来确定它正在访问的where
版本,但是"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64
命令 - 原生于窗户 - 也可以。
处理此问题的另一种方法 - 可能是更好的方法 - 只需将Visual Studio环境变量正确设置为64位,就像企业版一样:
--vcvars_ver=14.0
社区版替代&#34;社区&#34;为&#34;企业&#34;在路上。
您也可以选择工具集(例如)nvcc -o add_cuda add_cuda.cu
选择14.0工具集,这是使用15.5版本的Visual Studio编译CUDA 9.1所必需的。
然后你可以简单地用这个构建:
Image icon = new Image(getClass().getResourceAsStream("icon.png"));
window.getIcons().add(icon);
答案 1 :(得分:2)
我有类似的问题。
SourceAnnotations.h中构建中断的代码:
#ifdef _WIN64
typedef unsigned __int64 size_t;
#else
typedef _W64 unsigned int size_t;
#endif
我已使用此_WIN64
添加了--compiler-options "-D _WIN64"
编译器符号。我的nvcc构建字符串看起来像这样:
nvcc kernel.cu --cubin --compiler-options "-D _WIN64"
答案 2 :(得分:-1)
VS Community 2019:
打开VS 2019的 x64本机工具命令提示符
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.3.6
** Copyright (c) 2019 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cd c:\Users\AFP\Downloads\cuda_by_example\chapter03
c:\Users\AFP\Downloads\cuda_by_example\chapter03>nvcc hello_world.cu
hello_world.cu
Creating library a.lib and object a.exp
c:\Users\AFP\Downloads\cuda_by_example\chapter03>
如果未为x64
初始化环境,并且您已打开VS 2019的 x86本机工具命令提示符,请运行:
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.3.6
** Copyright (c) 2019 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cd c:\Users\AFP\Downloads\cuda_by_example\chapter03
c:\Users\AFP\Downloads\cuda_by_example\chapter03>nvcc hello_world.cu
hello_world.cu
YOU GET LOT OF ERRORS ....
75 errors detected in the compilation of "C:/Users/AFP/AppData/Local/Temp/tmpxft_00004504_00000000-12_hello_world.cpp1.ii".
c:\Users\AFP\Downloads\cuda_by_example\chapter03>"c:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.3.6
** Copyright (c) 2019 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'
c:\Users\AFP\Downloads\cuda_by_example\chapter03>nvcc hello_world.cu
hello_world.cu
Creating library a.lib and object a.exp
c:\Users\AFP\Downloads\cuda_by_example\chapter03>