2012-05-14 320 views
1

我想編譯mac上的CUDA代碼,但在Windows上使其可執行。cuda nvcc交叉編譯器

有沒有辦法建立一個NVCC CUDA交叉編譯器?

的問題是,我的桌面Windows將無法使用了一段時間,由於旅行,但我不要等待,直到我回來和編譯代碼要浪費時間。如果我必須等待,那麼調試代碼並確保編譯正確和喜歡的代碼是浪費時間。儘管如此,我的Mac沒有配備支持cuda的硬件。

+0

我使用CMake構建系統進行交叉編譯。你看過嗎?還沒有 – geek

+0

。是否與構建常規交叉編譯器相同? – mma1480

+0

Nvcc不是編譯器。它依賴主機編譯器來完成大部分編譯(包括大部分GPU代碼編譯)。爲了編譯窗口,需要visual studio編譯器,並且要求是不可協商的。您可以在沒有NVIDIA GPU的情況下在OS X上安裝工具鏈。您將無法運行OS X可執行文件的結果。 – talonmies

回答

6

簡短的回答,沒有,這是不可能的。

這是一個普遍的誤解,但nvcc其實不是一個編譯器。它是一個編譯器驅動程序,它主要依靠主機C++編譯器來控制編譯主機和設備代碼。要編譯CUDA for Windows,您必須使用Microsoft C++編譯器。該編譯器不能在Linux或OS X上運行,因此除非在Windows主機上進行編譯(例如,可以使用32/64位交叉編譯),否則無法跨編譯到Windows目標。因爲後端不同(Linux是一個精靈平臺,OS X是一個mach平臺),所以即使在OS X和Linux之間進行交叉編譯也是不可行的不可能。

你有兩個選擇,如果OS X平臺上編譯目標

  1. 安裝OS X工具包。即使你的硬件沒有兼容的GPU,你仍然可以安裝工具包和編譯代碼。
  2. 安裝虛擬Windows安裝(或物理Boot Camp安裝)內的Windows工具包和Visual Studio,並在Mac上編譯Windows內部代碼。同樣,你不需要NVIDIA兼容硬件來做到這一點。

如果你想沒有一個CUDA GPU上運行的代碼,有你可以調查一個非商業(GPU Ocelot)和商業(PGI CUDA-x86)選項。

+0

我正在考慮使用bootcamp來獲取windows然後編譯它,但我雖然需要編譯硬件。但如果我在沒有硬件的情況下編譯它,它是否仍然可以在另一臺機器上運行它,還是需要重新編譯?謝謝 – mma1480

+0

如果在兩臺機器上使用相同的主機和設備體系結構,CUDA工具包和Microsoft運行時版本,我不明白爲什麼它不起作用,儘管我沒有這方面的經驗。 – talonmies