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.

Krzysztof Bzowski
fonte
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.

gentryx
fonte
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 ;-)

vanCompute
fonte