首页 文章

导入Theano时加载编译器库时出错:致命错误C1083

提问于
浏览
0

我想在我的Python环境中使用Theano和我的GPU几天 . 导入theano时,我收到此错误:

d:\anaconda2\include\pyconfig.h(239) : fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory

我试图在PYTHONPATH,PATH和.theanorc.txt中包含“D:\ Anaconda2 \ MinGW \ x86_64-w64-mingw32 \ include”(此文件夹包含“pyconfig.h”),并显示相同的错误消息 .

你有什么想法将anaconda / cuda / nvcc连接到Theano的编译器吗?

这是我的配置:

  • 操作系统:Windows 7

  • GPU:GeForce GTX 950

  • cl.exe:D:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin

  • nvcc.exe:C:\ Program Files \ NVIDIA GPU Computing Toolkit \ CUDA \ v8.0 \ bin

  • Python IDE:来自Anaconda 2的Spyder,在Python 2中 .

  • Theano 0.8.2

我可以用CPU“导入theano”,但我想用GPU进行计算 .

输入“import theano”(使用device = gpu)后,我可以看到一个控制台窗口在显示错误之前启动“nvcc.exe” .

我使用Visual Studio 2012测试了CUDA并且它正在工作,例如“bilateralFilter”在Visual Studio中工作而没有错误:

Found 1 CUDA Capable device(s) supporting CUDA
Device 0: "GeForce GTX 950"
CUDA Runtime Version: 8.0
CUDA Compute Capability: 5.2
...
Running Standard Demonstration with GLUT loop...
  • 这是我的theanorc.txt文件(无论有没有[nvcc]和[cuda]都会出现同样的错误)
[global]
device = gpu
floatX = float32

[cuda]
root = -LC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

[nvcc]
flags = -LD:\Anaconda\libs
fastmath = True
compiler-bindir = -LD:\Anaconda2\MinGW\x86_64-w64-mingw32\include
  • 这是我的路径
D:\Anaconda2\MinGW\x86_64-w64-mingw32\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\libnvvp
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
D:\Anaconda2
D:\Anaconda2\Scripts
D:\Anaconda2\Library\bin
C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\
  • 这是我的PYTHONPATH
D:\Anaconda2\MinGW\x86_64-w64-mingw32\include
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
  • 这是在Spyder中输入“import theano”后的完整错误消息(在anorc.txt中使用device = gpu):
1 #define _CUDA_NDARRAY_C
2 
3 #include <Python.h>
4 #include <structmember.h>
5 #include "theano_mod_helper.h"
6 
7 #include <numpy/arrayobject.h>
8 #include <iostream>
...
5358 /*
5359   Local Variables:
5360   mode:c++
5361   c-basic-offset:4
5362   c-file-style:"stroustrup"
5363   indent-tabs-mode:nil
5364   fill-column:79
5365   End:
5366 */
5367 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=79 :
5368 
===============================
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(849) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(1787) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(2637) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(3492) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(4431) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(5345) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(6252) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(7142) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\math_functions.h(7956) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\device_functions.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\device_functions.h(774) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\device_functions.h(1618) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\device_double_functions.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\sm_20_intrinsics.h : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
c:\program files\nvidia gpu computing toolkit\cuda\v8.0\include\sm_20_intrinsics.h(943) : warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss
d:\anaconda2\include\pyconfig.h(239) : fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory
ERROR (theano.sandbox.cuda): Failed to compile cuda_ndarray.cu: ('nvcc return status', 2, 'for cmd', 'nvcc -shared -O3 -LD:\\Anaconda\\libs -use_fast_math -Xlinker /DEBUG -D HAVE_ROUND -m64 -Xcompiler -DCUDA_NDARRAY_CUH=c72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD -ID:\\Anaconda2\\lib\\site-packages\\theano\\sandbox\\cuda -ID:\\Anaconda2\\lib\\site-packages\\numpy\\core\\include -ID:\\Anaconda2\\include -ID:\\Anaconda2\\lib\\site-packages\\theano\\gof -o C:\\Users\\Administrator\\AppData\\Local\\Theano\\compiledir_Windows-7-6.1.7601-SP1-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-2.7.13-64\\cuda_ndarray\\cuda_ndarray.pyd mod.cu -LD:\\Anaconda2\\libs -LD:\\Anaconda2 -lcublas -lpython27 -lcudart')
WARNING (theano.sandbox.cuda): CUDA is installed, but device gpu is not available  (error: cuda unavailable)
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
mod.cu

['nvcc', '-shared', '-O3', '-LD:\\Anaconda\\libs', '-use_fast_math', '-Xlinker', '/DEBUG', '-D HAVE_ROUND', '-m64', '-Xcompiler', '-DCUDA_NDARRAY_CUH=c72d035fdf91890f3b36710688069b2e,-DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION,/Zi,/MD', '-ID:\\Anaconda2\\lib\\site-packages\\theano\\sandbox\\cuda', '-ID:\\Anaconda2\\lib\\site-packages\\numpy\\core\\include', '-ID:\\Anaconda2\\include', '-ID:\\Anaconda2\\lib\\site-packages\\theano\\gof', '-o', 'C:\\Users\\Administrator\\AppData\\Local\\Theano\\compiledir_Windows-7-6.1.7601-SP1-Intel64_Family_6_Model_60_Stepping_3_GenuineIntel-2.7.13-64\\cuda_ndarray\\cuda_ndarray.pyd', 'mod.cu', '-LD:\\Anaconda2\\libs', '-LD:\\Anaconda2', '-lcublas', '-lpython27', '-lcudart']

1 回答

  • 0

    我找到了解决问题的方法 .

    Short answer

    • 将C:\ Windows \ System32添加到PATH

    • 启动C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin \ amd64 \ vcvars64.bat

    结束 .

    有关信息,这是我目前的新PATH:

    C:\Windows\System32
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64
    D:\Anaconda2
    D:\Anaconda2\Scripts
    D:\Anaconda2\Library\bin
    

    这是我的PYTHONPATH:

    没有

    这是我的.theanorc.txt:

    [global]
    device=gpu
    floatx = float32
    

    Some details

    除了PATH,还需要配置Windows注册表,如本文所述:compilation error in visual studio linked with python26 . 它是通过启动vcvars64.bat来完成的

    我之前做过这个,但是我忘了注意到有消息出现了:

    ERROR: Cannot determine the location of the VS Common Tools folder.
    

    根据https://social.msdn.microsoft.com/Forums/en-US/78703f6b-f610-456c-b770-76a12be3e1ae/error-cannot-determine-the-location-of-the-vs-common-tools-folder?forum=vssetup,解决方案是将C:\ Windows \ System32添加到PATH .

相关问题