I have made some progress in my effort to gain insight into  Julia 
performance in finite element solvers.

I have compared my solver, J FinEALE, (compute and assemble global FE  
matrices and vectors, then solve the sparse system with Julia's sparse 
matrix  facilities) with the commercial FEA software Comsol 4.4.

If anyone is interested, I could document this in a more comprehensive  
fashion, possibly with the paper.  But here goes a real quick rundown:

Heat conduction, nonzero essential boundary conditions, nonzero internal 
heat generation rate.   
Mesh of 2 million linear triangles.  1,000,000 degrees of freedom.
The mesh generation and kickoff of the simulation (assignment of boundary 
conditions and such) is done by the solver in a separate step, so that is 
not counted towards the total time spent  computing in J FinEALE  either.

J FinEALE: 20.6 seconds
Comsol 4.4 w/ PARDISO: 16 seconds
Comsol 4.4 w/ MUMPS: 22 seconds
Comsol 4.4 w/ SPOOLES: 37 seconds

Just for contrast: 
Matlab FinEALE: 810 seconds.

What I found particularly interesting was what it took  to reduce the time  
for this solution from the initial  rewrite from Matlab (around 86 seconds) 
to the present performance: identify  features that degrade performance 
(declare types!),  code critical bottlenecks with ad hoc functions.   The 
critical feature of Julia that made this possible  was the speed with which 
it can execute  loops  written entirely in Julia.   There is no need  to 
call outside help (ala mex-files, which by the way would be of no help in 
this case).

Briefly, Julia DELIVERS! Bravo to the development team.

Petr


Reply via email to