皮库达 "nvcc fatal : Cannot find compiler 'cl.exe' in PATH"
pycuda "nvcc fatal : Cannot find compiler 'cl.exe' in PATH"
OS:win10
VS: visual stadio2015 64bit
CUDA: CUDA8.0
python: python2.7.12 64 位 (pycuda)
我关注了这个网站,
https://documen.tician.de/pycuda/tutorial.html#getting-started
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
import numpy
a = numpy.random.randn(4,4)
a = a.astype(numpy.float32)
a_gpu = cuda.mem_alloc(a.nbytes)
cuda.memcpy_htod(a_gpu,a)#transfer the data to the GPU
#executing a kernel
#function: write code to double each entry in a_gpu.
#we write the corresponding CUDA C code, and feed it into the constructor of pycuda.compiler.SourceModule
mod = SourceModule("""
__global__ void doublify(float *a)
{
int idx = threadIdx.x + threadIdx.y*4;
a[idx] *= 2;
}
""")
#If there aren’t any errors, the code is now compiled and loaded onto the device. We find a reference to our pycuda.driver.Function and call it, specifying a_gpu as the argument, and a block size of 4x4:
func = mod.get_function("doublify")
func(a_gpu, block=(4,4,1))
#Finally, we fetch the data back from the GPU and display it, together with the original a:
a_doubled = numpy.empty_like(a)
cuda.memcpy_dtoh(a_doubled, a_gpu)
print a_doubled
print a
但是,失败并出现错误:
Traceback (most recent call last):
File "G:/myworkspace/python2.7/cuda/test.py", line 24, in <module>
""")
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 265, in __init__
arch, code, cache_dir, include_dirs)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 255, in compile
return compile_plain(source, options, keep, nvcc, cache_dir, target)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 137, in compile_plain
stderr=stderr.decode("utf-8", "replace"))
CompileError: nvcc compilation of c:\users\gl\appdata\local\temp\tmp8poxqp\kernel.cu failed
[command: nvcc --cubin -arch sm_50 -m64 -Id:\python2.7\lib\site-packages\pycuda\cuda kernel.cu]
[stdout:
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
]
有人说要将 cl.exe 的目录添加到环境中。我做了,错误是一样的。我是 CUDA 的新手。我该如何解决这个问题?有什么建议吗?
我按照@citizenSNIPS 的建议做了:
添加路径到cl.exe,D:\vs2015\VC\bin.
INCLUDE = C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt.
LIB = C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\ucrt\x64(我找不到 C:\Program Files (x86) \Windows Kits\Lib.0.10240.0\um\x64 在我的电脑中)。
出现如下新错误:
raceback (most recent call last):
File "G:\myworkspace\python2.7\cuda\test.py", line 24, in <module>
""")
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 265, in __init__
arch, code, cache_dir, include_dirs)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 255, in compile
return compile_plain(source, options, keep, nvcc, cache_dir, target)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 147, in compile_plain
+ (stdout+stderr).decode("utf-8", "replace"), stacklevel=4)
File "D:\python2.7\lib\idlelib\run.py", line 36, in idle_showwarning_subproc
message, category, filename, lineno, line))
File "D:\python2.7\lib\idlelib\PyShell.py", line 65, in idle_formatwarning
s += "%s: %s\n" % (category.__name__, message)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 147-168: ordinal not in range(128)
现在我正在解决这个问题,也许是因为我没有添加 C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x64?
您需要指定 cl.exe 的路径。
- 转到 "Control Panel\All Control Panel Items\System" 和 select "advanced system settings"
- select 'Environment Valiables'.
在系统变量下,找到PATH,点击编辑,将路径添加到cl.exe。应该是:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\
确保在安装 visual studio 时,select 已安装 c++
编译器。它不是默认安装的。如果你没有,重新运行你的visual studio安装程序和select安装c++编译器。
完成后,您可能需要添加以下系统变量
INCLUDE = C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt
LIB = C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x64
C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\ucrt\x64
查看此线程
我在 .py 中添加这些代码
import sys
reload(sys)
sys.setdefaultencoding('utf8')
和运行,没有错误
您也可以在 python 文件中添加 cl.exe
的路径。缺点是如果您的 MSVS 版本发生变化,您将不得不更改它。
示例:
import os
if (os.system("cl.exe")):
os.environ['PATH'] += ';'+r"C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.11.25503\bin\HostX64\x64"
if (os.system("cl.exe")):
raise RuntimeError("cl.exe still not found, path probably incorrect")
编辑:您需要 运行 与 CUDA 兼容的 MSVS 版本。 IE。 CUDA v9.0 不支持 MSVS2017,CUDA v9.1 只支持 15.4 版本,不支持更高版本。通过 Visual Studio.
的本机工具命令提示符 运行ning nvcc.exe
尝试它是否有效
OS:win10
VS: visual stadio2015 64bit
CUDA: CUDA8.0
python: python2.7.12 64 位 (pycuda)
我关注了这个网站, https://documen.tician.de/pycuda/tutorial.html#getting-started
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
import numpy
a = numpy.random.randn(4,4)
a = a.astype(numpy.float32)
a_gpu = cuda.mem_alloc(a.nbytes)
cuda.memcpy_htod(a_gpu,a)#transfer the data to the GPU
#executing a kernel
#function: write code to double each entry in a_gpu.
#we write the corresponding CUDA C code, and feed it into the constructor of pycuda.compiler.SourceModule
mod = SourceModule("""
__global__ void doublify(float *a)
{
int idx = threadIdx.x + threadIdx.y*4;
a[idx] *= 2;
}
""")
#If there aren’t any errors, the code is now compiled and loaded onto the device. We find a reference to our pycuda.driver.Function and call it, specifying a_gpu as the argument, and a block size of 4x4:
func = mod.get_function("doublify")
func(a_gpu, block=(4,4,1))
#Finally, we fetch the data back from the GPU and display it, together with the original a:
a_doubled = numpy.empty_like(a)
cuda.memcpy_dtoh(a_doubled, a_gpu)
print a_doubled
print a
但是,失败并出现错误:
Traceback (most recent call last):
File "G:/myworkspace/python2.7/cuda/test.py", line 24, in <module>
""")
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 265, in __init__
arch, code, cache_dir, include_dirs)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 255, in compile
return compile_plain(source, options, keep, nvcc, cache_dir, target)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 137, in compile_plain
stderr=stderr.decode("utf-8", "replace"))
CompileError: nvcc compilation of c:\users\gl\appdata\local\temp\tmp8poxqp\kernel.cu failed
[command: nvcc --cubin -arch sm_50 -m64 -Id:\python2.7\lib\site-packages\pycuda\cuda kernel.cu]
[stdout:
nvcc fatal : Cannot find compiler 'cl.exe' in PATH
]
有人说要将 cl.exe 的目录添加到环境中。我做了,错误是一样的。我是 CUDA 的新手。我该如何解决这个问题?有什么建议吗?
我按照@citizenSNIPS 的建议做了:
添加路径到cl.exe,D:\vs2015\VC\bin.
INCLUDE = C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt.
LIB = C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\ucrt\x64(我找不到 C:\Program Files (x86) \Windows Kits\Lib.0.10240.0\um\x64 在我的电脑中)。
出现如下新错误:
raceback (most recent call last):
File "G:\myworkspace\python2.7\cuda\test.py", line 24, in <module>
""")
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 265, in __init__
arch, code, cache_dir, include_dirs)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 255, in compile
return compile_plain(source, options, keep, nvcc, cache_dir, target)
File "D:\python2.7\lib\site-packages\pycuda\compiler.py", line 147, in compile_plain
+ (stdout+stderr).decode("utf-8", "replace"), stacklevel=4)
File "D:\python2.7\lib\idlelib\run.py", line 36, in idle_showwarning_subproc
message, category, filename, lineno, line))
File "D:\python2.7\lib\idlelib\PyShell.py", line 65, in idle_formatwarning
s += "%s: %s\n" % (category.__name__, message)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 147-168: ordinal not in range(128)
现在我正在解决这个问题,也许是因为我没有添加 C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x64?
您需要指定 cl.exe 的路径。
- 转到 "Control Panel\All Control Panel Items\System" 和 select "advanced system settings"
- select 'Environment Valiables'.
在系统变量下,找到PATH,点击编辑,将路径添加到cl.exe。应该是:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\
确保在安装 visual studio 时,select 已安装 c++
编译器。它不是默认安装的。如果你没有,重新运行你的visual studio安装程序和select安装c++编译器。
完成后,您可能需要添加以下系统变量
INCLUDE = C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt
LIB = C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\um\x64
C:\Program Files (x86)\Windows Kits\Lib.0.10240.0\ucrt\x64
查看此线程
我在 .py 中添加这些代码
import sys
reload(sys)
sys.setdefaultencoding('utf8')
和运行,没有错误
您也可以在 python 文件中添加 cl.exe
的路径。缺点是如果您的 MSVS 版本发生变化,您将不得不更改它。
示例:
import os
if (os.system("cl.exe")):
os.environ['PATH'] += ';'+r"C:\Program Files (x86)\Microsoft Visual Studio17\Community\VC\Tools\MSVC.11.25503\bin\HostX64\x64"
if (os.system("cl.exe")):
raise RuntimeError("cl.exe still not found, path probably incorrect")
编辑:您需要 运行 与 CUDA 兼容的 MSVS 版本。 IE。 CUDA v9.0 不支持 MSVS2017,CUDA v9.1 只支持 15.4 版本,不支持更高版本。通过 Visual Studio.
的本机工具命令提示符 运行ningnvcc.exe
尝试它是否有效