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
