MPI + GPU: как смешать две техники

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

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

У меня есть Google вокруг, но я не могу найти что-то конкретное. Как вы смешиваете MPI с графическими процессорами? Есть ли способ для программы запрашивать и проверять"oh, this rank is the GPU, all other are CPUs" ?  Есть ли рекомендуемый учебник или что-то?

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

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос