2013-11-25 101 views
11

僅使用NVIDIA CUDA Toolkit,是否可以在同一節點上編譯CUDA程序而無需具備支持CUDA的設備?我可以在沒有cuda設備的情況下編譯cuda程序嗎

+6

是的。 'nvcc'編譯器驅動程序與設備的物理存在無關,所以即使沒有支持CUDA的GPU,也可以進行編譯。遵循相同的基本原理,當節點託管不同體系結構的GPU時,可以爲體系結構編譯CUDA代碼。當然,在這兩種情況下,您將無法成功運行代碼。請記住,設備仿真已經有一段時間了,所以如果你沒有支持CUDA的設備,你可以嘗試gpuocelot(但我沒有任何經驗)。 – JackOLantern

+0

@RobertCrovella感謝您的澄清。我已將該評論轉換爲完整答案。請隨時編輯它或添加評論,如果我失去了一些東西。 – JackOLantern

回答

13

您的問題的答案是YES。

nvcc編譯器驅動程序與設備的物理存在無關,所以即使沒有支持CUDA的GPU,您也可以編譯CUDA代碼。不過要注意的是,正如Robert Crovella所說,CUDA驅動程序庫libcuda.so(適用於Windows的cuda.lib)附帶了NVIDIA驅動程序,而不是CUDA工具包安裝程序。這意味着需要驅動程序API(其入口點前綴爲cu,參見CUDA C編程指南附錄H)的代碼需要強制安裝「最近」驅動程序,而不需要NVIDIA GPU,單獨運行驅動程序安裝程序與--help命令行切換。

遵循相同的基本原理,當節點託管不同體系結構的GPU時,可以爲體系結構編譯CUDA代碼。例如,您可以在託管GT 210(計算能力1.2)的計算機上編譯GeForce GT 540M(計算能力2.1)的代碼。

當然,在這兩種情況下(沒有GPU或不同架構的GPU),您將無法成功運行代碼。

對於CUDA的早期版本,可以在仿真模式下編譯代碼,並在CPU上運行編譯後的代碼,但設備仿真自一段時間以來不推薦使用。如果您沒有支持CUDA的設備,但想要運行CUDA代碼,則可以嘗試使用gpuocelot(但我對此沒有任何經驗)。

相關問題