Open casella opened 4 days ago
This is the chain of calls: https://github.com/OpenModelica/OpenModelicaLibraryTesting/blob/4f2c30f19ca4d3ad9936cdece5c5328c052b1336/.CI/Jenkinsfile#L638
in this call jobs = 1. It calls the test.py script here: https://github.com/OpenModelica/OpenModelicaLibraryTesting/blob/4f2c30f19ca4d3ad9936cdece5c5328c052b1336/.CI/Jenkinsfile#L1161
so --jobs gets 1 as well. Then, in test.py
n_jobs gets a value of 1. Later on, single_thread gets a value of "" https://github.com/OpenModelica/OpenModelicaLibraryTesting/blob/4f2c30f19ca4d3ad9936cdece5c5328c052b1336/test.py#L212-L216
which is passed into conf["single_thread_cmd"]
https://github.com/OpenModelica/OpenModelicaLibraryTesting/blob/4f2c30f19ca4d3ad9936cdece5c5328c052b1336/test.py#L578
Finally, that configuration (empty string) is used to set the command line options: https://github.com/OpenModelica/OpenModelicaLibraryTesting/blob/4f2c30f19ca4d3ad9936cdece5c5328c052b1336/testmodel.py#L206
But I it is used for the code generation only, which is in fact faster, since some of it is multi-threaded, not for the C compilation. That is handled afterwards by starting make
:
https://github.com/OpenModelica/OpenModelicaLibraryTesting/blob/4f2c30f19ca4d3ad9936cdece5c5328c052b1336/testmodel.py#L433
which is run with -j1
, that I understand means one job at a time, regardless of what the value of jobs
was in the call of runRegressiontest()
So I guess if single_tread=="", we should use -j
instead.
What I don't get is why the C compile time is 5-7 times smaller with the regular newInst-newBackend job than with the heavy-test job. If both run make with a single thread, the time should be the same.
While checking the latest test reports, I figured that there must have been a misunderstanding in my specifications for the heavy-test job.
This is the regular new backend ScalableTestSuite job report:
and this is the corresponding heavy-test new backend ScalableTestSuite job report:
All the code generation tasks take 40% less time in the heavy-test job, I guess because you don't have many cores competing for memory access on one or two DMA memory channels. However, the C-compilation task takes 7X times, I guess because we are not running many clang instances in parallel on the available cores. BTW, this explains why the heavy-tests job really takes forever to run.
My intention was that the simulations in the heavy-tests job run as if you are running them standalone on the workstation: one by one, but using all the available memory and cores. For some reason, this probably ended up with just one core being used.
Can you please fix that?