В рамках проекта Gdev подготовлена открытая реализация фреймворка CUDA
Шинпей Като (Shinpei Kato), разработчик, создавший планировщик GPU-команд TimeGraph и участвовавший в разработке форка драйвера Nouveau PSCNV, представит на выставке USENIX ATC 2012 первую полностью открытую реализацию GPGPU-фреймворка CUDA. В рамках проекта, получившего название Gdev ведется работа над созданием открытой реализации CUDA, которая включает в себя набор библиотек, необходимых для запуска приложений на CUDA-совместимой видео-карте, модуль ядра Linux, выступающий мостом между видео-драйвером и библиотеками, а также набора патчей для открытых NVIDIA-драйверов Nouveau и PSCNV, позволяющих задействовать возможности GPU для решения вычислительных задач без необходимости в установке проприетарных драйверов.По словам создателя проекта, уже в текущей реализации Gdev может дать разработчикам больше возможностей чем оригинальный фреймворк CUDA. Одной из важнейших особенностей проекта является реализация CUDA API как для пространства пользователя, так и в виде модуля ядра (kcuda.ko), благодаря чему появляется возможность разработки оптимизированных с помощью GPCPU алгоритмов сжатия и шифрования для файловых систем, программной реализации RAID и других компонентов ядра. Другая особенность Gdev заключается в возможности виртуализации GPU, благодаря чему можно изолировать приложения разных пользователей друг от друга. Кроме того, реализация Gdev никак не привязана каким-либо драйверам, что в теории позволяет использовать ее в сочетании с любыми драйверами с поддержкой CUDA и даже графическими процессорами другой архитектуры.
В данный момент Gdev еще не пригоден к повседневному использованию в связи с отсутствием некоторых возможностей CUDA API, однако как показывают замеры производительности, скорость работы приложений, собранных и запущенных с помощью Gdev практически аналогично скорости работы оригинальных CUDA-приложений. Исходный код проекта опубликован на хостинге github, он включает в себя все необходимые для сборки и запуска приложений компоненты, кроме компилятора, в качестве которого можно использовать открытый компилятор nvcc.
© OpenNet