[英]What is the difference between the cuda api cu… and cuda…?
例如cudaMemcpy和cuMemcpy ? 我可以看到函數定義不同,但我的意思是API。 為什么有一個api從cu...
開始cu...
還有一個以cuda...
開頭cuda...
? 應該何時使用每個API?
方法名稱以cu...
開頭的API就是所謂的Driver API 。 方法名稱以cuda...
開頭的API是Runtime API 。
最初(直到CUDA 3.0)API已完全分離。 粗略的分類是:Runtime API更簡單,更經濟。 Driver API適用於更復雜的“低級”編程(可能還有庫開發)。
從CUDA 3.0開始,這兩種API都可以互操作。 這意味着,例如,當您使用cuMemAlloc
為Driver API分配內存時,您也可以在運行時API調用中使用相同的內存,例如cudaMemcpy
。
主要的實際區別在於,在Runtime API中,您可以使用特殊的kernel<<<...>>>
啟動語法,而在Driver API中,您可以將CUDA程序加載為“模塊”(使用cuModuleLoad
方法) ),以CUBIN文件或PTX文件的形式給出,並使用cuLaunchKernel
編程方式啟動這些內核。
實際上,我認為對於CUDA程序的最大部分,差異可以忽略不計:幾乎所有其他功能(內核/模塊處理除外)在兩個 API中都可用,並且兩者幾乎相同。 這指的是方法( cuMemcpy
和cudaMemcpy
等,以及結構CU_event
和cudaEvent
等)。
有關關鍵字“CUDA Runtime Driver API”的網絡搜索可以找到更多信息,例如,訪問https://devtalk.nvidia.com/default/topic/522598/what-is-the-difference-between-runtime-and -driver-API-/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.