2015-01-07 77 views
2

我正在嘗試編譯和鏈接動態內核,並在GK110上與CUDA驅動程序API一起使用。CUDA動態並行與驅動程序API

我編譯在Visual Studio中與重定位裝置代碼標記和compute_35,sm_35的.CU源文件到PTX文件,然後的CUDA接頭增加了cudadevrt.lib(至少它試圖根據鏈接器調用)。當我在ptx .obj上做一個cuModuleLoad時,它說不支持的設備代碼。還有一個.device-link.obj這似乎不切實際的小,驅動程序API函數似乎不認爲它是一個有效的圖像。在檢查ptx文件時,我可以看到它根據CUDA文檔(來自PTX部分的動態並行性)生成了對內核啓動函數的調用。

如何鏈接適當的設備代碼以使動態內核調用有效?

(這是CUDA 6.5 Win64上與VC2013)

回答

3

你需要做的鏈接,同時使用驅動程序API提供CUDA連接加載PTX-文件:

  • 編譯銅源與重新定位的標誌文件,以PTX

在您的應用程序:

  • 鉻eate與cuLinkCreate()的連接體的實例
  • 使用cuLinkAddFile()或cuLinkAddData()
  • 追加cudadevrt.lib使用cuLinkAddFile()或cuLinkAddData()
  • 呼叫cuLinkComplete(追加PTX-文件),它返回你你可以像往常一樣加載二進制文件(例如cuModuleLoadDataEx())
  • 破壞與cuLinkDestroy()
+0

感謝連接實例!這確實奏效。仍然想知道如何做一個預先鏈接的東西。 – FHoenig

相關問題