The motorBike case is part of the tutorials that come with OpenFOAM 1.6. This particular version of the case uses the bug fixes posted in the OpenFOAM 1.6.x git version. These are the timing results of using the original version of OpenFOAM and the cross-compiled version.
The set-up:
The tests that were performed were a single run with each available version of OpenFOAM, all executed in computers with 4GiB of RAM and have Intel Core2Duo E8400 @3.00GHz.
The Linux versions of OpenFOAM 1.6 used are the ones available here (32bit) and here (64bit); both versions were executed in OpenSUSE 10.3 x86_64.
The Windows versions of OpenFOAM 1.6 were cross-compiled with mingw and mingw-w64, available with blueCFD.
The MPI cases were run with dual-core single-machine, with the mesh split in two on the Y axis, thus splitting the bike symmetrically.
The mesh and results are compressed with gzip internally (default of the case).
Run times:
The times are in seconds and the results are in the following table:
Single Core
mingw32 DP
mingw-w32 SP
mingw-w32 DP
mingw-w64 DP
Linux 32
Linux 64
snappyHexMesh (write)
396
359
450
105
104
83
snappyHexMesh (total)
678
703
717
231
203
158
simpleFoam
2280
1384
2039
1932
1845
1492
Dual Core
snappyHexMesh (write)
397
358
461
101
105
83
snappyHexMesh (total)
670
716
720
225
204
158
simpleFoam
1713
1050
1746
1537
1375
1280
simpleFoam Performance Ratio Single/Double
1.33
1.32
1.17
1.26
1.34
1.17
Legend:
the version mingw32 is cross-compiled with gcc-4.3.3 mingw;
the versions mingw-w32 and mingw-w64 are cross-compiled with gcc-4.4.2 mingw-w64;
SP means Single Precision;
DP means Double Precision.
Notes:
snappyHexMesh returns two timings: write mesh time and total execution time. These timings reflect the weight that writing the meshes has in the whole process of generating the mesh.
The meshes for each run with simpleFoam were generated by the respective version of snappyHexMesh, therefore the results are subjective to the generated mesh. In other words, the mesh for each run isn't the same.
These timings are of a single run for each version. Proper testing should have at least 5 runs to do an average.
The mingw-w32 SP version of snappyHexMesh isn't always able to produce a working mesh, due to floating point issues.
Conclusions:
The cross-compiled versions suffer from the conversion layer of using the mingw run-time. Therefore file handling isn't optimized as a result and also dedicated core optimizations were not used (e.g. mmx and sse). Memory allocation may also suffer from insufficient optimization by gcc for Windows, although the -O3 switch was used.
Nonetheless, the mingw-w64 version of snappyHexMesh has surprising timing results, reaching execution speeds near to those in Linux.
Software Development :: Allow us to help you with your software projects of physics simulation for Mechanical and Civil Engineering. For example, software for simulating the propagation of forest fires. [more]
Automatic optimization :: improve your products and manufacturing processes using one of many automatic optimization softwares, capable of coupling with most commercial CAE packages available. [more]
CFD :: through Computational Fluid Dynamics (CFD) simulations, we provide our costumers with detailed multi-physics analysis of fluid flow, heat transfer and stresses in complex geometries for enginnering processes, using dedicated tools like STAR-CCM+, STAR-CD and STAR-DESIGN. [more]