Um grupo de pesquisa liderado por Chen Mohan da Universidade de Pequim adaptou o ABACUS — um pacote de código aberto para teoria do funcional da densidade (DFT) desenvolvido na China — para toda a linha de processadores Huawei Kunpeng 920. Além disso, a equipe otimizou 19 classes diferentes de operadores principais. A Huawei Computing relatou isso em uma publicação de 31 de outubro, conforme noticiado pelo IT Home. O código foi carregado no repositório do projeto no GitHub.
A Teoria do Funcional da Densidade (DFT) é um método fundamental de primeiro princípio para estudar as propriedades de materiais como metais e semicondutores. O ABACUS foi desenvolvido em colaboração com várias instituições e possui mais de mil usuários em mais de cem organizações.
De acordo com os dados da equipe, ao configurar ambos os lados com 28 núcleos e executar 28 processos com um thread por processo, a compilação Kunpeng 920, que utiliza o conjunto de instruções SVE, mostrou uma velocidade de 1,3 a 3,9 vezes superior à de uma CPU x86 padrão ao trabalhar com um conjunto padrão de 10 sistemas materiais contendo de 8 a 216 átomos, incluindo GaAs, MoS2, BaTiO3, ferro e silício. Ao usar o bloco de computação matricial do chip, a aceleração atingiu até 10,7 vezes ao operar em todos os núcleos de um nó. Em casos de DFT estocástica, a equipe registrou um aumento de velocidade de 2,8 a 3,1 vezes para SVE e de 6,1 a 20,1 vezes para a compilação usando o bloco matricial.
A primeira etapa foi a portabilidade, pois diferentes modelos do Kunpeng 920 suportam instruções vetoriais NEON, SVE ou SVE512, bem como um bloco matricial dedicado, que permanecem inutilizados ao usar opções de compilador genéricas. A equipe criou cadeias de ferramentas separadas: para compilações NEON e SVE, foi usado gcc com OpenMPI e OpenBLAS, e para os demais, clang com HMPI e KBLAS da Huawei, além de ter sido adicionada a opção USE_KML para integração da Biblioteca Matemática Kunpeng. Todas as versões compiladas passaram por testes de integração do ABACUS, cobrindo DFT por ondas planas e LCAO Kohn-Sham, DFT estocástica e DeePKS, com resultados consistentes com as implementações principais.
Em seguida, a equipe reescreveu operadores pequenos e frequentemente chamados. A substituição do procedimento recursivo do polinômio geral de Laguerre por um recursivo iterativo permitiu reduzir a complexidade para O(n) e tornou-o aproximadamente oito vezes mais rápido em um teste de milhão. A mudança da busca de interpolação para busca binária reduziu o número médio de comparações em uma tabela de 400 entradas de cerca de 200 para nove. Outras alterações incluíram recursões trigonométricas, elevação de invariantes de ciclo, ajuste de precisão mista e layout de memória, sendo que os resultados numéricos de cada operador foram verificados novamente.
Usando a otimização automática de código no DevKit da Huawei, a equipe também aumentou a velocidade de processamento do caso de carbono de alta densidade de 8 átomos em 2,28 vezes e do caso de silício de 512 átomos em 2,66 vezes no modelo Kunpeng 920 mais novo. A Huawei observa que a experiência de otimização obtida pode ser aplicada a outros softwares científicos.



