MPI + GPU: как сочетать эти две технологии

Моя программа хорошо подходит для MPI. Каждый ЦП выполняет свою собственную, специфическую (сложную) работу, производит однократное двойное, а затем я использую MPI_Reduceдля умножения результата от каждого ЦП.

Но я повторяю это много-много раз (> 100 000). Таким образом, мне пришло в голову, что GPU значительно ускорит процесс.

Я погуглил, но ничего конкретного не нашел. Как вы собираетесь смешивать MPI с графическими процессорами? Есть ли способ для программы запросить и проверить «О, этот ранг — это GPU, все остальные — процессоры»? Есть ли рекомендуемое руководство или что-то в этом роде?

Важно отметить, что мне не нужен полный набор графических процессоров. Мне просто нужно много ЦП, а затем один ГП для ускорения часто используемой операции MPI_Reduce.

Вот схематический пример того, о чем я говорю:

Предположим, у меня есть 500 процессоров. Каждый процессор каким-то образом производит, скажем, 50 двойныхсекунд. Мне нужно перемножить все 250,00 из этих doubleвместе. Затем я повторяю это от 10 000 до 1 миллиона раз. Если бы у меня был один графический процессор (в дополнение к 500 процессорам), это было бы действительно эффективно. Каждый ЦП будет вычислять свои 50 двойныхс для всех ~1 миллиона «состояний». Затем все 500 ЦП отправят свои двойныена ГП.Затем GPU перемножал 250 000 двойныхs вместе для каждого из 1 миллиона «состояний», создавая 1 миллион двойных.
Эти цифры не точны. Вычисления действительно очень большие. Я просто пытаюсь передать общую проблему.

8
задан cmo 9 April 2012 в 14:37
поделиться