Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pycuda“;nvcc致命:找不到编译器';cl.exe';“在路径中”;_Python_Cuda_Pycuda - Fatal编程技术网

Python pycuda“;nvcc致命:找不到编译器';cl.exe';“在路径中”;

Python pycuda“;nvcc致命:找不到编译器';cl.exe';“在路径中”;,python,cuda,pycuda,Python,Cuda,Pycuda,操作系统:win10 VS:2015视觉体育场64位 CUDA:CUDA8.0 python:python2.7.12 64位(pycuda) 我关注这个网站,, 但是,由于以下错误而失败: Traceback (most recent call last): File "G:/myworkspace/python2.7/cuda/test.py", line 24, in <module> """) File "D:\python2.7\lib\site-pack

操作系统:win10

VS:2015视觉体育场64位

CUDA:CUDA8.0

python:python2.7.12 64位(pycuda)

我关注这个网站,,

但是,由于以下错误而失败:

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

]
回溯(最近一次呼叫最后一次):
文件“G:/myworkspace/python2.7/cuda/test.py”,第24行,在
""")
文件“D:\python2.7\lib\site packages\pycuda\compiler.py”,第265行,在_init中__
arch、代码、缓存目录、包含目录)
文件“D:\python2.7\lib\site packages\pycuda\compiler.py”,第255行,在compile中
返回编译目录(源、选项、保留、nvcc、缓存目录、目标)
文件“D:\python2.7\lib\site packages\pycuda\compiler.py”,第137行,在compile\u plain中
stderr=stderr.解码(“utf-8”,“替换”))
编译器错误:c:\users\gl\appdata\local\temp\tmp8poxqp\kernel.cu的nvcc编译失败
[命令:nvcc--cubin-arch sm_50-m64-Id:\python2.7\lib\site packages\pycuda\cuda kernel.cu]
[stdout:
nvcc致命:在路径中找不到编译器“cl.exe”
]
有人说要将cl.exe的dir添加到环境中。我添加了,错误也是一样的。我是CUDA的新手。我如何解决这个问题?一些建议

我按照@citizensips的建议做了:

将路径添加到cl.exe,D:\vs2015\VC\bin

INCLUDE=C:\ProgramFiles(x86)\Windows工具包\10\INCLUDE\10.0.10240.0\ucrt

LIB=C:\Program Files(x86)\Windows Kits\10\LIB\10.0.10240.0\ucrt\x64(在我的计算机中找不到C:\Program Files(x86)\Windows Kits\10\LIB\10.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)
raceback(最近一次通话最后一次):
文件“G:\myworkspace\python2.7\cuda\test.py”,第24行,在
""")
文件“D:\python2.7\lib\site packages\pycuda\compiler.py”,第265行,在_init中__
arch、代码、缓存目录、包含目录)
文件“D:\python2.7\lib\site packages\pycuda\compiler.py”,第255行,在compile中
返回编译目录(源、选项、保留、nvcc、缓存目录、目标)
文件“D:\python2.7\lib\site packages\pycuda\compiler.py”,第147行,在compile\u plain中
+(标准输出+标准输出)。解码(“utf-8”,“替换”),堆栈级别=4)
文件“D:\python2.7\lib\idlelib\run.py”,第36行,在idle\u showwarning\u子程序中
消息、类别、文件名、行号、行号)
文件“D:\python2.7\lib\idlelib\PyShell.py”,第65行,idle\u格式
s+=%s:%s\n“%(类别名称,消息)
UnicodeEncodeError:“ascii”编解码器无法对147-168位置的字符进行编码:序号不在范围内(128)

现在我正在解决这个问题,可能是因为我没有添加C:\Program Files(x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64?

您需要指定cl.exe的路径

  • 转到“控制面板\所有控制面板项目\系统”,然后选择“高级系统设置”
  • 选择“环境有效性”
  • 在“系统变量”下,找到路径,单击“编辑”,然后将路径添加到cl.exe。应该是:

    C:\ProgramFiles(x86)\Microsoft Visual Studio 14.0\VC\bin\

  • 确保在安装visual Studio时选择安装
    c++
    编译器。默认情况下不安装它。如果没有,请重新运行VisualStudio安装程序,并选择安装C++编译器。 完成后,可能需要添加以下系统变量

    INCLUDE = C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
    LIB = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64
          C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64
    

    查看此线程

    我在.py中添加了这些代码

    import sys
    reload(sys)
    sys.setdefaultencoding('utf8')
    

    然后运行,没有错误

    您还可以在python文件中添加到
    cl.exe
    的路径。缺点是,如果您的MSV版本发生更改,您将不得不更改它

    例如:

    import os
    if (os.system("cl.exe")):
        os.environ['PATH'] += ';'+r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64"
    if (os.system("cl.exe")):
        raise RuntimeError("cl.exe still not found, path probably incorrect")
    

    编辑:您需要运行与CUDA兼容的MSVS版本。即CUDA v9.0不支持MSVS2017,CUDA v9.1仅支持版本15.4,不支持更高版本。通过在Visual Studio的本机工具命令提示符下运行
    nvcc.exe
    来尝试它是否有效。

    非常感谢。我做到了:1。将路径添加到cl.exe,D:\vs2015\VC\bin。2.INCLUDE=C:\ProgramFiles(x86)\Windows工具包\10\INCLUDE\10.0.10240.0\ucrt。3.LIB=C:\Program Files(x86)\Windows Kits\10\LIB\10.0.10240.0\ucrt\x64(在我的计算机中找不到C:\Program Files(x86)\Windows Kits\10\LIB\10.0.10240.0\um\x64)。出现新错误。现在新错误已解决,感谢您的帮助。您是如何解决此错误的?我也有同样的问题。Thx@Litwos遵循被接受的答案。我写下答案并接受自己。我也试过了,但仍然不起作用。我尝试了各种不同的VC(我有MSV和VC运行时)您是使用IDE运行代码还是从终端调用代码?我使用IDLE(python GUI)。对于python 3,重新加载已移动到importlib:
    从importlib导入重新加载
    然后
    重新加载(sys)
    ,utf8已经是Python3的默认值了。我试过了,但没有成功,仍然出现了错误
    import os
    if (os.system("cl.exe")):
        os.environ['PATH'] += ';'+r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64"
    if (os.system("cl.exe")):
        raise RuntimeError("cl.exe still not found, path probably incorrect")