...
Having more than one OpenMP runtime initialised may lead to undefined behaviour including incorrect results or crashes.
A A discussion has been started on the dev list to review a possible solution to the problem.
...
Code Block | ||||
---|---|---|---|---|
| ||||
cmake \ -DUSE_CUDA=OFF \ -DWITH_TESTS=OFF \ -DWITH_EXAMPLES=OFF \ -DCMAKE_CXX_COMPILER=$CXXCOMP \ -DCMAKE_C_COMPILER=$CCOMP \ -DMKLDNN_THREADING=$THREADING \ $LD_ARG .. |
...
Compilers and OpenMP implementations
Treatment groups
...
ID | Compiler | OpenMP | MKL | |
---|---|---|---|---|
1 | clang3_gnu | Clang 3.8.0 | Native OMP | mklml_gnu |
2 | clang3_intel | Clang 3.8.0 | Intel OMP | mklml_intel |
3 | gcc5_gnu | GCC 5.4.0 | Native GOMP | mklml_gnu |
4 | gcc5_intel | GCC 5.4.0 | Intel OMP | mklml_intel |
5 | clang7_gnu | Clang 7.0.1 | Native OMP | mklml_gnu |
6 | clang7_intel | Clang 7.0.1 | Intel OMP | mklml_intel |
7 | gcc8_gnu | GCC 8.1.0 | Native GOMP | mklml_gnu |
8 | gcc8_intel | GCC 8.1.0 | Intel OMP | mklml_intel |
9 | intel19_intel | Intel Compiler 19.0.1 | Native Intel OMP | mklml_intel |
Control groups
| ID | Compiler | OpenMP | MKL |
---|---|---|---|---|
1 | clang3_omp | Clang 3.8.0 | Provided OMP | mklml_gnu |
2 | gcc5_omp | GCC 5.4.0 | Provided OMP | mklml_gnu |
3 | clang7_omp | Clang 7.0.1 | Provided OMP | mklml_gnu |
4 | gcc8_omp | GCC 8.1.0 | Provided OMP | mklml_gnu |
5 | intel19_omp | Intel Compiler 19.0.1 | Native Intel OMP | mklml_gnu |
...
We have not limited the usage of the sockets contrary to the second source.
Environment
...
| Variable | Value |
---|---|---|
1 | KMP_AFFINITY | granularity=fine,noduplicates,compact,1,0 |
2 | OMP_NUM_THREADS | 36 |
3 | GOMP_CPU_AFFINITY | 0-71 |
General score
...
Control group shows the following pretty close numbers:
...
ID | Score | Std.err | |
---|---|---|---|
1 | clang3_omp | 1 | 0 |
2 | clang7_omp | 1.01157 | 0.02027 |
3 | gcc5_omp | 1.00581 | 0.01914 |
4 | gcc8_omp | 1.00795 | 0.0192 |
5 | intel19_omp | 1.0093 | 0.0192 |
Combining the treatment group with clang7_omp which is the best performer (again, with devastating margin of 1%) of the control group we have the following data.
| ID | Score | Std. err |
---|---|---|---|
1 | clang3_gnu | 1 | 0 |
2 | clang3_intel | 1.00051 | 0.01739 |
3 | clang7_gnu | 1.014 | 0.02055 |
4 | clang7_intel | 1.01186 | 0.01899 |
5 | gcc5_gnu | 0.98937 | 0.01913 |
6 | gcc5_intel | 1.0083 | 0.01696 |
7 | gcc8_gnu | 0.98195 | 0.01961 |
8 | gcc8_intel | 1.00822 | 0.01723 |
9 | intel19_intel | 1.00486 | 0.01756 |
10 | clang7_omp | 1.01215 | 0.01777 |
We can see pretty obvious patterns.
...