Code_Aster Windows performances

This post presents some performance comparisons which involve Code_Aster Windows. Based on official performance Code_Aster tests, we compare time consumption using different way to run Code_Aster. For each test, the same hardware is used:

  • i3-2120 CPU @ 3.30GHz, cache size : 3072 KB
  • Mem: 16GB

Three comparisons are made:

  1. GCC/openblas vs Intel/MKL on Linux
  2. Mingw64/openblas (Windows version provided here) vs GCC/openblas (Linux version)
  3. Mingw64/openblas (Windows version provided here) vs Intel/MKL (Linux version) running inside a guest Virtual machine on Windows host

We select test cases according to some criteria. Test cases should run on 1 CPU and amount of RAM should not exceed 6GB (to avoid swapping during tests on the Virtual machine). Then, the list of Code_Aster Linux performance tests used for the comparison is:

  • perf001a
  • perf001e
  • perf002a
  • perf002b
  • perf003a
  • perf003b
  • perf003d
  • perf004a
  • perf004b
  • perf004c
  • perf004e
  • perf005a
  • perf005b
  • perf005d
  • perf005e
  • perf006a
  • perf006b
  • perf007a
  • perf007b
  • perf009a
  • perf009d
  • perf009e
  • perf009f
  • perf012a
  • perf013a
  • perf013b
  • perf015a
  • perf017a
  • perf017b
  • perf017c

GCC/openblas vs Intel/MKL on Linux

The GCC/openblas Code_Aster version is an home made version compiled using the tarball aster-full-src-13.3.0-1.noarch.tar.gz available at the official Code_Aster download page. The build is made following the official procedure, using GCC 4.9 and openblass 0.2.12.

The Intel/MKL Code_Aster version is already available as a binary package “Code_aster_testing-1320” in the official salome-meca 2016 available here.

Comparison is done on Ubuntu 16. The table below shows relative time consumption variations of the Code_Aster GCC version versus the Intel/MKL one :

USER SYSTEM USER+SYS ELAPSED
perf001a -2,42% -8,93% -3,22% -5,90%
perf001e 9,79% -2,62% 6,78% 2,76%
perf002a -9,87% 91,01% 2,17% 2,27%
perf002b -9,42% 28,82% -3,91% -1,31%
perf003a 2,19% 7,41% 2,49% 3,52%
perf003b 3,85% -39,88% -14,92% -7,19%
perf003d 4,50% 15,70% 4,96% 4,93%
perf004a 5,66% 39,06% 6,89% 10,34%
perf004b 5,19% -4,32% 4,30% -14,93%
perf004c 4,46% -8,57% 2,67% -3,72%
perf004e 12,48% 1,27% 12,10% 11,95%
perf005a -11,50% -14,29% -11,69% -12,11%
perf005b 10,96% 8,73% 10,44% 11,73%
perf005d -32,64% -19,66% -31,84% -31,68%
perf005e -6,98% 12,37% -5,90% -3,54%
perf006a -3,74% -4,49% -3,77% -4,52%
perf006b -1,75% -2,88% -1,77% -0,95%
perf007a 3,39% -3,56% 3,05% 3,02%
perf007b 3,64% -1,52% 3,46% 3,46%
perf009a -1,01% -4,33% -1,22% -3,23%
perf009d 0,32% 1,62% 0,42% -0,01%
perf009e -0,08% 5,46% 0,30% -9,84%
perf009f 0,55% 1,52% 0,62% 1,79%
perf012a 13,32% -6,23% 12,93% 12,57%
perf013a 6,29% 4,45% 6,22% 7,34%
perf013b 5,92% 10,47% 6,08% 6,07%
perf015a 7,43% -4,96% 7,30% 7,43%
perf017a 6,60% -1,53% 6,19% 6,23%
perf017b -0,03% 6,56% 0,15% 0,04%
perf017c -1,85% 15,10% -1,33% -1,40%
Total 4,69% -2,91% 4,23% 2,40%

The Intel version globally performs better, but relative differences are not so huge.

Mingw64/openblas (Windows version provided here) vs GCC/openblas (Linux version)

Let’s compare differences between platforms, Windows and Linux. The Code_Aster Linux version is the GCC/openblas one described in the previous paragraph. The Code_Aster Windows version is build using Mingw64 (GCC for Windows) and openblas. So in both cases here, Code_Aster is build using GCC 4.9 and openblass 0.2.12, only the platform differs.

Comparison is done between Windows 7 and Ubuntu 16. The table below shows relative time consumption variations of Code_Aster Windows versus Code_Aster Linux :

USER SYSTEM USER+SYS ELAPSED
perf001a 15,06% 7,51% 14,19% 63,62%
perf001e 16,63% 47,04% 23,35% 19,23%
perf002a 10,86% -78,52% -9,09% -3,78%
perf002b 10,83% -17,48% 5,37% 23,64%
perf003a 9,53% -41,84% 6,43% 24,51%
perf003b 8,38% -91,79% -22,00% -27,28%
perf003d 1,47% -1,94% 1,31% 2,84%
perf004a 20,03% 98,95% 23,82% 21,55%
perf004b 17,72% -8,81% 15,45% 9,19%
perf004c 15,29% 14,81% 15,23% 39,51%
perf004e 31,94% 336,13% 41,38% 42,13%
perf005a 9,91% 47,52% 12,51% 37,06%
perf005b 5,32% -12,43% 1,27% 2,50%
perf005d 45,98% -16,86% 41,40% 53,72%
perf005e 41,41% -7,22% 38,16% 37,65%
perf006a 9,73% 2,40% 9,45% 12,79%
perf006b 6,97% 32,35% 7,55% 10,04%
perf007a 45,06% 112,14% 48,13% 49,60%
perf007b 21,23% 96,72% 23,79% 24,48%
perf009a 2,64% -39,32% 0,02% -15,52%
perf009d 15,04% 54,18% 17,88% 14,83%
perf009e 15,11% 51,89% 17,78% 16,11%
perf009f 15,31% 44,79% 17,43% 16,02%
perf012a 8,55% 1155,14% 27,86% 28,82%
perf013a 18,50% 342,46% 30,06% 33,80%
perf013b 18,60% 324,28% 29,77% 35,60%
perf015a 27,50% 51,50% 27,73% 27,90%
perf017a 79,22% 251,48% 87,18% 89,37%
perf017b 31,88% 205,44% 37,01% 38,28%
perf017c 33,44% 120,40% 36,53% 37,99%
Total 23,65% 65,07% 26,00% 29,52%

Code_Aster performs better on Linux. One can expect to wait one third more time using Code_Aster on Windows comparing to Linux.

Mingw64/openblas (Windows version provided here) vs Intel/MKL (Linux version) running inside a guest Virtual machine on Windows host

Now we compare Code_Aster performances on Windows only. The Code_Aster Windows version compiled with Mingw64 is described on the previous paragraph. The Code_Aster Intel/MKL version comes from official salome-meca package, as described in the first paragraph, but this time, tests are running on a Linux guest using virtualbox 5.1 on windows host.

Tests are performed on Windows 7, the amount of RAM allocated to the Linux Ubuntu 16 guest is 8GB. The table below shows relative time consumption variations of Code_Aster Windows versus Code_Aster Linux as guest on Windows:

USER SYSTEM USER+SYS ELAPSED
perf001a -7,92% -62,85% -20,66% 3,68%
perf001e 2,88% 4,93% 3,41% -4,33%
perf002a -16,87% -82,60% -30,68% -28,37%
perf002b -16,66% -76,38% -39,69% -31,12%
perf003a -7,36% -80,80% -17,75% -0,85%
perf003b -11,09% -97,22% -55,31% -57,72%
perf003d -8,24% -58,99% -12,97% -9,00%
perf004a 6,84% -35,18% 1,76% 3,07%
perf004b 2,34% -67,69% -10,73% -18,59%
perf004c -0,85% -52,66% -12,53% -6,12%
perf004e 21,40% 23,56% 21,61% 25,79%
perf005a -32,40% -77,82% -42,98% -28,49%
perf005b -4,49% -45,90% -17,03% -14,55%
perf005d -27,29% -88,57% -40,88% -37,29%
perf005e 7,99% -73,33% -5,02% -4,44%
perf006a -13,30% -79,08% -21,90% -18,98%
perf006b -9,83% -65,88% -13,81% -9,95%
perf007a 30,56% -17,27% 25,81% 31,18%
perf007b 10,63% -17,17% 8,67% 12,77%
perf009a -16,30% -83,61% -27,56% -55,64%
perf009d -7,23% -10,49% -7,55% -8,47%
perf009e -7,72% -22,25% -9,31% -7,79%
perf009f -6,58% -17,23% -7,63% -11,43%
perf012a 1,19% 102,31% 10,31% 14,57%
perf013a -23,40% 105,33% -17,09% -13,04%
perf013b -22,91% 111,51% -16,57% -12,42%
perf015a -6,73% -36,77% -7,25% -4,04%
perf017a 47,89% -7,69% 40,54% 45,96%
perf017b 10,05% -20,01% 7,39% 11,75%
perf017c 11,35% -40,89% 5,97% 10,50%
Total 2,48% -37,54% -2,19% -0,33%

According to these results, there is no significant performance differences between a native Code_Aster Windows version versus a virtualized Linux one on Windows.

While running Code_Aster in a virtualized Linux on Windows may help to not lack of some specific functionalities (such Homard or Mfront), in an other hand virtualization limits the amount of allocatable memory for a Code_Aster process.

Conclusion

These tests were made as objective as possible to help Windows users to chose the way to step in Code_Aster according to their needs. Comparisons need open materials, so fully reproducible, please leave a feedback if you get a different experience.

Leave a comment