Привет, я не очень хорошо знаком с gpu, и у меня есть теоретический вопрос.Возможные варианты расчета части параллельной программы по сравнению с графическим процессором
Так что я работаю над заявкой Sassena, которая вычисляет рассеяние нейтронов по траекториям молекулярной динамики. Это приложение написано параллельно с MPI и очень хорошо работает для процессоров. Но я готов запустить это приложение поверх графического процессора, чтобы ускорить его работу. конечно, не все, а частично. когда я смотрю на Source Code, то, как он работает, является типичным MPI, то есть первый ранг посылает данные каждому узлу индивидуально, а затем каждый узел выполняет расчет. Теперь есть часть вычисления, которое использует Fast Fourier Transform (FFT), которое потребляет больше всего времени, и я хочу отправить эту часть на GPU.
Я вижу 2 решения впереди меня:
когда узлы достигают FFT части, они должны послать назад данные к главному узлу, и когда главный узел собрал все данные, которые он посылает их на GPU, тогда GPU делает FFT, отправляет его обратно в CPU, а cpu делает все остальное.
Каждый узел будет динамически отправлять данные на GPU, а после того, как GPU выполняет БПФ, он отправляет обратно каждому узлу, а остальные выполняет свою работу.
Так что мой вопрос в том, какой из этих двух вариантов возможен. Я знаю, что первый из них выполним, но у него много общения, которое требует много времени. Но второй способ я не знаю, возможно ли вообще или нет. Во втором случае я знаю, что это будет зависеть и от архитектуры компьютера. Но это CUDA или OpenCL, способный на это вообще?
Спасибо за любую идею.
Это звучит скорее как вопрос о внутренней структуре Sassena, чем что-либо, в частности, для программирования GPU. Да, есть библиотеки FFT для CUDA, но как вы их используете с существующей базой кода MPI, на самом деле это не вопрос CUDA. – talonmies
Какова ваша архитектура? У вас есть только gpu в главном узле? Какова пропускная способность вашей сети? Сколько узлов задействовано? Оба решения возможны, и я думаю, что это не будет хорошо. Я хотел бы внести свой вклад, но мне потребуется дополнительная информация. – prmottajr