Seleção do solucionador linear para computação GPGPU (OpenCL)


10

Eu já desenvolvi uma solução funcional do Método dos Elementos Finitos para resolver problemas de transferência de calor usando GPU e OpenCL usando o método Gradiente Conjugado. A principal desvantagem desse método é a alta demanda por memória. Além disso, no caso de placas gráficas, a memória geralmente é muito limitada. Eu vejo duas opções:

  1. Crie subdomínios e troque partes da malha com memória do host
  2. Use métodos multifrontais

Eu tenho que levar em conta a arquitetura específica. Trocar pode ser muito caro. O método CG é popular no contexto da computação GPGPU, mas não consigo encontrar nenhuma comparação entre os métodos CG e multifrontal (no caso de GPGPU). O método multifrontal pode ser mais rápido que o CG? Esta é uma questão geral, de fato, ainda depende da implementação.


2
Você faz a montagem global das matrizes no seu código FEM? ou você usa implementações sem matriz? (ou seja, sem formação explícita das matrizes)
— Allan P. Engsig-Karup

3
Qual pré-condicionador você está usando e como é o domínio? Uma área de trabalho de dez anos usando um bom algoritmo vencerá um cluster de GPUs usando um algoritmo de baixa qualidade.
— precisa

Você está usando malhas hexaédricas ou simples? Se a memória é um problema e você está usando elementos hexadecimais com funções básicas do produto tensorial, em alguns casos, você pode economizar memória salvando apenas operadores 1D e usando uma implementação sem matriz (como Allan mencionou).
— Jesse Chan

Respostas:


2

Eu sou o líder do projeto no LibGeoDecomp , então pensei em participar.

Sim, você pode implementar um FEM com o LibGeoDecomp. No momento, estamos trabalhando em um contêiner aprimorado para exatamente esse caso de uso. Mas para ser justo: a conclusão desse trabalho ainda está a meses de distância e, até então, o desempenho não será o ideal. Sinta-se à vontade para entrar em contato comigo por e-mail se você ainda quiser experimentar o LibGeoDecomp.

Outra opção seria a Fenics , que solucionou problemas bem resolvidos para problemas irregulares. Mas no AFAIK você não pode escrever seu próprio solucionador nesse caso.


1

Não sei se isso ajuda você. Aqui, você encontrará um link para libgeodecomp , uma ferramenta que emprega técnicas de decomposição de domínio personalizáveis (no site). Pode ser usado com GPUs, tanto quanto eu sei. Se ajudar, vote-me ;-)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.