Как я могу справиться с обработкой очень больших изображений в CUDA? Изображения> 2 ГБ - PullRequest
2 голосов
/ 13 февраля 2012

В настоящее время я использую cudaMallocPitch() для загрузки изображений, но это не удается для очень больших изображений, так как недостаточно памяти.У меня есть очень, очень большие изображения для работы, так как я работаю с гиперспектральными изображениями.Как я могу частично загрузить изображение, обработать его и затем поместить результаты на диск?

1 Ответ

10 голосов
/ 13 февраля 2012

Существуют платы CUDA с достаточным объемом памяти для размещения изображения 2G - у Tesla M2050 и M2070 объем памяти составляет 3 и 6 ГБ соответственно.Если вы не можете оправдать получение денег за такое оборудование за 2,10 доллара США в час, вы можете «арендовать» сервер с двумя Tesla M2050 на Amazon EC2, используя тип экземпляра cg1.4xlarge.

Для изображений, размер которых превышаетобъем доступной видеопамяти, вам придется вручную циклически обрабатывать данные изображения в видеопамяти и из нее с явными значениями memcpy, обрабатывая их порциями.Если время обработки сопоставимо с количеством времени, необходимым для передачи данных на плату и с нее, вам также следует рассмотреть возможность использования асинхронных потоков memcpy и CUDA для перекрытия операций передачи и вычислений.

...