關於我遇到的鏈接和多重定義函數時遇到的另一個問題,我想簡單地將我的cuda代碼包裝在單例類中。具有私有全局內核方法的C++類
沿
class Singleton{
public:
__host__ void doSomething();
private:
__global__ void someKernel();
};
即顯然只裝置可用於方法和上面給出「無效存儲器限定符的組合」的東西。我想將我的代碼包裝在一個類中以獲得更多結構化的代碼,但是如果我需要從外部放置每個內核,則沒有多大意義。
同樣的問題已經在NVIDIA的網站先前提出的,但沒有一個答案 http://forums.nvidia.com/index.php?showtopic=176623
我也理解與這個指針的問題,但即使是靜態方法不能是全球性的。
這裏真的有問題嗎? CUDA語言不允許在類中使用'__global__'聲明,大多數原因與內核無法調用內核的原因相同,並且不支持外部鏈接。工具鏈和硬件都不能做任何支持這些事情所需的東西。 – talonmies
儘管它們看起來很優雅,但它們是不好的選擇。繼續使用靜態方法或全局函數,它們可以幫助您調用對象及其功能。因此,您也可以維護狀態(如果需要) – sarat