Μετάβαση στο περιεχόμενο

Διαδικασία μεταγλώττισης με CMake

Αυτή η σελίδα περιγράφει τη διαδικασία από τη λήψη του πηγαίου κώδικα του FrontISTR έως τη μεταγλώττιση και την εγκατάσταση. Για λεπτομέρειες σχετικά με τις εξαρτώμενες βιβλιοθήκες, ανατρέξτε στις Υποχρεωτικές και προαιρετικές εξαρτήσεις.

Λήψη του πηγαίου κώδικα

Ο πηγαίος κώδικας του FrontISTR μπορεί να ληφθεί από το GitLab ή το GitHub.

# GitLab
git clone https://gitlab.com/FrontISTR-Commons/FrontISTR.git

# GitHub (καθρέφτης)
git clone https://github.com/FrontISTR/FrontISTR.git

Διαδικασία μεταγλώττισης

Το FrontISTR προϋποθέτει μεταγλώττιση εκτός του δέντρου πηγαίου κώδικα (η μεταγλώττιση απευθείας στον ριζικό κατάλογο του πηγαίου κώδικα απαγορεύεται). Δημιουργήστε έναν κατάλογο build και εκτελέστε το cmake μέσα σε αυτόν.

cd FrontISTR
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_MPI=ON -DWITH_OPENMP=ON ..
make -j$(nproc)

Μετά τη μεταγλώττιση, μπορεί να εκτελεστεί απευθείας ως /path/to/FrontISTR/build/fistr1/fistr1. Για εγκατάσταση στη διαδρομή του συστήματος (CMAKE_INSTALL_PREFIX), εκτελέστε επιπλέον την ακόλουθη εντολή.

cmake --build . --target install

Κατάλογος επιλογών CMake

Οι επιλογές των οποίων η προεπιλογή αναγράφεται ως «ON όταν ανιχνευθεί» ενεργοποιούνται αυτόματα όταν, κατά την εκτέλεση του cmake, εντοπιστεί η αντίστοιχη βιβλιοθήκη στο σύστημα. Μπορούν να απενεργοποιηθούν ρητά με τον καθορισμό -DWITH_XXX=OFF.

Επιλογή Προεπιλογή Περιγραφή
WITH_MPI ON Ενεργοποιεί τον παραλληλισμό MPI
WITH_OPENMP ON όταν ανιχνευθεί Ενεργοποιεί τον παραλληλισμό νημάτων OpenMP
WITH_METIS ON όταν ανιχνευθεί Ενεργοποιεί τη διαμέριση περιοχής με METIS
METIS_VER_4 OFF Χρησιμοποιεί METIS v4 (με OFF χρησιμοποιείται v5)
WITH_MUMPS ON όταν ανιχνευθεί Ενεργοποιεί τον παράλληλο άμεσο επιλυτή MUMPS
WITH_MKL ON όταν ανιχνευθεί Ενεργοποιεί το Intel MKL (συμπεριλαμβανομένου του PARDISO)
WITH_LAPACK ON όταν ανιχνευθεί Ενεργοποιεί την εκτίμηση αριθμού κατάστασης με LAPACK
WITH_ML ON όταν ανιχνευθεί Ενεργοποιεί προρρύθμιση AMG με Trilinos ML
WITH_REFINER ON όταν ανιχνευθεί Ενεργοποιεί τη λεπτομέρυνση πλέγματος με REVOCAP_Refiner
WITH_REVOCAP ON όταν ανιχνευθεί Ενεργοποιεί τη συζευγμένη ανάλυση με REVOCAP_Coupler
WITH_TOOLS ON Μεταγλωττίζει τα συνοδευτικά εργαλεία
WITH_DOC OFF Δημιουργεί τεκμηρίωση API με Doxygen
WITH_NETCDF ON όταν ανιχνευθεί Ενεργοποιεί έξοδο μορφής Exodus II (NetCDF)
WINDOWS OFF Ενεργοποιεί μεταγλώττιση για Windows
CMAKE_BUILD_TYPE RELEASE Τύπος μεταγλώττισης (RELEASE / DEBUG)
CMAKE_INSTALL_PREFIX /usr/local Κατάλογος εγκατάστασης
DEBUG_EXTRA OFF Ενεργοποιεί έλεγχο διαρροών μνήμης (για GCC, -fsanitize=address)

Μεταγλώττιση DEBUG

Όταν καθορίζεται CMAKE_BUILD_TYPE=DEBUG, προστίθενται οι ακόλουθες σημαίες αποσφαλμάτωσης ανά μεταγλωττιστή.

Μεταγλωττιστής Πρόσθετες σημαίες
GCC -fbounds-check -fbacktrace
Intel -check uninit,bound -traceback
cmake -DCMAKE_BUILD_TYPE=DEBUG ..

Μεταγλώττιση με GPU

Όταν το NVIDIA HPC SDK (nvc/nvc++/nvfortran) καθορίζεται ως μεταγλωττιστής, το CMake προσθέτει αυτόματα τις ακόλουθες σημαίες.

Σημαία Περιγραφή
-acc Ενεργοποιεί το OpenACC
-Minfo=accel Εμφανίζει πληροφορίες για GPU offloading κατά τη μεταγλώττιση
-gpu=ccnative,mem:managed Ανιχνεύει αυτόματα την GPU του περιβάλλοντος μεταγλώττισης για να επιλέξει τον στόχο και χρησιμοποιεί Unified Memory

Για λεπτομερή διαδικασία μεταγλώττισης GPU με OpenACC, ανατρέξτε στη Μεταγλώττιση με GPU.