簡體   English   中英

將Cuda集成到C ++文件中

[英]cuda integration in a C++ file

我已經閱讀了所有相關主題,包括將.cu文件轉換為其他人之前編寫的.cpp文件,但是沒有任何幫助。

我在項目的C ++文件中包含文件時遇到問題。 我的項目結構如下: main.cpp compute.h compute.cpp kernel.cu

main.cpp具有我項目的main()入口。 幾個_host_ cuda函數,它包含compute.h因為它調用了compute.h中定義的某些函數。

compute.cpp僅具有C++函數,使用sum<<<1,numbloc>>>(list of parameters)函數,該函數引用kernel.cu設備代碼。 然后,我將kernel.cu包含在compute.cpp標頭中。 但是在使用cuda 5.0在我的Visual Studio 2008上編譯時出現問題,並且錯誤顯示

error C3861:'_syncthreads':identifier not found

但是當我寫projetc與單一main.cu含有main(){}和我_host_功能,它建立沒有錯誤。

我可以保持如上所述的項目結構,並在沒有錯誤的情況下運行我的項目嗎? 請幫忙!

默認情況下,.cpp文件不能包含非常規C / C ++語法的任何內容。 cuda內核調用kernel<<<...>>>()不能位於.cpp文件中,除非您將特殊開關傳遞給nvcc。

因此,通常的建議是重命名以這種方式使用CUDA的任何文件,使其具有.cu擴展名而不是.cpp擴展名,並使用nvcc編譯該文件。

對於任何特定於CUDA的語法也是如此。 (請注意,這並不意味着調用CUDA API,例如cudaMalloc ,如果您包含cuda_runtime.h並正確鏈接,則可以在普通的.cpp文件中進行調用。)因此,如果實際上您的__host__函數裝飾器是main.cpp,也將不起作用(使用默認編譯器設置)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM