User Tools

Site Tools


developers:buildsys:internals

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
developers:buildsys:internals [2020/03/04 22:19] Yann Pouillondevelopers:buildsys:internals [2021/08/31 15:45] (current) – [Linear algebra] Jean-Michel Beuken
Line 1: Line 1:
-====== Build-system internals ======+====== Build-system information ======
  
 ===== Target audience ===== ===== Target audience =====
  
-This document is for all Abinit developers who want to understand how the build system works, for Abinit maintainers who want to hack the build system, and for collaborators who want to enhance the interoperability of their projects with Abinit.+This document contains miscellaneous information about the build system
 +Might contain helpful info for Abinit maintainers who want to hack the build system, and for collaborators who want to enhance the interoperability of their projects with Abinit.
  
 ===== Linear algebra ===== ===== Linear algebra =====
Line 9: Line 10:
 The following simplified diagram summarizes how the build system detects linear algebra features. The starting point is colored in blue, the ending point in green, and the decision points in pink. Enhancements are framed with dashed lines. The following simplified diagram summarizes how the build system detects linear algebra features. The starting point is colored in blue, the ending point in green, and the decision points in pink. Enhancements are framed with dashed lines.
  
-<ditaa+{{ :developers:buildsys:ditaa.png?800 |}}
-                                                   /-----------+ +
-                                                   |cBLU Start | +
-                                                   +-----+-----/ +
-                                                         | +
-                                                         v +
-                                          no /-----------+-----------\ yes +
-                              +--------------+cPNK with_linalg_libs+--------------+ +
-                                           \-----------------------/              | +
-                              v                                                     v +
-               no /-----------+-------------\ yes                    +--------------+----------------+ +
-             +----+cPNK with_linalg_flavor? +-----+                  | Identify available components | +
-                \-------------------------/                      +--------------+----------------+ +
-                                                v                                 | +
- +-----------+------------+             +---------+---------+                       v +
- | Set up parameters from |             | Look for flavored |          /------------+------------\ no +
- | CPU and Fortran vendors|              linear algebra            |cPNK with_linalg_flavor? +---------+ +
- +-----------+------------+                components              \------------+------------/         | +
-                                      +---------+---------+                       |yes                   | +
-                                                |                                                      | +
-                                                |                                                      | +
-     /-------+------\ no                          |                 +---------------+----------------+     v +
-     |cPNK OpenMP?  +--------+                    +---------------->+ Check flavor-specific features +---->+
-     \-------+------/        |                                      +--------------------------------+     | +
-             |yes            |                                                                             | +
-                                                                                                       | +
-    +-=------+--------+      |                                                                             | +
-    | Look for PLASMA |      |                                                                             | +
-    +--------+--------+      |                                                                             | +
-                                                                                                       | +
-             *<--------------+                                                                             | +
-                                                                                                         | +
-                                                                                                         | +
-        /----+-----\ no                                                                                    | +
-+-------+cPNK MPI? |                                                                                       | +
-|       \----+-----/                                                                                       | +
-|            |yes                                                                                          | +
-|            |                                                                                             | +
-|            v                                                                                             | +
-| +----------+----------+         +-=-------------+              /----------\ yes     +-=--------------+   v +
-| | Look for ScaLAPACK  +-------->+ Look for ELPA +------------->|cPNK GPU? +-------->+ Look for MAGMA +-->* +
-| +---------------------+         +---------------+              \-----+----/         +----------------+   | +
-|                                                                      |no                                 | +
-|                                                                      v                                   | +
-+------------------------------------------------------->*<------------*-----------------------------------+ +
-                                                         | +
-                                                         | +
-                                                         v +
-                                                    /----+-----+ +
-                                                    |cGRE Done | +
-                                                    +----------/ +
-</ditaa>+
  
 The driving parameter of the detection process is the //with_linalg_libs// option. When specified, the locations of the libraries are known but their features are unknown. When not specified, the other options of configure provide hints on what should be looked for, but the possible locations and names of the libraries are only partly known. Enters the //with_linalg_flavor// option into play, orientating the search for libraries and/or features. As can be seen here, the most influencing parameters are the kinds of parallelisms selected at configure-time. They determine the number of tests performed and the priorities attributed to each linear algebra component. For sake of simplicity, we will not go any further into the details, the essential being the overall picture and the interactions between the involved options of //configure//. The driving parameter of the detection process is the //with_linalg_libs// option. When specified, the locations of the libraries are known but their features are unknown. When not specified, the other options of configure provide hints on what should be looked for, but the possible locations and names of the libraries are only partly known. Enters the //with_linalg_flavor// option into play, orientating the search for libraries and/or features. As can be seen here, the most influencing parameters are the kinds of parallelisms selected at configure-time. They determine the number of tests performed and the priorities attributed to each linear algebra component. For sake of simplicity, we will not go any further into the details, the essential being the overall picture and the interactions between the involved options of //configure//.
Line 114: Line 64:
 The following options are needed: The following options are needed:
  
-  * dfti\\ +  * dfti 
- +  * fftw3
-  * dfti-threads\\ +
- +
-  * fftw3\\ +
   * fftw3-threads   * fftw3-threads
  
-while fftw3-mkl can be removed.+while fftw3-mkl can be removed. dfti-threads can also be removed because MKL manages threading through environment variables.
  
 fftw3-mpi can be replaced by a simple check on the presence of fftw_mpi_init that defines HAVE_FFTW3_MPI fftw3-mpi can be replaced by a simple check on the presence of fftw_mpi_init that defines HAVE_FFTW3_MPI
  
 The pfft option may be used to activate a specialized routine for fourdp but pfft should also activate HAVE_FFTW3 so that we can use the zero-padded version in fourwf. The pfft option may be used to activate a specialized routine for fourdp but pfft should also activate HAVE_FFTW3 so that we can use the zero-padded version in fourwf.
developers/buildsys/internals.1583356749.txt.gz · Last modified: 2020/03/04 22:19 by Yann Pouillon