I have already developed a working solution of the Finite Element Method to solve heat transfer problems using GPU and OpenCL using the Conjugate Gradient method. The main disadvantage of this method is high demand for memory. Moreover, in case of graphics cards memory is often very limited. I see two options:

  1. Create subdomains and swap parts of the mesh with host memory
  2. Use multifrontal methods

I have to take into account the specific architecture. Swapping could be very expensive. CG method is popular in the context of GPGPU computing but I cannot find any comparison between CG and multifrontal methods (in case of GPGPU). Can multifrontal method be faster then CG? This is a general question, in fact, it still depends on the implementation.

  • 2
    $\begingroup$ Do you do global assembly of the matrices in the FEM code of yours? or do you use matrix-free implementations? (i.e. no explicit formation of the matrices) $\endgroup$ Feb 20, 2012 at 15:34
  • 3
    $\begingroup$ What preconditioner are you using and what is the domain like? A ten year old desktop using a good algorithm will beat a cluster of GPUs using a crappy algorithm. $\endgroup$
    – Jed Brown
    Feb 21, 2012 at 2:09
  • $\begingroup$ Are you using hexahedral or simplical meshes? If memory is an issue and you're using hex elements with tensor product basis functions, you can save memory in some cases by saving only 1D operators and using a matrix-free implementation (like Allan mentioned). $\endgroup$
    – Jesse Chan
    Jun 1, 2014 at 18:43

2 Answers 2


I'm the project lead on LibGeoDecomp, so I thought I might chime in.

Yes, you can implement a FEM with LibGeoDecomp. We're currently working on an improved data container for exactly this use case. But to be fair: completion of that work is still months away, and until then performance will not be optimal. Feel free to contact me via e-mail if you still want to give LibGeoDecomp a try.

Another option would be Fenics, which has well optimized solvers for irregular problems. But AFAIK you don't get to write your own solver in that case.


I don't know whether it helps you. Here, you'll find a link to libgeodecomp, a tool which employs customizable domain decomposition techniques (from the site). It can be used with GPUs as far as I know. If it helps you, vote me up ;-)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.