2013-05-01 42 views
2

我想執行一些CUDA代碼,碰巧有一些 NVML庫函數,如nvmlSystemGetDriverVersion。 但是,當我嘗試編譯代碼時,它說沒有找到nvml.h。 我應該如何在我的系統上安裝NVML,因爲nvml.h好像不存在 ?NVML頭文件丟失

回答

3

谷歌搜索「nvidia nvml」返回this作爲第一個鏈接。此頁面包含API文檔的鏈接。

在該頁面中,如果你點擊特斯拉部署工具包link,然後你可以找到適合你的操作系統(Windows或Linux)和CUDA版本(CUDA 5.0 CUDA 4.2)

特斯拉的下載鏈接部署工具包包含您提到的頭文件(nvml.h)以及一些您可能需要鏈接的庫,以便使用NVML函數。

有一些樣本構建項目,包括Tesla Deployment Kit中的makefile,它應回答有關如何使用套件中的資產進行編譯和鏈接的任何問題。

編輯:有一個示例項目在.../tdk_3.xxxx/nvml /例如 有一個在這個例子項目目錄中的Makefile。 如果您檢查該makefile文件,你會看到在nvml庫鏈接編譯命令需要包含類似:

-L/path/to/nvml/lib64/ -lnvidia-ml 
+0

我從tdk_3.304.5/nvml /包括/ nvml.h複製的文件到 適當的包含路徑以及從tdk_3.304.5/nvml/lib和lib64到/ usr/local/lib和/ usr/local/lib64的lib文件。但是在編譯代碼的時候,我得到一個像/tmp/tmpxft_000030aa_00000000-14_gpupow.o這樣的錯誤:在函數'main'中: tmpxft_000030aa_00000000-3_gpupow.cudafe1.cpp :(.text + 0xc):未定義的對'nvmlInit'的引用 等等。你能說出是什麼問題嗎? – 2013-05-02 17:15:55

+0

是的,你在編譯命令中沒有鏈接nvml庫。查看TDK示例項目中的makefile以查看庫的調用和鏈接方式。 – 2013-05-02 17:20:08

+0

編輯了我的答案並提供了更多信息。 – 2013-05-02 17:26:47