Thomas Zeiser

Some comments by Thomas Zeiser about HPC@RRZE and other things

Content

32-bit Intel compiler on 64-bit Ubuntu system

The 32-bit Intel compilers fail to produce 32-bit executables on a 64-bit Ubuntu (or Debian) system as they append (hardcoded) /usr/lib/crt?.o to the linkage command. On 64-bit Ubuntu or Debian systems, however, /usr/lib contains 64-bit code and 32-bit code is in /usr/lib32. The workaround is to prevent the compiler from using the standard startup files when linking and supplying the correct ones manually, i.e. -L/usr/lib32 -nostartfiles /usr/lib32/crt1.o /usr/lib32/crti.o /usr/lib32/crtn.o. As specifying these command line arguments is cumbersome, they can be written to some file and referenced using the ICCCFG, ICPCCFG or IFORTCFG environment variable. This is now done automatically on RRZE’s system via the Modules system. But of course it would be preferential if Intel could determine the correct directories and files itself – but probably, Debian/Ubuntu is not supported officially or nobody tries to create 32-bit code on a 64-bit system …

HPC-Projektantrag "SKLAB" unter Federführung des RRZE bei BMBF-Ausschreibung erfolgreich

Passend zur Vorweihnachtszeit erhielt die Friedrich-Alexander-Universität Erlangen-Nürnberg Anfang Dezember frohe Kunde aus Berlin: Ein im Rahmen der BMBF Ausschreibung "HPC Software für skalierbare Parallelrechner" gemeinsam mit den Universitäten Braunschweig, Dortmund und Stuttgart eingereichter Antrag wird in den nächsten drei Jahren gefördert.

Ziel des Projektes SKALB (Lattice-Boltzmann-Methoden für skalierbare Multi-Physik-Anwendungen) ist die effiziente Implementierung und Weiterentwicklung von Lattice-Boltzmann basierten Strömungslösern zur Simulation komplexer Multi-Physik-Anwendungen auf Rechnern der Petascale-Klasse. "Die Genehmigung des Projektes ist auch Ausdruck der international akzeptierten Expertise der beteiligten Forschergruppen in den Bereichen Hochleistungsrechner und Lattice-Boltzmann Methoden" freut sich der Projektkoordinator Dr. G. Wellein vom Regionalen Rechenzentrum Erlangen. Weitere an dem Antrag beteiligte Wissenschaftler sind Prof. Rüde (FAU), Prof. Krafczyk (TU Braunschweig), Prof. Resch (Höchstleistungsrechenzentrum Stuttgart und Universität Stuttgart) sowie Prof. Turek (Technische Universität Dortmund). Mit Blick auf eine potentielle Kommerzialisierung der Ergebnisse des Projektes ist mit der IANUS Simulation GmbH aus Dortmund auch ein geförderter Industriepartner aktiv eingebunden.

Neben der hervorragenden wissenschaftlichen Basis war insbesondere die Verzahnung mit zahlreichen in- und ausländischen Industriepartnern ein großer Pluspunkt für das Projekt, das im Rahmen eines zweistufigen Verfahrens gründlich begutachtet wurde. Das gesamte Fördervolumen für drei Jahre beläuft sich auf 1,8 Millionen EUR, wovon mehr als ein Drittel an die beiden beteiligten Gruppen der Friedrich-Alexander-Universität Erlangen-Nürnberg fließt.

Das Projekt SKALB

Über SKALB – Lattice-Boltzmann-Methoden für skalierbare Multi-Physik-Anwendungen

Ende Oktober 2007 hat das Bundesministerium für Bildung und Forschung (BMBF) einen Call für Forschungsvorhaben auf dem Gebiet "HPC-Software für skalierbare Parallelrechner" im Rahmen des Förderprogramms IKT 2020 – Forschung für Innovationen veröffentlicht. Das RRZE als Konsortialführer hat zusammen mit vier weiteren universitären Gruppen unterschiedlicher Fachrichtungen, einem kleinen Spin-Off Unternehmen aus Dortmund und diversen assoziierten Partnern das Projekt SKALB – Lattice-Boltzmann-Methoden für skalierbare Multi-Physik-Anwendungen eingereicht. Nach erfolgreich überstandener Begutachtung in zwei Runden sind Anfang Dezember 2008 nun endlich die Bewilligungsbescheide eingetroffen, so dass SKALB zum 1. Januar 2009 offiziell beginnen kann.

Lattice-Boltzmann-Methoden haben sich in den letzten Jahren als Standardverfahren für numerische Strömungssimulation etabliert. Besonders bemerkenswert ist, dass dieser Ansatz schnell breite Verwendung auch jenseits der klassischen CFD Anwendungen gefunden hat und so zum Beispiel in der Verfahrenstechnik oder der Biomedizin eingesetzt wird. Deutschland konnte sich neben den USA als weltweit führend bei der numerischen Umsetzung der Methode insbesondere im Bereich der Hochleistungsrechner etablieren. Um diese führende Stellung auch bei den nun absehbaren technologischen Veränderungen erhalten zu können, haben fünf Gruppen aus ganz Deutschland mit ausgewiesener Expertise in den Bereichen Lattice-Boltzmann-Methode und Höchstleistungsrechnen die vorliegende Projektskizze gemeinsam formuliert. Bestehende Lattice-Boltzmann-Verfahren sollen so zur Lösung praxisrelevanter Multi-Physik-Anwendungsfälle auf hochskalierenden Parallelrechnern erweitert und optimiert werden. Dabei werden alle Schritte vom Preprocessing über die Simulation bis hin zur Visualisierung adressiert. Mit Blick auf neue und sich abzeichnende (heterogene) Multi-/Many-Core Architekturen sollen schließlich Potenziale und Programmieransätze exemplarisch evaluiert werden. Die umfangreiche Beteiligung assoziierter Unternehmen sichert dem Projekt den Zugriff auf neueste Hardwaretechnologien sowie den Transfer der methodischen Erkenntnisse und Simulationstechniken in die Wirtschaft.

Übergeordnetes Projektziel

Ziel von SKALB ist die effiziente Implementierung und Weiterentwicklung von Lattice-Boltzmann basierten Strömungslösern zur Simulation komplexer Multi-Physik-Anwendungen auf Rechnern der Petascale-Klasse.

Arbeitsziele gemäß den Zusammenfassungen auf den AZA-Formularen

Uni-Erlangen: Regionales Rechenzentrum Erlangen (RRZE) und Lehrstuhl für Systemsimulation (LSS, Prof. Rüde)
  • Sequentielle/parallele Performanceanalyse und Codeoptimierung für hochskalierende Rechner
  • Erstellung von Performancemodellen und Benchmarkkernels
  • Entwicklung eines skalierbaren Partitionierers für statische Gitter
  • Untersuchung geeigneter Datenstrukturen
  • Entwicklung dynamischer/adaptiver Lastbalanzierungskonzepten
Uni-Stuttgart: Hochleistungsrechenzentrum Stuttgart (HLRS)
  • Untersuchung verschiedener paralleler Programmiermodelle insbesondere unter Verwendung der standardisierten Modelle MPI und OpenMP. Es sollen Erfahrungen mit PGAS (Partitioned Global Address Space) basierten Sprachen, die in Zukunft größere Aufmerksamkeit finden werden, gesammelt werden.
  • Die Entwicklung der Open-Source-MPI-Implementierung OpenMPI wird am HLRS innerhalb des Projekts fortgeführt, insbesondere im Hinblick auf die Optimierung für Multi-Core-Architekturen.
  • Bei der Anpassung des sequentiellen Lösers auf neue Architekturen werden wir uns auf Vektorprozessoren konzentrieren.
  • Effiziente Anbindung einer Visualisierung auch für massiv parallele Simulationen.
TU-Braunschweig: Institut für rechnergestützte Methoden im Bauingenieurwesen (iRMB, Prof. Krafczyk)
  • Entwicklung, Implementierung und Validierung adaptiver Lattice-Boltzmann-Methoden für hochskalierende Parallelrechner.
  • Adaption paralleler Lattice-Boltzmann-Methoden für Grafikprozessoren.
  • Entwicklung, Implementierung und Validierung von angepassten Datenkompressionsansätzen speziell für Restart und Postprocessing von Lattice-Boltzmann-Simulationen.
Uni-Dortmund: Fakultät für Mathematik, Lehrstuhl III (Angewandte Mathematik und Numerik, Prof. Turek)
  • Entwicklung, Implementierung und Evaluierung numerischer Alternativen für Lattice-Boltzmann-Methoden.
  • Codeoptimierung unter Berücksichtigung von Low-Level Hardware-Charakteristiken und Nicht-Standard-Hardwarearchitekturen.
  • Entwicklung und Implementierung eines hybriden MPI/OpenMP-Scheduling und Loadbalancing-Konzeptes.
  • Weiterentwicklung der FEAST-Basisbibliothek.
  • Wissenschaftliches Benchmarking.
IANUS Simulation GmbH, Dortmund

IANUS ist innerhalb des gemeinsamen Vorhabens wichtiges Bindeglied zwischen den wissenschaftlichen Partnern und den assoziierten Partnern aus der Industrie. Zu den Aufgaben gehört die Koordination des Benchmarkings und der Showcases und Aufbau einer Kommunikationsplattform. IANUS soll sicherstellen, dass die Entwicklungen die Wünsche zukünftiger Anwender aus der Industrie berücksichtigt.

Assoziierte Partner

Als assoziierte Projektpartner konnte fünf führende HPC-Firmen gewonnen werden, die Know-How, Entwicklungstools aber auch Rechenzeit auf geeigneten Systemen bereitstellen.Auf der Anwendungsseite sind drei Firmen als assoziierte Partner integriert. Sie liefern praxisrelevante Anwendungsfälle und stellen somit sicher, dass die Entwicklungen von SKALB auch nachhaltig genutzt werden können.

Weitere wissenschaftliche Verknüpfungen

Zwei Projektpartner (RRZE und LSS) sind seit Jahren in die Aktivitäten des bayerischen Kompetenznetzwerks für Technisch-Wissenschaftliches Hoch- und Höchstleistungsrechnen in Bayern (KONWIHR) eingebunden. Das HLRB ist Teil des Gauss Centre for Supercomputing, das RRZE ist assoziiertes Gründungsmitglied der Gauss-Allianz. Prof. Krafczyk war Sprecher des 2007 ausgelaufenen DFG-Paketantrages Lattice Boltzmann Methoden: Analysis, Numerik und Anwendungen, an dem auch die Gruppe von Prof. Turek beteiligt war.

Das Advanced Center for Computation and Communication, RIKEN, Japan, das für die Entwicklung und Installation des japanischen “Next-Generation Supercomputer” verantwortlich ist, hat dem RRZE gegenüber erklärt, dass sie eng mit SKALB zusammenarbeiten möchten.

Nächste Schritte

Für Januar 2009 ist ein offizielles Kick-Off Meeting geplant. Mehr dazu und weiteren SKALB-relevanten Themen hier in diesem Blog und auf einem noch zu schaffenden SKALB-Webauftritt.

Win a notebook

KONWIHR and Intel just opened the call for a competition on the topic “Innovative Multi- and Many-Core Programming”. Notebooks and travel grants are awarded. Students and staff members of Bavarian Universities and Bavarian Universities of Applied Sciences are eligible to participate. Check http://www.konwihr.uni-erlangen.de/ and the official flyer for more details.

Installation of OpenFOAM-1.5 on Woody

Using pre-built binaries

Does not work as SuSE SLES10SP1 is too different …; one very strange thing is that the gcc-4.3.1 included in the ThridParty packages does work in 32-bit but complains about an incompatible library in 64-bit mode although the library is a correct 64-bit *.so

Building from sources using the Intel Compiler (10.1)

Fails due to problems with C++ templates, etc.

Building gcc-4.3.x manually

Has too many dependencies to quickly do it (MPFR and GNUMP – the SuSE SLES10SP1 versions are too old)

Building from sources using gcc-4.2.2

Requires a patch for autoRefineDriver.C to avoid fatal “invalid conversion” error message; cf. http://openfoam.cfd-online.com/cgi-bin/forum/show.cgi?tpc=126&post=24786)

Some general tricks

  • use WM_COMPILER_INST=System to specify that the system’s gcc should be used and not one which is part of OpenFOAM
  • use WM_NCOMPPROCS to specify the number of CPUs on which make may run concurrently (i.e. the value for make’s -j parameter)
  • at least for building ParaView, cmake (and of course Qt-4.3.x) must be available; it is likely that PV3FoamReader must be compiled afterwards (cf. OF-Readme) and it also depends on cmake
  • when building ParaView, CMAKE_HOME and W_COMPILER_DIR must be set as some sed commands fail otherwise

Running STAR-CCM+ jobs on Woody

Running STAR-CCM+ jobs on Woody

We now have a first user who is using STAR-CCM+ in parallel on the Woody cluster. Starting jobs in batch mode seems to be quite easy. As STAR-CCM+ internally uses HP-MPI, Infiniband should automatically be used correctly, too (although I did not explicitly verify this yet).

Here is what this user currently uses (again no idea if automatic stopping actually works with STAR-CCM+, thus, there might be room for improvements):

[shell]
#!/bin/bash -l
#PBS -l nodes=2:ppn=4
#PBS -l walltime=24:00:00
#PBS -N some-jobname

cd $PBS_O_WORKDIR

module add star-ccm+/3.04.008

# specify the time you want to have to save results, etc.
export TIME4SAVE=800

# detect number of available CPUs (should be modified for Nehalems with active SMT)
ncpus=`cat $PBS_NODEFILE | wc -l`

# STAR-CCM+ starts a master plus N $ncpus slaves; on Woody it’s o.k. to
# oversubscribe the nodes in this way (i.e. ncpus+1 processes on ncpus
# however, on Nehalem nodes (e.g. TinyBlue) it seems to be a very had idea
# to avoid oversubscription, uncomment the following line
## ncpus=$(($ncpus-1))

# check if enough licenses should be available
/apps/rrze/bin/check_lic.sh -c $CDLMD_LICENSE_FILE ccmpsuite 1 hpcdomains $(($ncpus-1))
. /apps/rrze/bin/check_autorequeue.sh

export MPIRUN_OPTIONS=”-v -prot”
# or with pinning: e.g.
## export MPIRUN_OPTIONS=”-v -prot -cpu_bind=v,rank,v”
## export MPIRUN_OPTIONS=”-v -prot -cpu_bind=v,MAP_CPU:0,1,2,3,4,5,6,7,v”

# if there are messages about “mpid: Not enough shared memory” you may try to set
# the maximum shared memory size in bytes by hand – but usually the message means
# that there is really not enough memory available; so forget about this option!
## export MPI_GLOBMEMSIZE=…

export MPI_REMSH=ssh

# automatically detect how much time this batch job requested and adjust the
# sleep attempt;
# make sure you defined the “stop file” within STAR-CCM+ accordingly
( sleep ` qstat -f $PBS_JOBID | awk -v t=$TIME4SAVE \
‘{if ( $0 ~ /Resource_List.walltime/ ) \
{ split($3,duration,”:”); \
print duration[1]*3600+duration[2]*60+duration[3]-t }}’ `; \
touch ABORT ) >& /dev/null &
export SLEEP_ID=$!

starccm+ -batch -np $ncpus -machinefile $PBS_NODEFILE -load myjob.sim

pkill -P $SLEEP_ID
[/shell]

Arbeiten des RRZE auf dem Gebiet des Hochleistungsrechnens erneut mit dem “Golden Spike Award” ausgezeichnet

Für den Beitrag "Vector computers in a world of commodity clusters, massively parallel systems and many-core many-threaded CPUs: recent experience based on advanced lattice Boltzmann flow solvers", erhielt Thomas Zeiser vom Regionalen Rechenzentrum (RRZE) der Friedrich-Alexander-Universität Erlangen-Nürnberg nach 2004 dieses Jahr erneut einen Golden Spike. Dieser begehrte Preis wird jährlich anlässlich des Results and Review Workshops am Bundeshöchstleistungsrechenzentrum Stuttgart (HLRS) in Form eines goldenen Nagels an drei herausragende Arbeiten auf dem Gebiet des Höchstleistungsrechnens vergeben. In seinem Vortrag berichtete Thomas Zeiser über aktuelle Arbeiten der HPC-Gruppe des RRZE zur Analyse, Modellierung und Optimierung von Anwenderprogrammen auf neuesten Rechnerarchitekturen. Der Bereich HPC Services am RRZE wurde in den letzten zehn Jahren durch Mittel der FAU, des bayerischen Staatsministeriums für Wissenschaft, Forschung und Kunst und insbesondere des Kompetenznetzwerks für technisch-wissen­schaft­liches Höchstleistungsrechnen in Bayern (KONWIHR) an der Schnittstelle zwischen Anwender und Technik etabliert.

In seiner Laudatio hob Prof. Nagel vom Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) der Technischen Universität Dresden in seiner Funktion als Vorsitzender des Lenkungsausschusses des Bundeshöchstleistungsrechenzentrum Stuttgart die überregionale Bedeutung und Sichtbarkeit der Beratungs- und Forschungsaktivitäten der Mitarbeiten des Bereichs HPC Services am RRZE hervor. Der diesjährige Beitrag von Thomas Zeiser für den Results and Review Workshop hat die Jury insbesondere durch die gelungene Kombination von Theorie und Anwendung in Form von detaillierten Studien diverser HPC-Systeme, ihrer optimierten Programmierung sowie die gezeigte strömungsmechanische Anwendung überzeugt. Die vorgestellten detaillierten Strömungssimulationen zur Entwicklung von neuartigen Katalysatorträgern auf der Basis von offenen Schwammstrukturen werden in Zusammenarbeit mit der Arbeitsgruppe von Prof. Schwieger am Lehrstuhl für Chemische Reaktionstechnik (CRT) der Friedrich-Alexander-Universität Erlangen-Nürnberg sowie Dr. Hannsjörg Freund vom Max-Planck-Institut für Dynamik komplexer technischer Systeme in Magdeburg interdisziplinär durchgeführt.

Running Turobomole 5.10 in parallel on RRZE’s clusters

Recent versions of Turbomole come bundled with HP-MPI. This allows using different types of network interconnects for parallel runs and HP-MPI is supposed to select the fastest one available – but sometimes HP-MPI requires manual intervention to select to correct interconnect … As parallel runs of Turbomole also require one control process, additional intervention is required to avoid overbooking of the CPUs.

Here is a short receipt for RRZE’s clusters:

[shell]
#!/bin/bash -l
#PBS -lnodes=4:ppn=4,walltime=12:00:00
#PBS -q opteron
#… further PBS options as desired

module load turbomole-parallel/5.10

# shorten node list by one
. /apps/rrze/bin/chop_nodelist.sh

# prevent IB initialization attempts if IB is not available
ifconfig ib0>& /dev/null
if [ $? -ne 0 ]; then
export MPIRUN_OPTIONS=”-v -prot -TCP”
fi

# now call your TM binaries (jobx or whatever)
[/shell]

manually setting the TM architecture: As the s2 queue of the Transtec cluster has access to 32 and 64-bit nodes since recently, it may be a good idea to restrict the Turbomole binary to the 32-bit version which can run on both types of nodes by including export TURBOMOLE_SYSNAME="i786-pc-linux" in the PBS job script.

pinning with HP-MPI: As Turbomole internally uses HP-MPI, the usual pinning mechanisms of RRZE’s mpirun cannot be used with Turbomole. If you want to use pinning, you have to check the HP-MPI documentation and use their specific command line or environment variables! Cf. page 16/17 of /apps/HP-MPI/latest/doc/hp-mpi.02.02.rn.pdf.

Intel compiler and -mcmodel=...

As it seems to be come a FAQ – although it is documented as a small note in the ifort man page: if the 64-bit Intel compilers (for EM64T/Opteron but not for IA64) are used and statically allocated data (e.g. in Fortran common blocks) exceeds 2GB, the -mcmodel=medium or -mcmodel=large switches must be used. As a consequence, the -i-dynamic or -shared-intel flag depending on the compiler version must also be specified for the linking step otherwise strange error messages about relocation truncated occur for libifcore.a routines during linking.