Умножение матриц с использованием CUDA + MPI - PullRequest
1 голос
/ 12 мая 2011

Я изучаю gpu в кластерных средах, используя mpi для связи.
Для того, чтобы сравнить скорость, я думаю, в create:

Умножение матрицы только для графического процессора, хорошо.
Теперь просто CPU MatrixMulti, хорошо.
Но я не могу найти хорошую реализацию умножения матриц CUDA + MPI.

У кого-нибудь есть подсказка, где я могу найти это? Или предложите одну реализацию.

Ответы [ 3 ]

1 голос
/ 07 ноября 2011

Библиотека шаблонов MTL4 Matrix может стать отличной отправной точкой. Прямо сейчас MTL4 имеет многоядерный DMM, и мы почти закончили с полной реализацией GPU. Питер и я говорили о алгоритмах распределенных графических процессоров, но поскольку в настоящее время мы фокусируемся на решателях PDE, алгоритмы распределенных графических процессоров трудно сделать конкурентоспособными по сравнению с надежным цифровым мультиметром.

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

Чтобы начать, взгляните на учебник MTL4

1 голос
/ 12 мая 2011

не так много вокруг. Лучше всего написать умножение блочной матрицы поверх MPI, если бы каждый узел выполнял умножение блоков локально на GPU.

0 голосов
/ 19 мая 2011

Комбинаторный BLAS является шаблонным C ++ MPI-кодом, который имеет разреженную матричную операцию умножения. Он использует процессорную сетку sqrt (p) -by-sqrt (p) и алгоритм SUMMA для умножения матриц. Одним из аргументов шаблона является «последовательный» компонент, представляющий собой матрицу, локальную для одного процесса. Возможно, вы сможете использовать его напрямую с аргументом шаблона finnagled, который является вашей структурой CUDA, но, по крайней мере, он может служить ссылкой для вашего собственного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...