Ich schreibe einen CUDA-Kernel, in dem ich den string
-Datentyp in C++ verwende. Jedoch wird der Compiler den folgenden Fehler zu werfen:Können String-Datentypen in C++ - CUDA-Kernel verwendet werden?
error: calling a host function("std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator =") from a __device__/__global__ function("doDecompression") is not allowed
sind Strings nicht in einem Kernel erlaubt? Wenn nicht, wie umgehen Sie die Zuweisung von Speicherplatz für ein char-Array innerhalb eines Kernels?
Verwenden Sie C-Zeichenfolgen in Kernelfunktionen –
@PaulR: Angenommen, ich übergebe ein Array von C++ - Zeichenfolgen an meinen Kernel. CUDA beklagt sich nicht darüber. Wie wirke ich dies in eine C-Zeichenfolge innerhalb des Kernels. Bitte geben Sie Beispiel – Programmer
Sie müssen nur die zugrunde liegenden Daten an den Kernel übergeben - verwenden Sie die 'string :: c_str()' Methode, um Zeiger auf die C-Daten im Host-Code zu extrahieren und diese an die Kernel-Funktion übergeben –