У вас есть несколько проблем;
1) Как получить 50MB данных на ГПУ 2) На окнах, драйвер GPU сбросит часто при выполнении длительных вычислений 3) механизм персистенции для ~ 50Mb
Возможных ответов 1a) создать буфер памяти OpenCL 50м 1b) Enqueue (записи) данных в ГПУ 1c) Установка ядра ARG в этот буфер 1d) доступ к данным в качестве арг ядра в глобальной памяти ГПУ
2) Когда драйвер драйвера OpenCL (графика) сбрасывается, ваше приложение умрет. Вы можете написать сценарий, который убивает его до того, как система выполнит, а затем перезапустит приложение. Сценарий должен прочитать промежуточный результат, прежде чем он убьет приложение. В противном случае вы никогда не будете контролировать. Только работа с графическим процессором Nvida Tesla в Windows или запуском на Linux позволит избежать того, что дисплей мышью O/S не работает и выполняет сброс драйвера.
3) Я бы использовал файлы MMAPed для сохранения 50 МБ данных и любых промежуточных результатов. Адресный файл MMAPed можно использовать для создания буферов OpenCL для приложения.
И наконец, я постараюсь под сомнение. Работает на Windows vs Linux, из-за проблем с перезагрузкой драйверов и т. Д. Я не мог найти эффективного решения для решения тайм-аута драйвера в Windows, даже используя базу данных PostgreSQL и собственный PgOpenCL, который гарантирует, что все ядра ядра GPU являются ACID.
Является ли ~ 50 МБ всегда доступным только для чтения? Это также похоже на то, что вы работаете на Windows O/S, который каждые несколько минут сбрасывает драйвер OpenCL, и ваши данные теряют данные на графическом процессоре. –