2010-08-16 100 views
1

剛剛瞭解到許多cpp功能(包括stl向量類)在cu文件中不起作用。即使在主機代碼中使用它們也是如此。CUDA和STL向量

因爲我不得不使用它使用STL我不能編譯它調用內核我CU文件中的C++類。 (我沒有在CU文件中使用任何STL的功能,但我認爲,包括是問題。)

我試圖通過使用cmake與

cuda_add_executable(
Blah 
Blah.cu 
BlahKernel.cu 
HostCodeWithVector.cpp 
) 

打造這裏面顯然是行不通的。現在的問題出現了,如果可以用gcc而不是nvcc來構建HostCodeWithVector.cpp,並且它以某種方式連接它,

+0

是的,我知道推力,但我不想重寫現有的代碼。 – Nils 2010-08-16 13:38:08

回答

2

因爲__host__正是運行在您的CPU上,你可以使用任何編譯器(MSVC,GCC)編譯這個部分,然後用NVCC結果鏈接。所以你應該只在CU文件中留下GPU互操作,其他一切都放入CPP。

+0

好的..我怎麼能告訴這個cmake ..? – Nils 2010-08-16 14:17:59

+0

@Nils閱讀gcc和nvcc的文檔。使他們產生對象文件。然後從gcc獲取鏈接器並將它們鏈接在一起。 – Andrey 2010-08-16 14:38:13

+0

Thx for ur答案,問題是試圖構建64位,這仍然不能在Mac上與CUDA一起使用,而與STL不兼容。我認爲是正確的。 「所有的非CUDA C文件中使用匯編而成的CMake規定的標準 構建規則和CUDA文件被編譯爲對象使用NVCC和主機編譯器 文件。」說:http://cmake.org/cmake/help/cmake-2-8-docs.html – Nils 2010-08-16 14:46:24