GPU: Мы рождены чтоб скорость сделать былью! (original) (raw)
Наконец-то раскидал дела, которые накопились из-за поездок по командировкам и можно вернуться к блогерству. Вроде и отсутствовал всего неделю, а изменений столько, что иногда и за пол-года меньше случается. Впрочем речь сегодня пойдет не об этом. Сегодня речь пойдет об ускорении
вычислений с помощью GPU. Не смотря на то, что я очень люблю теоретизировать сегодня затрону исключительно один практический момент. А именно статью Speed Up Simulations witha GPU опубликованную в журнале ANSYS Advantage (набрел на нее на isicad'е). Именно по причине малого количества доступной информации о возможности использовать “стандартные” CAE системы в сочетании с GPU в теорию пускаться и не буду. Итак радостная новость: ANSYS теперь умеет использовать GPU и скорость решения увеличивается практически на порядок... А теперь о грустном.
Вернее не то чтобы совсем о грустном, а просто комментарии.
Итак первое. «Из всех всех искусств мы предпочитаем кино». В том плане что на данный момент для ускорения задач можно из всего спектра GPU можно использовать пока исключительно NVIDIA Tesla 20-series. Конечно нельзя сказать, что текущий спектр специализированных GPU очень широк. Но все же получается, что пользовать можно только Nvidia и только самые высокопроизводительные (читай самые дорогие).
Второе. ANSYS 13.0. К чему эта фраза? Эта фраза к тому, что более ранние версии на данный момент не поддерживают GPU и вряд ли будут. Так как на данный момент 13 версия существует пока только в варианте пререлиза то, возможно, что к релизу ситуация немного изменится, но не факт.
Третье. Типы решателей на которых будет ускоряться задача:PCG и JCG, и хватит. Т.е. Исключительно итерационные методы работающие не с полной задачей, а с ее частью. Прямые методы типа Sparse не поддерживаются. Причина простая и понятная, прямые методы изначально трудно распараллеливаются. Ну, а выводы из этого следуют простые ускорение мы получим исключительно на задачах по поиску собственных характеристических значений и «форм» (задачи на собственные частоты и потерю устойчивости). Впрочем в том же тексте говорится о том, что и на Sparse все таки можно получить некоторое ускорение. В основном на контактных задачах с трением и то с рядом оговорок.
Четвертое. Список поддерживаемых ОС: Windows x64 и Linux x64. Это нельзя назвать ни ограничением ни недостатком. Те кто хоть сколько ни будь серьезно относятся к вопросам решения задач с помощью CAE на данный момент редко сидят на чем-то другом.
Пятое. Раз ромашка, два ромашка.. На данный момент Вы можете ставить столько GPU сколько захотите, но использоваться будет только один.
Шестое. Ядра - чистый изумруд... Вопрос использования GPU упирается в модель лицензирования ANSYS HPC Pack. Так как в этой модели ANSYS считает количество потоков на которые распараллеливается задача... И если придется платить за все 400 с лишним потоков... Деньга выйдет не маленькая.
Седьмое. Мама, нас посчитали.... На большинстве тестовых задач разницы между скоростью решения у1 CPU+GPU и 4 CPU +GPU по процессорному времени - практически нет.
Восьмое. Скорость разная нужна, скорость разная важна. Эта фраза говорит о том, что скорость решения всей задачи, это не только процессорное время необходимое для решения конечного СЛАУ. Это еще и время его составления, и время превращения результатов полученных при решении СЛАУ в результаты которые нужны пользователю. И тут ситуация становится немного другой. Во первых сразу же максимальный эффект с 9.12 упал до 4.95. Во вторых на ряде задач 3 CPU дали больший результат чем все 400 ядер GPU, просто по тому, что на данный момент дополнительные процессорные ядра ANSYS умеет использовать в большем количестве этапов чем GPU. Но как говорится лиха беда начало.
Девятое. Что-то с памятью моей сталось. В статье описывается машинка HP Z800 с Intel Xeon 5560 (2.8 ГГц)32 ГБ оперативы. НО! Максимальная размерность задачи которая участвовала в тестах — 2.1 млн. dof. Т.е. Аналогичные цифры звучат при рекомендациях о выборе задач, для которых целесообразно применять GPU. Т.е. по сути 32 ГБ нам не так уж и нужны. Да, конечно частоты - не линейная статика и там 1kk dof не всегда равен 1 ГБ оперативы, но... но... но...
Десятое. Резко выраженная эгоцентричность, плохая адаптация в социуме. Так можно охарактеризовать текущие возможности ANSYS по использованию GPU в распараллеливании задачи с помощью супер-элементного подхода или кластерных решений. В том плане, что ни в том, ни в другом случае GPU пока использовать нельзя. Как сказано в пресс-релизе: “над этим работают”.
Информация о возможности использования GPU в исследованиях звучит и муссируется давно. Для нашего коллектива, в данный момент, вопрос скорости не стоит сверхпринципиально, но привыкли мониторить разные решения. По этому вопрос возможности использования GPU не в абстрактных исследованиях проводимых на базе собственноручно написанного кода, а в стандартных CAE пакетах мониторим постоянно. Уже около года, вроде бы, существуют драйвера от той же NVIDIA для связки GPU и ANSYS, но реально завести не получалось. Ответ наконец-то пришел — у нас то не 13 версия. Что же касается не комментариев, а выводов, которые можно сделать на базе имеющейся информации. Для более точного понимания проблемы был нарисован тестовый
сферический конь в вакууме
кубик с размерами метр*на*метр*на*метр и побит на восьмиузловые элементы по количеству 100 на сторону. Закреплены были 4 вершины одной из граней, чтобы убрать «нулевые» частоты. Итого вышло чуть больше 1kk узлов, т.е. около 3kk d.o.f. Далее все это дело использовалось для нахождения 100 собственных частот с помощью PCG на машине Intel Core2 Quad Q9400 с 2.66 Ггц и 8 Гб ОЗУ. На решение задачи ушло в среднем около 3 ГБ оперативы (2.6-3.2), процессорного времени почти семь часов (полное процессорное время 27.5 часов, которое приходится на 4 процессора) и полное время решения 8 часов 20 минут с маленьким хвостиком. Теперь смотрим первый и второй столбец. Однопроцессорная машина с GPU буквально в 1.2 раза быстрее по полному времени счета чем простая четырех процессорная машина. При учете стоимости 4ядерных процессоров и стоимости Tesla.... Смысла в покупке последней — почти нет. При учете разницы между четырехпроцессорными машинами с Тесла и без оной — от 1.5 до 2х раз по времени счета. На шести/восьмиядерной машинке сейчас проверить не могу, но в любом случае итоговый прирост освободившегося времени получается положительным, только если у Вас есть машина, которая постоянно нагружена задачами на собственные числа и формы в пределах 3kk dof. Ну там например оптимизация или анализ чувствительности. В этом случае,
на данный момент
, покупка Tesla может быть экономически оправданной. В остальных случаях это пока что не более чем выпендреж чистой воды.
Если же в ближайшее время появится поддержка более дешевых GPU, поддержка GPU в кластерном режиме, поддержка задач существенно большей размерности, поддержка большего спектра задач и решателей (ГГД, прочность, магнетизм..) и поддержка использования GPU не только в процессе решения но и в ходе формирования матриц, разбиения на сетку, и прочая и прочая... Ну если и не все то хотя бы один из перечисленных пунктов — вот тогда для инженера использующего CAE покупка GPU станет целесообразной , а иначе все деньги улетят в трубу под названием ЖПУ.
В общем лиха беда начало, с нетерпением ждем продолжения сих благих начинаний.