2016-05-14 5 views
0

В OpenCL возможно ли, что система, состоящая из нескольких графических процессоров, неявно делит задание без программиста, явно делящего рабочую нагрузку?
Например, у меня есть графический процессор, состоящий из 1 GP 192 GPU и запускает матричное умножение, которое работает нормально. Теперь я добавляю еще один графический процессор, и OpenCL использует оба GPU для вычисления умножения матрицы на своем, а не на программиста, разделяющего рабочую нагрузку на каждый графический процессор.Неявная работа Multi GPU

ответ

1

Я не думаю, что OpenCL может автоматически сделать это (хотя бы в 1.2), но есть некоторые оболочки OpenCL, которые могут автоматически обрабатывать несколько вычислительных устройств. Я не использовал OpenCL CodeBench, но они утверждают, что они имеют балансировку нагрузки нескольких вычислительных устройств.

+0

Итак, в этом случае две карты графического процессора каждый с 1 SM, система идентифицирует в общей сложности 2 SM, присутствующих в системе? – pradyot

0

Вы можете объединить только память устройств и сделать это только с версии 2.0 opencl и вверх.

Ядра находятся в очереди команд, и они созданы с (и связаны) с одним устройством. Таким образом, они могут работать только на одном устройстве. Но несколько командных очередей могут служить в общем контексте, который может использовать неявную синхронизацию буфера.

Разделение работы не может выполняться неявно, поскольку во время выполнения не может быть известно, какой рабочий элемент получает доступ к адресу памяти.

После того, как вы напишите рабочую оболочку одного устройства, добавление поддержки multi gpu - это не большая проблема.