Исследовательская группа под руководством Чэнь Мохана из Пекинского университета адаптировала ABACUS — пакет открытого исходного кода для теории функционала плотности (DFT), разработанный в Китае — для полной линейки процессоров Huawei Kunpeng 920. Кроме того, команда оптимизировала 19 различных классов основных операторов. Об этом сообщила компания Huawei Computing в публикации от 31 октября, как стало известно изданию IT Home. Код был загружен в репозиторий проекта на GitHub.
Теория функционала плотности (DFT) является основным методом первого принципа для изучения свойств таких материалов, как металлы и полупроводники. ABACUS совместно разрабатывался несколькими учреждениями и имеет более тысячи пользователей среди свыше ста организаций.
Согласно данным команды, при настройке обеих сторон на 28 ядер с выполнением 28 процессов по одному потоку, сборка Kunpeng 920, использующая набор инструкций SVE, показала скорость от 1,3 до 3,9 раз выше, чем у стандартного x86 ЦП при работе со стандартным набором из 10 материальных систем, содержащих от 8 до 216 атомов, включая GaAs, MoS2, BaTiO3, железо и кремний. При использовании блока матричных вычислений чипа, ускорение достигало до 10,7 раз при работе на всех ядрах одного узла. В случаях стохастической DFT команда зафиксировала прирост скорости от 2,8 до 3,1 раз для SVE и от 6,1 до 20,1 раз для сборки с использованием матричного блока.
Первым этапом стало портирование, поскольку различные модели Kunpeng 920 поддерживают векторные инструкции NEON, SVE или SVE512, а также выделенный матричный блок, которые остаются неиспользуемыми при использовании общих опций компилятора. Команда создала отдельные цепочки инструментов: для сборок NEON и SVE использовался gcc с OpenMPI и OpenBLAS, а для остальных — clang с HMPI и KBLAS от Huawei, а также добавлена опция USE_KML для интеграции Библиотеки математики Kunpeng. Все собранные версии прошли интеграционные тесты ABACUS, охватывающие DFT по плановым волнам и LCAO Kohn-Sham, стохастическую DFT и DeePKS, при этом результаты соответствовали основным реализациям.
Далее команда переписала часто вызываемые небольшие операторы. Замена рекурсивной процедуры обобщенного полинома Лагерра на итеративную рекуррентную позволила снизить сложность до O(n) и сделала ее примерно в восемь раз быстрее в миллионном тесте. Переключение поиска интерполяции на бинарный поиск уменьшило среднее количество сравнений в таблице размером 400 записей с около 200 до девяти. Другие изменения включали тригонометрические рекурсии, поднятие инвариантов цикла, настройку смешанной точности и компоновки памяти, при этом численные результаты каждого оператора были повторно проверены.
Используя автоматическую оптимизацию исходного кода в DevKit от Huawei, команда также увеличила скорость обработки случая с углеродом высокой плотности из 8 атомов в 2,28 раза и случая с кремнием из 512 атомов в 2,66 раза на более новой модели Kunpeng 920. Huawei отмечает, что полученный опыт настройки может быть применен к другому научному программному обеспечению.


