gpt4 book ai didi

c++ - 从命令行运行 nvcc 时出现问题

转载 作者:行者123 更新时间:2023-12-02 22:47:37 24 4
gpt4 key购买 nike

我需要从命令行使用 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## 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"

您能帮我解决这个问题吗?

最佳答案

我刚刚在 Visual Studio 2017 和 Cuda v9.0 中尝试使用 nvcc 从命令行进行编译时遇到了这个问题。经过长时间的 session 后,我意识到我的 Visual Studio 命令行工具被设置为使用 x86 Controller 中的 cl.exe,而不是 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

然后就可以正常工作了。

我还要提到,我使用了 git 工具中的 which.exe 实用程序来确定它正在访问的 cl.exe 版本,但是 where 命令 - Windows native - 也可以工作。

更新:

处理此问题的另一种方法(可能是更好的方法)是将 Visual Studio 环境变量正确设置为 64 位,对于企业版如下所示:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64

对于社区版,请在路径中将“社区”替换为“企业”。

您还可以使用(例如)--vcvars_ver=14.0 选择工具集,它会选择使用 15.5 版本的 Visual Studio 编译 CUDA 9.1 所需的 14.0 工具集。

然后你可以简单地用这个来构建:

nvcc  -o add_cuda add_cuda.cu

关于c++ - 从命令行运行 nvcc 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com