CUDA學習 原創 包含C和 cu的工程實現!

2021-06-18 02:02:51 字數 1092 閱讀 8639

現有一純c的工程,想在裡面呼叫.cu檔案的函式。project裡面有乙個cppintegeration的例子,不過這個是在cpp裡面呼叫.cu裡面的函式,而且,這個工程在sdk裡面,很多標頭檔案,庫之類的直接引用,因此,可移植性很差。摸索了幾天,終於解決了c工程呼叫cu檔案的問題。一起分享一下~~~

新建兩個檔案,a.cu和a_kernel.cu,其中,a.cu作為呼叫的介面,a_kernel.cu裡面實現的功能函式。

然後,在a.cu-》右鍵-》屬性-》自定義生成步驟-》常規-》命令列,新增如下命令:

"$(cuda_bin_path)\nvcc.exe" -ccbin"$(vcinstalldir)bin" -i"$(nvsdkcuda_root)\common\inc"-i"$(cuda_inc_path)" -i.  --host-compilation c -g-c -m 32 -o "$(inputname).obj""$(inputdir)\$(inputname).cu"

注意,必須加上:--host-compilation,否則,提示,link : fatal errorlnk1561: 必須定義入口點。另外,必須把sdk和inc的路徑加進來,才能在a.cu中include"cutil.h"的這些標頭檔案。

並在開始a.cu頭部加上include。

注意:生成的.obj的路徑必須是:"$(inputname).obj",否則,會在編譯的時候提示,找不到f.obj。

對於a.cu裡面的函式f,需如下定義:

但是,在c檔案裡面引用它的時候,必須申明如下:

extern voidf(){}; 

//注意:如果加上"c"就會報錯:錯誤的字元。

cudart.lib cutil32.lib 

_cudaconfigurecall@32

等錯誤。

這樣,就可以在c檔案裡面呼叫 f()了。

問題解決了,可以進行下一步工作了!!!

ps:發現很多人都用blog記載技術問題,很不錯的習慣,好記性不如blog之...

C 學習 原創 unique和uni

c 學習 原創 unique和unique copy函式的應用 孫宇洪 unique函式的功能是 去除相鄰的重複元素 只保留乙個 函式引數 unique first,last,compare first為容器的首迭代器,last為容器的末迭代器,compare為比較函式 可略寫 注意 unique函...

C 學習 原創 remove和rem

c 學習 原創 remove和remove copy函式的應用 孫宇洪 remove函式的作用是 給你乙個值val,讓你刪除乙個容器中所有等於val的元素。函式引數 remove first,last,val first為容器的首迭代器,last為容器的末迭代器,val為要查詢的值。注意 remov...

pytorch op的c 和cuda編寫

官方文件 需求 當你需要頻繁的使用該自定義操作,或者呼叫很昂貴,或者需該操作要用到一些c c 庫。c 擴充套件允許使用者建立源外定義的pytorch運算子,即與pytorch後端分離的運算子。c 擴充套件有兩種形式 使用setuptools提前構建 使用torch.utils.cpp extensi...