为什么nvcc找不到我的Visual C++安装?
我正在使用NVIDIA 3100m的核心i5上运行Windows 7 Pro X64,这是CUDA兼容的. 我尝试过安装来自Nvidia的32位和64位CUDA工具包,不幸的是,我都无法编译任何内容. NVCC说"找不到支持的CL版本.只有MSVC 8.0和MSVC 9.0得到支持". 我使用Windows 7 SDK安装了X86和X86-64编译器(两个拱门的编译器版本15.00.30729.01).两个编译器都可以正常运行;我已经使用它们构建和测试了C ++代码.我尝试从设置32位和64位编译的命令外壳中运行NVCC,并使用-ccbin命令行选项将其指向NVCC,将其指向Visual C ++安装目录. 处理此设置的正确方法是什么?有什么办法使NVCC对发生的事情更详细? -v旗并不可怕.理想情况下,使它显示出它在发现的内容与期望找到的东西.如果我安装Visual C ++ Express,这会更好吗?还是仅支持与CUDA一起使用的VC ++的商业版? 解决方
0 2023-12-05
编程技术问答社区
我如何在Windows上用CUDA使用其他的C++编译器?
我正在尝试使用CUDA构建一个简单的应用程序,并且我一直在尝试几个小时,而我只是无法在Windows上使用它. NVCC绝对拒绝没有Visual Studio的编译器,而这些编译器不支持我需要的内容.我尝试使用NVCC与Clang建造,但它只是要求我使用Visual Studio的编译器.我还尝试过直接使用Clang,因为它现在支持CUDA,但是我收到此错误: clang++.exe: error: Unsupported CUDA gpu architecture: compute_52 这对我来说毫无意义,因为我拥有cuda工具包7.5版本,而我的图形卡是GTX 970(其中两个).我已经广泛地搜索了这一点,到处遇到的任何地方,这个人总是遇到的错误是他们的cuda工具包 解决方案 cuda Windows工具链您仍然可以使用另一个编译器来编译非CUDA主机代码,然后使用NVCC和VS工具链链接该代码. 其他解决方案 尝试使用clang-cl,--cubin=cla
2 2023-12-05
编程技术问答社区
使用CreateProcess调用nvcc.exe
我们目前使用一个模拟JIT编译器,用于CUDA,其中NVCC.EXE在某些文件上被调用,并生成了结果.ptx文件. bool executeWindowsProcess(ofstream &logFF) { STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); char cmd[] = "\"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v5.0\\bin\\nvcc.exe\""; char args[] = "\"C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v5.0\\bin\\nvcc.exe\" --
0 2023-12-04
编程技术问答社区
我如何设置nvcc以使用Windows SDK 7.1中的Visual C++ Express 2010 x64?
我正在使用Windows SDK 7.1(添加64位编译器)构建具有Visual C ++ Express 2010的64位应用程序.当我在32位模式下使用NVCC时,它运行良好.当我以64位模式使用它时,我会得到此错误: nvcc fatal : Visual Studio configuration file '(null)' could not be found for installation at 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64/../../..' 我该怎么做才能向NVCC提供正确的文件? 解决方案 好吧,我找到了解决方案. NVCC正在寻找Program Files\Microsoft Visual Studio 10.0\VC\bin\amd64中的vcvars64.bat文件,但它仅存在于Vs的专业版本中.您必须手动将其放置在内部: CALL
0 2023-12-04
编程技术问答社区
CUDA。NVCC在断言时给出控制表达式为常数的警告
我在这样的断言语句中获取警告controlling expression is constant: assert(... && "error message"); 为什么要警告这个断言?我如何抑制此警告? NVCC是NVIDIA CUDA编译器,我认为它基于LLVM.当相同编译与GCC或Visual C ++编译器罚款时,为什么会发出此警告? 解决方案 便携式替代方案(可能包裹在宏中)将是: { const bool error_message = true; assert([...] && error_message); } 清除我的意思: #define myAssert(msg, exp) { const bool msg(true); assert(msg && (exp)); } // usage: myAssert(ouch, a && b); ...给出例如: 断言" ouch &&(A && b)"
0 2023-11-27
编程技术问答社区
什么时候与寄存器/局部变量一起使用volatile?
用挥发性预选赛在CUDA中声明寄存器数组的含义是什么? 当我尝试使用寄存器数组的挥发性关键字尝试时,它将溢出寄存器内存的数量删除到本地内存. (即迫使CUDA使用寄存器代替本地记忆)这是预期的行为吗? 我找不到有关CUDA文档中登记阵列的挥发性用法的任何信息. 这是两个版本的PTXA -V输出 带有挥发性预选赛 __volatile__ float array[32]; ptxas -v输出 ptxas info : Compiling entry function '_Z2swPcS_PfiiiiS0_' for 'sm_20' ptxas info : Function properties for _Z2swPcS_PfiiiiS0_ 88 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads ptxas info : Used 47 registe
0 2023-11-25
编程技术问答社区
有没有人真正让NVCC和英特尔编译器一起工作?
试图让NVCC使用英特尔编译器的许多问题.它不起作用,我明白了. 人们给出的最常见的答案是使用NVCC/CL.EXE将设备代码编译到库中,然后单独编译主机代码并将其链接.我正在尝试这个,但是却一无所获. 在VS2012中,我创建了一个带有2个项目的解决方案 - 一个CUDA,另一个Console应用程序. 我将CUDA项目设置为将VS2012编译到静态库中.它没问题. 我已将控制台应用程序设置为Intel 14.0,并将其作为EXE编译.我还为"其他库依赖关系"添加了正确的路径,并通过"其他依赖关系"告诉了编译器有关CUDA库的信息(我还告诉它有关cudart_static.lib). 还设置了构建依赖性,以首先编译CUDA项目. 但是,此设置不好.给我一个错误,即使Google都亏了: Error 5 error MSB4057: The target "ComputeLegacyManifestEmbedding" does not
0 2023-11-24
编程技术问答社区
nvcc.exe链接错误 Microsoft Visual Studio配置文件'vcvars64.bat'无法找到
我想从Windows命令行中使用nvcc -ptx,但是我总是收到此错误消息: NVCC:致命错误:Microsoft Visual Studio配置文件" VCVARS64.BAT"在'C:\ Program Files(x86)\ Microsoft Visual S的安装中找不到bat' tudio 11.0 \ vc \ bin/../..' 我正在使用VS 2012 Express Edition.解决方案是什么? 解决方案 我设法解决了该问题并与MS Visual Studio Express 2012,我在这里所做的工作: 安装了MS Visual Studio 2012 Express 安装cuda_5.5.20_winvista_win7_win8_general_64,截至2014-01-16 的最新版本 来自此目录:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin,我已将X8
2 2023-11-23
编程技术问答社区
VS2010编译器和cuda错误:链接规范与之前的 "hypot "不兼容
当我尝试在64位Windows 7上使用vs 2010中的2010年在Debug 64位配置构建项目时,我会发现此错误以及其他两个错误. 错误:链接规范与Math.h Line 161中的先前" hypot"不相容 错误:链接规范与Math.h Line 161中的以前的" hypotf"不相容 错误:函数" ABS(长)"已经在Math_functions中定义了.H行534 我在32位构建中没有得到这些错误.此外,VS2008的64位构建工作.这个问题是否有适当的工作,还是我应该等到NVCC支持2010年编译器? ? 解决方案 是的,这在VS2010中进行了更改: /* hypot and hypotf are now part of the C99 Standard */ static __inline double __CRTDECL hypot(_In_ double _X, _In_ double _Y) { return _hypot(_X,
0 2023-11-23
编程技术问答社区
如何使用英特尔 C++ 编译器与 CUDA nvcc?
我在Microsoft Visual Studio 2008上使用了NVIDIA CUDA 4.1. 我还安装了Intel Parallel Studio XE 2011. 默认情况下,NVIDIA的C编译器nvcc.exe使用Microsoft的C编译器cl.exe编译其C代码. 如何更改设置,以便nvcc使用英特尔的C编译器icl.exe. 解决方案 不幸的是,您不能(或至少它的高度未经许可). Windows支持的唯一编译器是Visual Studio.除非有任何变化,并且现在它们支持英特尔的编译器,我不建议使用它们 http://forums.nvidia.com/index.php?showtopic=153975
0 2023-11-20
编程技术问答社区
从命令行运行nvcc时出现的问题
我需要使用命令行中的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
0 2023-11-20
编程技术问答社区
用gcc连接CUDA静态库或共享库时出现未定义引用错误
GCC和CUDA问题 嗨, 我已经编译了一个CUDA共享库,但无法将其与使用它的主要程序链接.我正在使用GCC 编译主计划 代码: simplemain.c #include #include void fcudadriver(); int main() { printf("Main \n"); fcudadriver(); return 0; } test.cu __global__ void fcuda() { } void fcudadriver() { fcuda>>(); } i编译test.cu as->它可以工作 nvcc --compiler-options '-fPIC' -o libtest.so --sh
8 2023-11-06
编程技术问答社区
NVCC致命:不支持的GPU架构" Compute_86"
我有一个nvidia rtx 3090 ti 24gb,带有此驱动程序 CUDA Version: 11.4 Driver Version: 470.74 18.04.1-Ubuntu SMP Cuda compilation tools, release 9.1, V9.1.85 我已经寻找了此卡体系结构,它是安培的,因此库的版本是Compute_86或SM_86(如果我没有错).但是在使用NVCC编译时,它给了我 NVCC致命:不支持的GPU架构'Compute_86' 我已经运行了NVCC-螺旋 - 我发现了一些奇怪的东西,它使我回报了GPU代码和GPU-Architecture 允许此选项的值:'Compute_30','Compute_32','Compute_35', 'compute_37','compute_50','compute_52','compute_53','compute_60','compute_61', 'compute
4 2023-11-02
编程技术问答社区
NVCC错误:string_view.h:constexpr函数返回是非恒定的
我正在尝试使用CUDA代码编译一些TensorFlow本机OP. 我在此处使用Python 3.6和Tensorflow 1.11,在Ubuntu上使用CUDA 8.0. 更具体地: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10) GNU C++11 (Ubuntu 5.4.0-6ubuntu1~16.04.10) version 5.4.0 20160609 (x86_64-linux-gnu) compiled by GNU C version 5.4.0 20160609, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3 编辑:我通过-compiler-bindir clang++或-compiler-bindir gcc-4.8>,并且始终是相同的错误. test.cu: // For Eigen:
8 2023-10-16
编程技术问答社区
如何在可分离编译后将主机代码与静态CUDA库连接起来?
好吧,我有一个非常令人不安的CUDA 5.0问题,以解决如何正确链接事物.我真的很感谢任何帮助! 使用CUDA 5.0的可分离汇编功能,我生成了一个静态库(*.A).这很好地与其他 *.cu文件链接在通过NVCC运行时,我做了很多次. 我现在想使用一个 *.cpp文件,并使用g ++或其他静态库中的主机代码链接它,但不使用NVCC.如果我尝试过,我会得到编译器错误,例如 不确定的__ cudaregisterlinkedbinary 我同时使用-lcuda和-lcudart,据我所知,将库的顺序正确(含义-lmylib -lcuda -lcudart).我认为这不是问题.也许我错了,但是我觉得我错过了一步,我需要对我的静态库(设备链接?)做其他事情,然后才能将其与G ++一起使用. 我错过了关键的东西吗?这甚至可能吗? 奖励问题:我希望最终结果是动态库.我该如何实现? 解决方案 与NVCC链接时,它将与主机链接一起进行隐式设备链接.如果您使用主
6 2023-09-29
编程技术问答社区
cuda共享库链接:对cudaRegisterLinkedBinary的未定义引用
目标: 创建一个包含我的CUDA内核的共享库,该库具有无CUDA包装器/标题. 为共享库创建test可执行文件. 问题 共享库MYLIB.so似乎编译了罚款. (没问题). 链接中的错误: ./libMYLIB.so: undefined reference to __cudaRegisterLinkedBinary_39_tmpxft_000018cf_00000000_6_MYLIB_cpp1_ii_74c599a1 简化的makefile: libMYlib.so : MYLIB.o g++ -shared -Wl,-soname,libMYLIB.so -o libMYLIB.so MYLIB.o -L/the/cuda/lib/dir -lcudart MYLIB.o : MYLIB.cu MYLIB.h nvcc -m64 -arch=sm_20 -dc -Xcompiler '-fPI
158 2023-08-31
编程技术问答社区
在使用nvcc CUDA编译器时,有哪些可能的原因会导致分段故障?
我有一个CUDA类,我们称其为A,在标题文件中定义.我编写了一个测试内核,该内核创建了类A的实例,该实例可以编译并产生预期的结果. 此外,我还有我的主要CUDA内核,它也可以很好地编译并产生预期的结果.但是,当我将代码添加到主内核中以实例化类A的实例时,NVCC编译器会在分段故障的情况下失败. 更新: 澄清,分割故障在编译过程中发生,而不是在运行内核时发生.我要编译的行是: `nvcc --cubin -arch compute_20 -code sm_20 -I --keep kernel.cu` 其中是我本地路径中包含一些实用程序标头文件的路径. 我的问题是,在花费大量时间隔离一个最小的例子之前,表现出这种行为(由于代码群相对较大而不是微不足道),有人遇到了类似的问题吗?如果内核太长或使用太多寄存器,NVCC编译器可能会失败并死亡? 如果寄存器计数之类的问题可能会以这种方式影响编译
34 2023-08-25
编程技术问答社区
安装cudatoolkit时缺少Nvcc?
我沿着Pytorch安装了 的cuda conda install pytorch torchvision cudatoolkit=10.0 -c pytorch 但是,似乎没有随身携带NVCC.如果我想使用例如nvcc -V,我会发现找不到NVCC的错误,并且我应该使用sudo apt install nvidia-cuda-toolkit.安装它 我可以这样做吗(我不想尝试,然后发现它不起作用/使整个CUDA设置弄乱). 这是错误还是预期的行为? 我正在使用Ubuntu 18.04,并具有CUDA 10.2 解决方案 使用Pytorch 1.4安装10.1的cudatoolkit时遇到了这个问题. 有一个conda-forge软件包https://anaconda.org/conda-forge/cudatoolkit-dev.安装此后,nvcc以及其他CUDA库将在/home/li/anaconda3/envs//pkgs/cuda-
10 2023-07-16
编程技术问答社区
CUDA和nvcc:使用预处理器在浮点数或双数之间进行选择
问题: 拥有一个.h,我想将真实定义为C/C ++的编译或具有计算能力> = 1.3的CUDA.如果用计算能力 几个小时后,我来了(这不起作用) # if defined(__CUDACC__) # warning * making definitions for cuda # if defined(__CUDA_ARCH__) # warning __CUDA_ARCH__ is defined # else # warning __CUDA_ARCH__ is NOT defined # endif # if (__CUDA_ARCH__ >= 130) # define real double # warning using double in cuda # e
8 2023-06-14
编程技术问答社区
使用nvcc编译器的-G参数进行编译时,GPU性能不佳
我正在进行一些测试,我意识到编译时使用-g参数比没有它的表现不好. 我已经检查了Nvidia的文档: --device-debug (-G) Generate debug information for device code. ,但这并没有帮助我知道为什么给我如此糟糕的表现的原因. 它在哪里生成此调试信息?何时?这种不良表现的原因是什么? 解决方案 使用-G switch 禁用大多数编译器优化 nvcc可能会在设备代码中使用.由于这个原因,最终的代码通常比未使用-G编译的代码慢. . 通过在每种情况下通过cuobjdump -sass myexecutable运行可执行文件并查看生成的设备代码,这很容易看到.在非-G情况下,您通常会看到设备代码较少,并且您也可以看到特定优化的差异. 这样做的原因之一是,高度优化的设备代码可以消除源代码和实际源代码变量的实际行.这可能会使调试代码非常困难.因此,
8 2023-05-23
编程技术问答社区