Διαδικασία μεταγλώττισης με 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¶
Οι επιλογές των οποίων η προεπιλογή αναγράφεται ως «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 |
Μεταγλώττιση με GPU¶
Όταν το NVIDIA HPC SDK (nvc/nvc++/nvfortran) καθορίζεται ως μεταγλωττιστής, το CMake προσθέτει αυτόματα τις ακόλουθες σημαίες.
| Σημαία | Περιγραφή |
|---|---|
-acc | Ενεργοποιεί το OpenACC |
-Minfo=accel | Εμφανίζει πληροφορίες για GPU offloading κατά τη μεταγλώττιση |
-gpu=ccnative,mem:managed | Ανιχνεύει αυτόματα την GPU του περιβάλλοντος μεταγλώττισης για να επιλέξει τον στόχο και χρησιμοποιεί Unified Memory |
Για λεπτομερή διαδικασία μεταγλώττισης GPU με OpenACC, ανατρέξτε στη Μεταγλώττιση με GPU.