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:
- GCC/openblas vs Intel/MKL on Linux
- Mingw64/openblas (Windows version provided here) vs GCC/openblas (Linux version)
- 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.