據我所知,CUDA支持C和C++。但是我不能在我的內核中使用C++。內核CUDA中的C++代碼?
我嘗試一個簡單的例子,像這樣
__global__ void simple(){
cout<<"abc";
}
這就是錯誤。但是,如果我更改爲printf("abc");
這是正確的。
你能爲我解釋一下嗎?非常感謝你!
據我所知,CUDA支持C和C++。但是我不能在我的內核中使用C++。內核CUDA中的C++代碼?
我嘗試一個簡單的例子,像這樣
__global__ void simple(){
cout<<"abc";
}
這就是錯誤。但是,如果我更改爲printf("abc");
這是正確的。
你能爲我解釋一下嗎?非常感謝你!
從CUDA 7.5 NVIDIA幻燈片:
C++ 11個支持的特徵:
C++不支持的功能
std::cout
在C++標準庫中定義,CUDA不支持。使用C printf
從CUDA 6.5開始,不推薦使用'compute_11','compute_12','compute_13','sm_11','sm_12'和'sm_13'體系結構。因此nvcc
將默認編譯爲CC 2.0,支持printf
。
感謝您的幫助^^ –
CUDA不鏈接庫&使用cout
函數所需的頭文件。但是,您可以啓用的printf()
這樣的回答解釋了啓用該功能的過程: printing from cuda kernels 這裏列出,方便使用:
爲了能夠使用普通的printf()上計算的設備Capability> = 2.0,編譯至少CC 2.0的CC至關重要,並禁用默認值,其中包括CC 1.0的內部版本。
右鍵單擊項目中的.cu文件,選擇屬性,選擇配置屬性| CUDA C/C++ |設備。點擊代碼生成線,點擊三角形,選擇編輯。在代碼生成對話框中,取消選中從父項或項目默認值繼承,在頂部窗口中鍵入compute_20,sm_20,單擊確定。
CUDA實現*子*完整的C++的。 – njuffa