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

Moderatoren: ccad, SHautsch, auroraIco, Lehrstuhl

#3329
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?
#3330
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
#3335
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.
#3336
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).
#3338
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

I'm glad I could help.

Dear Akos, thanks for letting us know! Enjoy Z88A[…]

Hallo sfguquuu, hab das jetzt auch mal mit andere[…]

Baugruppen, Flächenkontakte

Hallo tracy, bei sehr vielen Bauteilen ist unsere[…]