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:
- Crie subdomínios e troque partes da malha com memória do host
- 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.
parallel-computing
opencl
linear-solver
Krzysztof Bzowski
fonte
fonte
Respostas:
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.
fonte
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 ;-)
fonte