1. 程式人生 > >pycuda的安裝和錯誤解決(含boost安裝編譯的詳細過程)

pycuda的安裝和錯誤解決(含boost安裝編譯的詳細過程)


需要準備:
1.pytools庫安裝PyCUDA還需要pytools庫,pytools庫需要six,appdirs,decorator這三個庫,可以通過easy_install進行安裝.
這裡提供一個地址,包含很多包,不過現在都是whl格式的,可以通過pip指令進行安裝
http://www.lfd.uci.edu/~gohlke/pythonlibs
2.VS 20123.boost庫
下載地址:http://www.boost.org
比較難安裝,需要進行編譯,具體的過程參考後面給出的連結。
我下載的是boost_1_52
4.cuda
下載地址:https://developer.nvidia.com/cuda-downloads
(建議下載最新版本 7.0)
5.Pycuda:
下載地址: https://pypi.python.org/pypi/pycuda
我下載的是pycuda-2014.1

安裝過程:
建議參考PyCuda主頁上提供的安裝Document(Installing PyCuda on Windows,以下簡稱IPW):http://wiki.tiker.net/PyCuda/Installation/Windows
我的安裝過程基本符合以上的文件步驟


python和pytools,VS2012的安裝比較簡單,就不再贅述了
uda安裝完之後一定要檢查是否安裝成功,cuda的安裝網上也有很多參考,也可以參考在下面我給出的連結


1. Boost庫的安裝編譯:
下載之後需要自己編譯
(1)解壓
(2)獲取bjam
執行根目錄下的bootstrap.bat,然後會在根目錄生成bjam.exe和b2.exe
(3)編譯需要的庫
對於安裝pycuda來說,編譯Boost Python, Boost DateTime, and BoostThread就足夠了
編譯命令:我使用的是bjam --toolset=msvc-11.0 --with-date_time --with-thread --with-python(想要檢視指令的含義請參考下面給出的參考連結boost部分的第二篇文章
編譯完成之後,可以在stage資料夾下查看了


2. pycuda的安裝:
通過pip 進行安裝的不行,import pycuda.driver會提示錯誤,driver模組應該是編譯之後產生的,這樣通過pip進行安裝的話是不可以的
按照以下步驟進行安裝:
(1)解壓
(2)執行根目錄下的configure,生成siteconf.py
(3)編輯siteconf.py,以我的為例,我也是參考IPW進行的修改
 

	BOOST_INC_DIR = ['F:\\Install\\boost_1_52_0'] 
	BOOST_LIB_DIR = ['F:\\Install\\boost_1_52_0\\stage\\lib']
	BOOST_PYTHON_LIBNAME = ['libboost_python-vc110-mt-1_52']
	BOOST_THREAD_LIBNAME = ['libboost_python-vc110-mt-1_52']
	CUDA_ROOT = 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.0'
	CUDADRV_LIB_DIR = ['C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.0\\lib\\x64']
	CUDADRV_LIBNAME = ['cuda']
	CXXFLAGS = ['/EHsc']
	LDFLAGS = ['/FORCE']

以上各路徑根據自己的實際情況修改就行了
(4)在cmd輸入命令,進行安裝
python setup.py install

完成以上步驟之後,就可以測試pycuda是否安裝成功了,執行pycuda原始檔裡examples裡的demo看是否能夠得到正確結果。

一些問題和錯誤:

由於安裝的時候出現了很多問題,加上沒有時間進行整理,所以現在只能大概回憶起部分錯誤:
(1)缺少VCFORPython27
下載安裝即可
(2)之前我安裝的是cuda6.5,然後在編譯python中的cuda程式時出現錯誤:nvcc -arch sm_52 gives error “Value 'sm_52' is not defined for option 'gpu-architecture'”
反正在compiler檔案下修改arch,死活都是sm_52。
估計是卡的計算能力cuda6.5版本過低不支援,所以重新安裝了cuda 7.0
(3)安裝cuda 7.0後,samples沒有編譯,自行編譯就行。另外就是注意把pycuda的siteconf.py進行修改重新進行安裝。
     另外在重新安裝之後,好像驅動出了問題,在執行pycuda的demo時提示:no device,重新安裝了驅動,在samples編譯完成之後就可以了。
(4)編碼問題,CUDA編譯器會輸出警告
 在python的安裝目錄下找到pycuda包,在compiler.py檔案裡找到
warn("The CUDA compiler succeeded, but said the following:\n"
                + (stdout+stderr).decode("utf-8", "replace"), stacklevel=4)

     註釋掉即可;

 或者在檔案前面加上# -*- coding: utf-8 -*-

     
參考資料:
(關於cuda安裝)
[1] http://www.cnblogs.com/xing901022/archive/2013/08/09/3248469.html(手把手教你cuda5.5與VS2010的編譯環境搭建)


(關於boost編譯)
[1] http://blog.csdn.net/wanglang1000/article/details/34101121 (編譯Boost庫 vs2012 + 1.54.0 )

[2] http://www.cnblogs.com/wondering/archive/2009/05/21/boost_setup.html(【原】Boost下載安裝編譯配置使用指南(含Windows、Linux以及ARM Linux))