我正在尋找模板的CUDA內核。 ,而不是SO都特別提出。在這個內核中,我想要一個依賴於typename的typedef。我嘗試了以下(假設/希望),它會類似於C++,但它沒有。是否可以在CUDA內核中使用std :: conditional?
#include <type_traits> // for std::conditional. Not sure if it's necessary
#include <cuda_runtime.h>
#include <cuComplex.h>
template <typename fType>
__global__ void DummyKernel() {
typedef std::conditional<sizeof(fType) == sizeof(double), cuDoubleComplex, cuFloatComplex>::type cfType;
}
這會產生錯誤
nontype "std::conditional<_Test, _Ty1, _Ty2>::type [with _Test=<expression>, _Ty1=cuDoubleComplex, _Ty2=cuFloatComplex]" is not a type name
有沒有辦法做我想要什麼?我正在使用CUDA 5.5和VS2012。
您在'typedef'之後缺少'typename'關鍵字。 – catscradle
@catscradle當我意識到Nvidia編譯器是分開的時,我正要說我正在使用VS,並且它不符合標準。我必須打破我愚蠢的懶惰習慣。如果發佈,我會接受這個答案。 –