понедельник, 2 ноября 2020 г.

Использование видеокарты RTX 3090 в проектировании

          Начну немного издалека. В прошлом году появление видео карт RTX 2080 от компании Nvidia для обычных пользователей ознаменовала ничего, но для инженеров это новая эра. Со стороны обычного пользователя видео карта это некий девайс обладающий магической силой создавать картинку на экране монитора , и чем больше видео память и скорость обработки этого объема тем лучше. Но вот для инженера этого не просто мало и можно сказать, что даже вся эта информация не дает ничего.

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

          Постараюсь сжато объяснить разницу и надеюсь после прочтения статьи останется чуть больше понимания чем было до этого в данном вопросе. Любая видеокарта это микропроцессор решающий математические задачи с заданной точностью. Точность бывает разная, одинарная или двойная. Одинарная точность - говоря общими словами это точность 7-8 знаков после запятой, двойная точность - это примерно 16 знаков после запятой. 

          Как вы понимаете задачи в игровой механике любой игры и задачи инженерные требуют разного уровня точности решения. Именно поэтому все игровые карты линейки GeForce не имели графических ядер способных решать уравнения с двойной точностью вплоть до видео карты GTX 1080 ti (включая ее)

          Но с появлением технологии реальной трассировки лучей, для видео карт RTX 2070 и старше, появилась возможность прикоснутся и к архитектуре Тьюринга. Для данной архитектуры помимо шейдерных ядер появились тензорные ядра. Если вкратце, то тензорные ядра решают уравнения с неопределенной точностью. А это именно, то что нам нужно. Раньше профессиональные карты имели архитектуру Кеплера, а игровые Паскаля, но с появлением Тьюринга все изменилось и перевернулось с ног на голову в мире игровых и профессиональных видеокарт. 

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

           Что касается инженеров то, тут все сложнее, последняя видеокарта на архитектуре Тьюринга была профессиональная Titan RTX(1 поколение) с 576 тензорными ядрами под архитектуру Тьюринга. Именно она является флагманом при сравнении производительности  расчетов с GPU и без. В данной видеокарте столько же  ядер с одинарной точностью (шейдерные ядра CUDA) по сравнению с игровой RTX 2080 ti, поэтому не для инженерных расчетов она не даст ощутимого прироста производительности например при черчении или моделировании или рендеринге изображения\видео потока.

          И вот этой осенью появились видео карты Geforce RTX 3080, 3090 уже еще на более совершенной архитектуре математика-физика Ампера. И именно 3090 мы протестируем в инженерных расчета, и именно статических расчетах строительных конструкций. 3090 RTX имеет намного более производительные тензорные ядра с неопределенной точностью в количестве 328 штук, которые в 2 раза быстрее по сравнению с архитектурой Тьюринга. И Именно поэтому Nvidia скоро на рынок выпустит Titan RTX 2-го поколения на архитектуре Ампера.

            Предыдущие тесты в программе ANSYS я проводил на профессиональной карте K5000 (которая использовалась всего 20-30 раз и лежит в коробке), прирост производительности в задачах разложений матрицы жесткостей был ощутимый по сравнению с CPU , но в общем времени расчета ускорение процесса была не более 5-7 %, этого не достаточно было для того что бы работать с малым количеством шейдерных ядер по сравнению с той же GTX 780, и при этом всего на 5-7% решать разовые задачи быстрее.

            RTX 3090 по прежнему не находится в списке протестированных видео карт компании ANSYS, но этот сговор капиталистических монополистов мы обойдем добавлением в среду Windows новой переменной:


            Перезагружаем ПК и теперь использование видеокарты не вызовет ошибку.

            Тензорные ядра в статических расчетах могут помочь только в операциях с матрицами, например когда при расчете некого сложного узла на некотором шагу в нелинейном расчете по Ньютон-Рафсону у вас не будет схождение на многих итерациях. На каждом шаге , на каждой итерации шага у вас выполняются операции с матрицами и именно в этом промежутке времени вам и помогут тензорные ядра. В качестве теста я выбрал небольшую задачу с 10 итерациями:


Слева только CPU и время 257 сек., справа уже и GPU и время 221 сек. Ускорение составило 14%. При увеличении количества итераций до 20 получились следующие результаты:


520 сек. против 431 сек, ускорение составило 17.5%


 На 100 итерациях CPU показал время 3295 сек., при задействовании GPU уже иная картина - 2163 сек., ускорение производительности 34.3%. Таким образом при увеличении количества итераций, растет прирост производительности. На моей практике, сложные задачи занимают до 1000 итераций на сложных моделях. На простых моделях (например 100 КЭ), разница отрицательная в разы и использование GPU не рекомендуется. 

          В задачах с движением частиц (например аэродинамика) прирост производительности в разы, но это меня не особо интересует на практике. 

          Для справки приведу сравнительную таблицу по хар-кам видеокарт разных архитектур:


             Надеюсь стало немного более понятно, что такое видеокарты и чем они отличаются друг от друга для проектировщика. 

2 комментария:

Поиск по этому блогу