Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Fragen zu Solvertypen, Multicore-Rechnungen, Spannungsparametern /
Issues to solvers, multi core, stress parameter

Moderatoren: ccad, mz15, auroraIco, Lehrstuhl

Antworten
Benutzeravatar
LukasQ
Newbie
Beiträge: 3
Registriert: Fr 5. Mai 2017, 12:48

Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Beitrag von LukasQ »

Hello Z88 Community,

since my issue might be relevant to international users of Z88 as well, I'll describe my problem in english.

I'm currently trying to bring Z88r from Z88AuroraV4 to use multiple CPUs, while calling it from a windows console.

Currently I'm doing the following:
  1. A self-written mesh generator creates all input-files, which are needed for the calculation, in a folder "files/":
    • z88i1.txt
    • z88i2.txt
    • z88i5.txt
    • z88int.txt
    • z88mat.txt
    • z88elp.txt
    • 51.txt (material data)
  2. The following files are then copied into the "files/" folder as well. I am aware, that at least z88o.ogl isn't needed for z88r. I have included it to later open the results in z88o.exe from z88os.
    • z88.dyn
    • z88control.txt
    • z88man.txt
    • z88o.ogl
  3. My mesh generator changes directory into the "files/" folder and calls

    Code: Alles auswählen

    pathToZ88\win\bin\z88r.exe -t sorcg
    and

    Code: Alles auswählen

    pathToZ88\win\bin\z88r.exe -c sorcg
  4. The mesh-generator waits for z88r to finish and reads in all the results I want to look at.
So far everything runs smoothly and as expected.

According to the theory handbook, ch. 3.2.7 the ICORE flag in z88control.txt is responsible for governing the number of CPUs the solver uses. In my case however, z88r seems to completely ignore this flag from my z88control.txt file. The corresponding portion of my z88control.txt is:
GLOBAL START
SIMCASE 11
ICORE 4
GLOBAL END

In this forum post viewtopic.php?f=1&t=628&p=2161&hilit=icore#p2161, milfris suggested to set the ICORE value in z88man.txt. I did that as follows:
GLOBAL START
IBFLAG 0
IPFLAG 0
IHFLAG 0
ICORE 4
GLOBAL END
Both ways didn't yield the expected results. Z88r is still running in singlecore mode. Does anyone have ideas on what I could do differently?
Benutzeravatar
SHautsch
Alumni
Beiträge: 380
Registriert: Mo 15. Apr 2013, 11:03

Re: Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Beitrag von SHautsch »

Dear LukasQ,

simple answer: Z88R is only single-core, Z88RS is our multi-core solver. Try your script with Z88RS and you should be able to use multiple CPUs or CPU cores. Beware that you might not see a big increase in speed with more than 8 cores, since the program parts which can be executed in parallel are limited. Also hyperthreading will not be useful, especially for the PARDISO solver. So for example a 4C/8T CPU should be set to ICORE 4.

Kind regards,
SHautsch
Benutzeravatar
LukasQ
Newbie
Beiträge: 3
Registriert: Fr 5. Mai 2017, 12:48

Re: Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Beitrag von LukasQ »

Thank you SHautsch for the quick reply.

Unfortunately using z88rs did not change anything.
von Univ.Prof.Dr.-Ing. FRANK RIEG und Dr.-Ing. M. Neidnicht (C),2013 V15.0B
Z88RS der beschleunigte lineare Solver fuer Windows,LINUX und Mac OS X
Floats: 8 Bytes
Integers: 8 Bytes
Pointers: 8 Bytes
Einlesen der Solver-Steuerdatei Z88MAN.TXT
*** PARDISO-Solver mit Sparsematrix-Speicherung ***
*** PARDISO wird 1 CPUs und in-core Memory verwenden ***
*** Berechnungsmode ***
Einlesen der Strukturdaten Z88I1.TXT
Koordinaten einlesen
Koinzidenz einlesen
Einlesen der Integrationsordnungs-Datei Z88INT.TXT, 1 Zeilen entdeckt
Einlesen der Elementparameter-Datei Z88ELP.TXT, 1 Zeilen entdeckt
Einlesen der Materialdatei Z88MAT.TXT, 1 Zeilen entdeckt
I tried copying z88man.txt into the same folder as z88rs.exe. That didn't work either.
Benutzeravatar
SHautsch
Alumni
Beiträge: 380
Registriert: Mo 15. Apr 2013, 11:03

Re: Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Beitrag von SHautsch »

Dear LukasQ,

you need:
1. Your structure with boundary conditions (z88i1.txt, z88i2.txt, z88i5.txt)
2. Integration info (z88int.txt)
3. Element parameters (z88elp.txt)
4. Material info (z88mat.txt and r_XX.txt)
5. Solver management (z88man.txt)
These can be automatically generated from a Z88Aurora project (z88control/structure/sets/setsactive.txt) using the converter z88ag2ri.exe (execute from Z88Aurora directory, otherwise it will not work, for example "C:\Z88AuroraV3\win\bin\z88ag2ri.exe 1 1 D:\projectfolder\currentproject").

Then use the solver Z88RS to calculate the structure: "z88rs.exe -t -parao" (which generates z88r.dyn) and then "z88rs.exe -c -parao" (which solves the problem).

Beware that the z88control.txt is a Z88Aurora related file where the z88man.txt is needed by the solver itself. Our converter generates the z88man.txt from the z88control.txt.
If you write your own solver input files (z88i*.txt etc.) you need to add the ICORE to the z88man.txt - but NOT in GLOBAL but in LINEAR SOLVER > SOLVER START:
---------------------------------------------------------------------------
GLOBAL
---------------------------------------------------------------------------

GLOBAL START
IBFLAG 0
IPFLAG 0
IHFLAG 0
GLOBAL END

---------------------------------------------------------------------------
LINEAR SOLVER
---------------------------------------------------------------------------

SOLVER START
MAXIT 10000
EPS +1.0000000E-006
RALPHA +1.0000000E-004
ROMEGA +1.2000000E+000
ICORE 4
OOCFLAG 0
OUTPATH --
DUMPMAX 0
SOLVER END
...
Then you should be able to use more cores...

Kind regards,
SHautsch

Edit: a short addition - the solver z88rs.exe needs the following files to run: libiomp5md.dll, z88.dyn (and then z88r.dyn which is generated by the test-mode).
Benutzeravatar
LukasQ
Newbie
Beiträge: 3
Registriert: Fr 5. Mai 2017, 12:48

Re: Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Beitrag von LukasQ »

Thank you very much. Setting the ICORE value in the linear solver section of z88man did it! :D
I probably got confused by the example z88control file from the theory manual. I guess in the z88control file it would be correct to only set the number of cores inside the GLOBAL region of the file.
Benutzeravatar
SHautsch
Alumni
Beiträge: 380
Registriert: Mo 15. Apr 2013, 11:03

Re: Mehrkernbetrieb aus der Windows-Konsole / Multicore processing from a windows-console

Beitrag von SHautsch »

Dear LukasQ,

correct - in the z88control.txt the ICORE value must be set inside the GLOBAL section, as it depends on the "no. of cores" setting from the GUI which applies to all modules (linear, non-linear, free vibration, thermomechanical, etc.).
The converter than uses this ICORE value to generate a specific z88man.txt for the solver - in case of linear static analysis the necessary commands are read only from the LINEAR SOLVER section.

Kind regards,
SHautsch
Antworten