rCUDA


rCUDA , что означает Remote CUDA , представляет собой тип программной среды промежуточного программного обеспечения для удаленной виртуализации графического процессора . Полностью совместимый с интерфейсом прикладного программирования CUDA ( API ), он позволяет выделить один или несколько графических процессоров с поддержкой CUDA одному приложению. Каждый GPU может быть частью кластера или работать внутри виртуальной машины . Подход направлен на повышение производительности в кластерах графических процессоров, которые не могут быть полностью загружены. Виртуализация графических процессоров уменьшает количество графических процессоров, необходимых в кластере, и, в свою очередь, приводит к более низкой стоимости конфигурации — меньше энергии, приобретения и обслуживания.

Рекомендуемая архитектура распределенного ускорения — это высокопроизводительный вычислительный кластер с графическими процессорами, подключенными лишь к нескольким узлам кластера. Когда узел без локального графического процессора выполняет приложение, требующее ресурсов графического процессора, удаленное выполнение ядра поддерживается за счет передачи данных и кода между локальной системной памятью и удаленной памятью графического процессора. rCUDA разработан с учетом этой клиент-серверной архитектуры. С одной стороны, клиенты используют библиотеку оберток для высокоуровневого API среды выполнения CUDA, а с другой — службу прослушивания сети, которая получает запросы на порт TCP .. Несколько узлов, на которых запущены разные приложения с GPU-ускорением, могут одновременно использовать весь набор ускорителей, установленных в кластере. Клиент перенаправляет запрос на один из серверов, который обращается к графическому процессору, установленному на этом компьютере, и выполняет на нем запрос. Временное мультиплексирование графического процессора или, другими словами , его совместное использование достигается путем создания различных серверных процессов для каждого удаленного запроса на выполнение графического процессора. [1] [2] [3] [4] [5] [6]

rCUDA использует либо сеть InfiniBand, либо API сокетов для связи между клиентами и серверами. rCUDA может быть полезен в трех разных средах:

Текущая версия rCUDA (v20.07) поддерживает CUDA версии 9.0, за исключением взаимодействия с графикой. rCUDA v20.07 предназначен для ОС Linux (для 64-разрядных архитектур) как на стороне клиента, так и на стороне сервера.