работа с файлами и потоками через OpenCL (GPU) - PullRequest
3 голосов
/ 05 июля 2011

Я хочу написать в файл из ядра OpenCL .. что-то вроде fwrite () в C ..

Есть ли какая-либо функция, подобная этой ... или что я должен сделать, чтобы написать вфайл из GPU?

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Это невозможно. Это не только проблема синхронизации с сотнями потоков, ядро ​​работает на специальных устройствах, таких как GPU или ускорительные карты. Эти карты не имеют дисков доступа и других устройств ввода-вывода.

Данные могут отправляться и приниматься только из памяти, а процессор может выполнять сложные операции ввода-вывода.

В общем: GPU (устройство OpenCL) может только получать данные из памяти и что-то делать с ними локально. После того, как на процессор поступает сигнал о завершении работы ядра OpenCL, данные извлекаются из графического процессора. Графический процессор является чистым ведомым устройством без какого-либо контроля над окружающей средой.

4 голосов
/ 05 июля 2011

Нет, это не доступно.Как бы вы обрабатывали 1000 потоков, записывающих в один и тот же файл безопасным способом?Это сильно замедлит вычисления.Printf предназначен только для отладки.

Так что вам нужно отправить информацию на хост и позволить хосту обработать правильную запись в файл.Лучший способ отправить данные обратно, зависит от вашего ядра / алгоритма.

...