Dne neděle 22. března 2020 14:57:40 CET, Dr. Guido Dhondt napsal(a):
in 2019 I bought a new computer (12 cores) and installed Opensuse Leap 15.0. One of the tasks I want to perform is to run all test examples (*.inp) in a given directory with a specific program (CalculiX), using the following script: for i in *.inp; do /home/guido/CalculiX/CalculiX ${i%.inp} >> ${i%.inp}.lst 2>&1 & done This worked fine. All examples (18 in total) are sent to all cores and executed. Due to the 12 cores the execution time is much shorter (maybe 30 minutes) than running everything not concurrently (hours). Beginning this year I decided to wipe everything from my computer and install Opensuse Leap 15.1 (the reason was that I wanted to install the cuda library, which is only available for the latest Opensuse version). If I execute now exactly the same script, the jobs start as usual but after some time they diverge (I guess because of some interference during the equation solving). If I use a script that, after starting a job, waits till it finishes before starting the next (basically without & at the end of the script line above), everything works fine. Since the version of CalculiX now is not the same as the one I ran on Leap 15.0 (CalculiX evolved), I ran my exact current version on my old computer (4 cores, Opensuse 10.3): everything runs and the results are fine (just takes a lot of time due to the low number of cores and architecture age). I have no idea why this happens. Any idea?
Wild guessing, but did You recompile the software? 15.0 and 15.1 would contain different versions of libraries, which could have impact... As Your app seems using only single core, why not use it with GNU Parallel, which is able to distribute individual jobs into multiple cores? Something like find . -name "*.inp" | parallel "CalculiX '{}' >> '{.}'.lst 2>&1" -- Vojtěch Zeisek https://trapa.cz/ Komunita openSUSE GNU/Linuxu Community of the openSUSE GNU/Linux https://www.opensuse.org/