2009-09-09 9 views
2

Я реализовал Cholesky Factorization для решения большого линейного уравнения на графическом процессоре с использованием ATI Stream SDK. Теперь я хочу использовать вычислительную мощность все большего числа графических процессоров, и я хочу запустить этот код на нескольких графических процессорах.Как масштабировать факторизацию cholesky на нескольких графических процессорах

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

ответ

2

Во-первых, вы должны знать, что этот подход будет ввести три уровня латентности для любой связи между узлами: память

  1. GPU на машине 1 к основной памяти на машине 1
  2. Основная память на машине 1 в основную память на машине 2
  3. Основная память на машине 2 к памяти GPU на машине 2

хороший первый шаг будет сделать некоторые задней части расчетов диапазонахарактеристик к д etermine, если скорость, которую вы увеличиваете, разделив проблему между несколькими машинами, перевешивает задержку, которую вы вводите.

После того, как вы уверены, что подход является тем, за которым вы хотите следовать, тогда вам очень важно реализовать это правильно. Обратите внимание, что в настоящее время библиотеки CUDA или OpenCL от NVIDIA станут для вас лучшими выборами, поскольку они позволят вам получить доступ к графическому процессору для вычисления, не связав его с X-сеансом. Как только реализация OpenCL ATI поддерживает GPU, это также должно быть жизнеспособным вариантом.

Поскольку у вас уже есть реализация рабочего GPU, вот основные шаги, которые вы должны следовать:

  • Определите, как обновить алгоритм факторизации для поддержки обработки отдельных узлов
  • Настройки обмена данных между N компьютеров (я замечаю, что вы выбрали MPI для этого)
  • Настройте операцию рассеяния, которая разделит проблему ввода между вычислительными узлами
  • Настройте обмен данными между машиной и ее графическим процессором
  • Настройка операции сбора, который будет собирать результаты из узлов в одном узле
0

я показал этот Q, чтобы мой коллега, который знает об этих вещах. Он предложил использовать ScaLAPACK.