2011年9月19日 星期一

在 Linux 下執行 CUDA 時出現 /dev/nvidiactl 無法開啟之問題排除

平時執行 CUDA 程式時,都是以使用者的帳號進行編譯執行,然而遭遇某次異常停電後,安裝 GPGPU 的 Linux 主機在執行 CUDA 程式時,出現下列警告訊息:
  • could not open the device file /dev/nvidiactl (No such file or directory)
但是以 root 的身份去查詢,卻又發現 nvidiactl 確實存在,因此推測系統可能在異常關閉後, nvidiactl 的權限遭到更改,又或者是沒設定開機後CUDA自動啟動,於是以下將介紹該障礙排除的方法:

2011年9月2日 星期五

在 Linux 下直接使用 NVCC 編譯 CUDA SDK 程式

CUDA SDK 不僅提供使用者一些範例程式,使用者也可透過修改 template 範例來設計自己的程式。以往使用者在 Linux 下,都是透過該範例提供的 Makefile 進行編譯,並載入 CUDA SDK 提供的 common.mk 來設定相關編譯參數。然而使用者有時會依需求來決定編譯參數,但在不了解 common.mk 的參數設定之情況下,很難修改其內容。

關於修改 Makefile 來設定 Compute Capability 版本,可參考此篇:

於是,本篇將提供在 CUDA SDK 下直接使用 NVCC 編譯:

在 Linux 下修改 CUDA SDK Makefile 達成 Compute Capability 設定

 一般 CUDA 設計教學,都會要求初學者直接修改 CUDA SDK 的 template 範例。目前我使用的 Device 為 NVIDIA Tesla C1060 ,可支援 Compute Capability 1.3 以下的運算,但若直接使用 make 的指令, Compiler 會預設使用 Compute Capability 1.0 來運行。

然而網路上常看到的設定方式,都是在 Window 下,透過 Microsoft Visual 圖形化介面設定; Linux 上,則都是直接設定 NVCC 編譯器的參數,鮮少有 SDK 範例的修改。因此使用者若想使用 SDK 的範例,並指定 Compute Capability 的版本,可將欲編譯的程式之 Makefile 的主函數描述進行修改: