簡體   English   中英

對 CUDA 代碼使用 C++ 頭結構

[英]Using C++ header structure for CUDA code

我知道可能有人問過這個問題,但我找不到特別能回答我的問題的答案,所以就這樣吧……

問題很簡單,我正在嘗試為 CUDA (.cu/.cuh) 代碼使用 C++ 風格的頭文件。

//MyClass.cuh
#ifndef MY_CLASS
#define MY_CLASS
#include ...cuda.h, etc.
class MyClass
{
   public:
      void myFunction();   
   private:
      __global__ void myKernel();
}
#endif

//MyClass.cu
#include "MyClass.cuh"
void MyClass::myFunction()
{
   //myFunction definition...
}

__global__ void MyClass::myKernel()
{
   //myKernel definition...
}

這會起作用嗎?

不,這行不通:

class MyClass
{
    ...
      __global__ void myKernel();

編譯器不會讓你定義一個__global__函數的類成員函數(試試看)。 即使可以,在設備上運行的此類函數也不具有對其他類數據或函數成員的通常類訪問權限。 所以通常的建議是在類的范圍之外聲明你的內核定義,並在調用內核的類中有一個包裝成員函數。

一些額外的討論在這里這里

暫無
暫無

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

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