Мульти-GPU реконструктор высокого разрешения
Быстрый масштабируемый CUDA CT реконструктор для томографии высокого разрешения (10K × 3600 проекций)
Заказчик:
Neoscan
(Бельгия)

Ссылки и публикации:
Fast CT reconstruction of large datasets on multi-GPU systems (Youtube, en)
Neoscan microCT
Платформа:
Windows x64

Стек:
C++ 14–17, CUDA
Описание

Задача команды Unicore Solutions состояла в разработке быстрой эффективной реализации классического алгоритма Feldkamp для конического пучка. Проект не допускал компромиссов качества, все оптимизации должны были проводиться без ухудшения конечного результата. Основная задача состояла в обработке данных высокого разрешения, однако эффективность работы с небольшими наборами также должна была оставаться высокой.

Разработанный модуль, интегрированный в ПО Neoscan microCT, поддерживает все стандартные опции, такие как 360/180+ сканирование, коррекцию увеличение жёсткости спектра и кольцевых артефактов, сглаживание, устранение геометрических отклонений, ROI и пр.

Целью процесса оптимизации было разработать решение с использованием CUDA, поддержки нескольких GPU и серверных кластеров. Наивысшая скорость обработки была достигнута за счет тщательной балансировки нагрузки на всему подсистемы GPU, включая доступ к памяти и кешу, текстурные модули, SM'ы. Мы так же реализовали прямой асинхронный доступ к дисковым накопителям и применили прямую работу в основными форматами графических файлов без использования медленных стандартных кодеков.
Сравнение скорости работы нашего реконструктора с коммерческими аналогами на реальной системе показало ускорение в 20–50 раз относительно обработки на CPU. Наше решение показало скорость на уровне лучших аналогов для небольших наборов данных, при этом опережая их в 3–5 раз на томографии высокого разрешения. Преимущество в скорости неуклонно растет с повышением сложности задачи.

Важно так же отметить, что наше решение прекрасно масштабируется. Простое обновление видеокарты может заметно улучшить скорость работы реконструктора. Добавление второго GPU дает прирост скорости в ×1.5–1.8 раза. Так же модуль реконструкции может применяться в кластере серверов, при этом добавление каждого дополнительного серверного модуля пропорционально увеличивает скорость.

Более детально результаты работы рассмотрены в видео-презентации (английский):