1. 程式人生 > >CUDA並行程序設計 開發環境搭建與遠程調試

CUDA並行程序設計 開發環境搭建與遠程調試

not -m 每次 修改ns shell 參考 搭建 安裝ubuntu 筆記本

課題需要用到GPU加速。目前使用的臺式電腦只有核心顯卡,而實驗室有一臺服務器裝有NVIDIA GTX980獨顯。因此,想搭建一個CUDA的開發環境,來實現在臺式機上面開發cuda程序,程序在服務器而不必每次都跑去服務器上面。
目前找到的遠程調試方案有三個:

  1. Windows平臺下,通過Nsight Monitor連接 帶有NVIDIA顯卡的Windows筆記本電腦。
  2. Linux平臺下,通過Nsight Eclipse Edition 連接Linux服務器
  3. 通過Xshell連接到服務器(操作系統為CentOS 7),用Xmanager啟動Nsight Eclipse Edition圖形界面。由於開發時可能會改動服務器環境參數和配置導致其他程序出錯,並且我沒有服務器root權限,因此盡量不在服務器上進行開發。

一、Windows平臺 Nsight Monitor方案

客戶端:臺式機,core I3-6100,核心顯卡,4G內存, SSD,Windows 7 64bit sp1
服務器端:筆記本電腦,core I5-450m,GT310m, 4G內存, SSD, Windows 7 64bit sp1

  1. 安裝Visual studio 2012
    服務器最好也要安裝。不安裝Nsight VS Edition好像安裝不上(未證實)

  2. 安裝顯卡驅動
    我的客戶端因無NVIDIA顯卡,因此只在服務器端安裝驅動。

  3. 在客戶端與服務器安裝cuda toolkit (Win 64bit)
    進入NVIDIA開發者網站https://developer.nvidia.com/cuda-toolkit下載相應的CUDA Toolkit。註意客戶端與服務器版本最好相同。NVIDIA網站最近因“網站尚未備案”無法訪問,可將http改為https。我下載安裝版本為cuda toolkit 8.0 對應 Nsight Monitor 5.4、Nsight Visual Studio Edition 5.4。

  4. 參考CUDA遠程調試
    設置客戶端與服務器的Nsight Monitor,在客戶端添加Trusted Machines ip地址;關閉防火墻;建立CUDA工程,修改Nsight User Properties,然後編譯調試

遇到的坑有三個:

  • 如果客戶端與服務器Nsight Monitor版本不一致,NSight會報錯無法運行
  • 如果服務器 顯卡驅動版本太低,NSight會報錯無法運行。我筆記本上的GT310m不支持更高版本的驅動,只好放棄了windows平臺方案
  • 采用windows遠程桌面連接服務器端時,NSight會報錯無法運行。必須關閉遠程桌面,或者采用realVNC進行遠程連接,或將顯卡從WDDM模式改為TCC模式(需要Tesla架構以上)
    https://zhidao.baidu.com/question/1370700257819372179.html
    https://blog.csdn.net/ichocolatekapa/article/details/18960417

二、Linux平臺 Nsight Eclipse Edition方案

客戶端:虛擬機,核心顯卡, Ubuntu 16.04.4 LTS
服務器端:GTX980, CentOS 7

  1. 安裝虛擬機與linux
    臺式機裝的是Windows系統,因此要在虛擬機上安裝Linux系統。
    我從清華大學開源鏡像站下載VirtualBox與Ubuntu 16.04.4 LTS 鏡像安裝文件
    技術分享圖片.高校與教育網用戶還可以訪問
    浙大開源鏡像站http://mirrors.zju.edu.cn/.
    其他國內用戶可訪問
    阿裏雲開源鏡像站https://opsx.alibaba.com/mirror
    網易開源鏡像站http://mirrors.163.com/

    virtualbox 安裝 ubuntu系統參考 基於VirtualBox虛擬機安裝Ubuntu圖文教程
  2. Linux系統下安裝NVIDIA 顯卡驅動與CUDA toolkit
    參考我之前的博客http://www.cnblogs.com/kaikaikai/p/8343816.html。 在NVIDIA開發者網站https://developer.nvidia.com/cuda-toolkit下載對應版本的CUDA toolkit Linux run文件並執行,按照安裝腳本配置路徑即可。最好顯卡驅動和CUDA分開安裝

    註意客戶端上由於沒有NVIDIA的顯卡,不需要(也無法)安裝NVIDIA顯卡驅動。要想簡化配置,客戶端的CUDA版本最好與服務器相同,toolkit安裝位置及Samples的安裝位置最好也相同。如不同需在Nsight中添加路徑。我安裝版本為cuda 7.0

  3. 客戶端上重裝gcc與g++,使其版本號與服務器相同
    參考Ubuntu如何重新安裝g++編譯器。通過gcc -v可查看gcc版本。若安裝完成後找不到gcc(g++),在/usr/bin/中添加鏈接
    ln -s gcc-* gcc
    ln -s g++-* g++
    其中gcc-*為所安裝gcc版本,如我安裝的為gcc 4.8,g++ 4.8
  4. 在服務器防火墻添加2345端口,或關閉防火墻
  5. 參考NSight Eclipse Edition 下創建CUDA程序並執行遠程編譯及調試 建立CUDA工程,然後編譯調試。

Note

  • NSIGHT ECLIPSE EDITION Getting Started Guide中列出了三種開發模式:(1)、本機編輯生成調試 (2)、本機編輯生成、遠程調試 (3)、本機編輯代碼、遠程生成調試。
    技術分享圖片
    若采用模式(3)需添加遠程機(服務器)的相關路徑,否則會報錯,如:

    error: helper_functions.h: No such file or directory

    如果第2步中客戶端服務器安裝位置相同,通常不需要額外添加路徑

  • 采用模式(3)時,若編譯生成時出現報錯
    技術分享圖片
    需將客戶端與服務器的user.name 設置為同一個名字,user.email為同一個地址。
    git config --global user.name <anyname>
    git config --global user.email <anyemail>

  • 遠程Debug連接超時,需打開服務器2345端口

CUDA並行程序設計 開發環境搭建與遠程調試