簡體   English   中英

CUDA是否包含真正的c ++庫?

[英]Does CUDA include a real c++ library?

“CUDA c ++”語言是一種c ++派生語言,但標准編譯器不支持它,但可以由nVidia的nvcc編譯器編譯。 這可以導致多語言項目,其中GPU模塊使用nvcc編譯,而非GPU模塊使用gcc編譯。

例如,語法kernel<<<dims>>>(params)不是c ++的一部分。

nVidia是否包含一個GPU庫(作為CUDA的一部分),它實際上可以與標准的c ++編譯器(如gcc)一起使用?

CUDA GPU需要為GPU編譯設備代碼,這與您在為x86目標編譯的典型庫中找到的x86機器代碼不同。

因此,要使用GPU,不知何故,您將需要nvidia編譯器來生成機器代碼。

有多種方法可以實現此目的:

  1. 使用庫。 與CUDA一起提供的庫(如CUBLAS,CUSPARSE,CUSOLVER和CUFFT)包括可從可用普通主機代碼調用和鏈接的預編譯GPU例程。 這些庫都可以與標准的c ++編譯器一起使用,例如g ++。

  2. 來自cuda 驅動程序API和cuda 運行時API的大多數例程都可以使用標准c ++編譯器從普通主機代碼調用和鏈接。 但是,這並沒有解決如何處理設備代碼的問題。 如果使用驅動程序API(不包括kernel<<<...>>>等語法元素)以PTX格式提供設備代碼,則不需要nvcc,並且可以使用標准編譯器完全構建應用程序作為g ++。

  3. 如果設備代碼是以C / C ++源代碼形式(即CUDA C / C ++)提供的,那么通常需要使用nvcc將代碼轉換為PTX(以便可以使用上面的方法2)或直接轉換為編譯的二進制文件格式,可供驅動程序API或運行時API使用。

  4. 將來,您可能還需要關注CUDA運行時編譯機制的不斷發展的功能。

  5. 既然你提到了gcc,你可能還想關注gccOpenACC支持的不斷發展的功能。

暫無
暫無

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

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