CUDA имеет стандартную библиотеку, документированную в руководстве по программированию CUDA. Он включает printf () для устройств, которые его поддерживают (Compute Capability 2.0 и выше), а также assert (). Однако на данном этапе он не содержит полную строку или библиотеку stdio.
Реализация вашей собственной стандартной библиотеки, как предполагает Джейсон Р. Мик, может быть возможной, но это не обязательно рекомендуется. В некоторых случаях может быть небезопасно наивно переносить функции из последовательной стандартной библиотеки в CUDA - не в последнюю очередь потому, что некоторые из этих реализаций не предназначены для обеспечения безопасности потоков (например, rand () в Windows). Даже если это безопасно, это может быть неэффективно - и на самом деле это может быть не то, что вам нужно.
По моему мнению, вам лучше избегать стандартных библиотечных функций в CUDA, которые официально не поддерживаются. Если вам нужно поведение стандартной библиотечной функции в вашем параллельном коде, сначала подумайте, нужно ли вам действительно :
Вы действительно собираетесь выполнять тысячи операций strcmp параллельно?
* Если нет, есть ли у вас строки для сравнения, длина которых составляет тысячи символов? Если это так, рассмотрите алгоритм сравнения параллельных строк.
Если вы решите, что вам действительно нужно поведение стандартной библиотечной функции в вашем параллельном коде CUDA, подумайте, как вы могли бы реализовать ее (безопасно и эффективно) параллельно.