Skip to content

Commit 0b133c4

Browse files
committed
New release
1 parent f805ca4 commit 0b133c4

4 files changed

Lines changed: 211 additions & 39 deletions

File tree

_products/amg4psblas.md

Lines changed: 79 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ Library releases for AGM4PSBLAS.
3939

4040
|Release | Date | Sources | Documentation | Works with |
4141
|--------|------|--------------------------------|---------------------------| -----------|
42+
| Version 1.2.0 | December 23, 2025 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/amg4psblas/archive/refs/tags/v1.2.0.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/amg4psblas/archive/refs/tags/v1.2.0.tar.gz) | [![PDF](/img/pdficon.png){:height="24px" width="24px"}](https://psctoolkit.github.io/amg4psblasguide/amg4psblas_1.2-guide.pdf){:target="_blank"} | PSBLAS 3.9.0 |
4243
| Version 1.2-rc3 | July 23, 2025 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/amg4psblas/archive/refs/tags/v1.2.0-rc3.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/amg4psblas/archive/refs/tags/v1.2.0-rc3.tar.gz) | [![PDF](/img/pdficon.png){:height="24px" width="24px"}](https://psctoolkit.github.io/amg4psblasguide/amg4psblas_1.2-guide-rc3.pdf){:target="_blank"} | PSBLAS 3.9-rc3 |
4344

4445

@@ -59,33 +60,101 @@ The main reference for features inherited from MLD2P4 is
5960
6061
## Installing
6162

62-
Installation requires having a working version of the [PSBLAS](https://github.com/sfilippone/psblas3) library installed.
63-
AMG4PSBLAS has several interfaces to third-party libraries that can be used in the construction and application phases of preconditioners.
64-
In particular, it is possible to link AMG4PSBLAS with the libraries: MUMPS, SuperLU, SuperLU_Dist, UMFPACK. This is _not mandatory_ and the library can run
63+
Installation requires a working version of the [PSBLAS](https://github.com/sfilippone/psblas3) library
64+
as a prerequisite.
65+
AMG4PSBLAS has several interfaces to third-party libraries that can be used in the construction
66+
and application phases of preconditioners;
67+
in particular, it is possible to link AMG4PSBLAS with the libraries: MUMPS, SuperLU, SuperLU_Dist, UMFPACK.
68+
The usage of these third party libraries is _not mandatory_: the package can function
6569
in isolation and without these features.
6670

6771
0. Unpack the tar file in a directory of your choice (preferrably
6872
outside the main PSBLAS directory).
69-
1. run configure `--with-psblas=<ABSOLUTE path of the PSBLAS install directory>`
73+
1. run configure `--with-psblas=<ABSOLUTE path of the PSBLAS install directory> --prefix=<install_path>`
7074
adding the options for MUMPS, SuperLU, SuperLU_Dist, UMFPACK as desired.
71-
See [AMG4PSBLAS User's and Reference Guide](docs/amg4psblas_1.0-guide.pdf) (Section 3) for details.
75+
See [AMG4PSBLAS User's and Reference Guide](docs/amg4psblas_1.2-guide.pdf) (Section 3) for details.
7276
2. Tweak `Make.inc` if you are not satisfied.
7377
3. run `make`;
7478
4. Go into the test subdirectory and build the examples of your choice.
75-
5. (if desired): `make install`
79+
5. (if desired): `make install` or `sudo make install` if the install path requires privileged access.
7680

81+
>[!CAUTION]
7782
>The single precision version is supported only by MUMPS and SuperLU;
7883
>thus, even if you specify at configure time to use UMFPACK or SuperLU_Dist,
7984
>the corresponding preconditioner options will be available only from
8085
>the double precision version.
8186
87+
## CMAKE
88+
AMG4PSBLAS supports building with CMake. To configure the project, you must explicitly provide the path where PSBLAS is installed. If this path is not specified, the configuration will fail with a fatal error.
89+
90+
From the root directory of the project, run:
91+
### 1. Create and enter the build directory
92+
```
93+
mkdir build
94+
cd build
95+
```
96+
97+
### 2. Configure the project (MANDATORY: specify your PSBLAS path)
98+
```
99+
cmake -DPSBLAS_INSTALL_DIR=</path/to/psblas/installation> ..
100+
```
101+
During this step, CMake will:
102+
- Search for the PSBLAS package in the provided path.
103+
- Detect and configure MPI (required for C, C++, and Fortran).
104+
- Set up include and module directories based on the PSBLAS configuration.
105+
- Configure integer sizes (IPK and LPK) to match the PSBLAS installation.
106+
### 2.1. Customizing the Installation Path
107+
By default, the library will be installed in standard system locations. To install amg4psblas in a custom directory, use the CMAKE_INSTALL_PREFIX variable:
108+
```
109+
cmake -DPSBLAS_INSTALL_DIR=</path/to/psblas/installation> \
110+
-DCMAKE_INSTALL_PREFIX=</path/to/amg4psblas_install> ..
111+
```
112+
113+
### 3. Compiling and Installing
114+
Once configured, you can build the libraries (amg_prec and amg_cbind) and install them.
115+
#### Build the library
116+
```
117+
make
118+
```
119+
120+
#### Install the library, modules, and samples
121+
```
122+
make install
123+
```
124+
125+
82126
### CUDA, OpeMP, OpenACC
83127

84-
CUDA, OpenMP and OpenACC features are transparently inherited by PSBLAS installation. If PSBLAS has been configured (and installed) with these supports then AMG4PSBLAS will transparently inherit them. It will then be possible to move the computation to GPU accelerator simply by selecting the appropriate variable types. If these have not been activated or installed for PSBLAS then they will not be available for AMG4PSBLAS either and the operation will be purely on CPU/MPI. See also the samples/cuda folder.
128+
CUDA, OpenMP and OpenACC features are transparently inherited by PSBLAS installation.
129+
If PSBLAS has been configured (and installed) with these supports then AMG4PSBLAS will
130+
transparently inherit them. It will then be possible to move the computation to GPU accelerator
131+
simply by selecting the appropriate variable types in the application.
132+
If the types have not been activated or installed for PSBLAS then they will not be
133+
available for AMG4PSBLAS either and the operation will be purely on CPU/MPI. See also the samples/cuda folder.
85134

86135
### EoCoE - Software as service portal
87136

88-
In the European project “Energy oriented Center of Excellence: toward exascale for energy” we made available a software as service portal: [https://eocoe.psnc.pl/](https://eocoe.psnc.pl/). This permits to test several cutting-edge computational methods for accelerating the transition to the production, storage and management of clean, decarbonized energy. Among them you have the possibility of running PSBLAS+AMG4PSBLAS on some test problems to become familiar with using the software.
137+
In the European project “Energy oriented Center of Excellence: toward exascale for energy” we made
138+
available the software through a service portal: [https://eocoe.psnc.pl/](https://eocoe.psnc.pl/).
139+
This permits to test several cutting-edge computational methods for accelerating the transition
140+
to production, storage and management of clean, decarbonized energy.
141+
Among them you have the possibility of running PSBLAS+AMG4PSBLAS on some test problems
142+
to become familiar with using the software.
143+
## MPI and Compilers
144+
The library has been successfully compiled and tested with the same compilers
145+
and MPI implementations as PSBLAS 3.9, which include:
146+
- MPICH 4.2.3, 4.3.0, 4.3.2
147+
- OpenMPI 4.1.8. 5.0.7, 5.0.8, 5.0.9
148+
149+
combined with
150+
151+
- GNU compilers 10.5.0, 11.5.0, 12.5.0, 13.3.0, 14.2.0 14.3.0, 15.2.0
152+
- LLVM 20.1.0 and 21.1.0 (except OpenMPI 4.1.8 which does not build with LLVM)
153+
154+
Moreover, it has been tested with the Intel OneAPI toolchain versions 2025.2 and 2025.3
155+
156+
As of this release, the NVIDIA compiler 25.7 fails to handle our code.
157+
Cray, IBM and NAg compilers have been used for testing in the past, but not on this version.
89158

90159
## TODO and bugs
91160

@@ -103,8 +172,8 @@ In the European project “Energy oriented Center of Excellence: toward exascale
103172
**Contributors** (_roughly reverse cronological order_):
104173

105174
- Luca Pepè Sciarria
106-
- Andea Di Iorio
107-
- Ambra Abdullahi Hassan
175+
- Andrea Di Iorio
176+
- Ambra Abdullahi Hassan
108177
- Alfredo Buttari
109178

110179
License

_products/psblas.md

Lines changed: 132 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@ Library releases for PSBLAS.
2626

2727
|Release | Date | Sources | Documentation |
2828
|--------|------|--------------------------------|---------------------------|
29+
| Version 3.9.0 | December 23, 2025 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3/archive/refs/tags/v3.9.0.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3/archive/refs/tags/v3.9.0.tar.gz) | [![PDF](/img/pdficon.png){:height="24px" width="24px"}](/psblasguide/psblas-3.9.pdf){:target="_blank"} |
2930
| Version 3.9-RC3 | July 23, 2025 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3/archive/refs/tags/v3.9.0-rc3.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3/archive/refs/tags/v3.9.0-rc3.tar.gz) | [![PDF](/img/pdficon.png){:height="24px" width="24px"}](/psblasguide/psblas-3.9-rc3.pdf){:target="_blank"} |
3031

3132
Library releases can be downloaded from: [psblas3/releases](https://github.com/sfilippone/psblas3/releases)
3233

3334

35+
3436
## References
3537

3638

@@ -77,14 +79,13 @@ The main reference for the serial sparse BLAS is:
7779
7880
## Installing
7981

80-
To compile and run our software you will need the following
81-
prerequisites (see also SERIAL below):
82+
To compile (using configure/make/make install) and run our software
83+
you will need the following
84+
prerequisites (see also SERIAL below):
8285

83-
1. A working version of MPI
86+
1. A working version of MPI.
8487

85-
2. A version of the BLAS; if you don't have a specific version for your
86-
platform you may try ATLAS available from
87-
http://math-atlas.sourceforge.net/
88+
2. A version of the BLAS; you can specify a specific version with `--with-blas`
8889

8990
3. We have had good results with the METIS library, from
9091
https://github.com/KarypisLab/METIS.
@@ -96,29 +97,39 @@ prerequisites (see also SERIAL below):
9697
We use the C interface to AMD.
9798

9899
6. If you have CUDA available, use
99-
--enable-cuda to compile CUDA-enabled methods
100-
--with-cudadir=<path> to specify the CUDA toolkit location
101-
--with-cudacc=XX,YY,ZZ to specify a list of target CCs (compute
102-
capabilities) to compile the CUDA code for.
103-
104-
The configure script will generate a Make.inc file suitable for building
100+
- `--enable-cuda` to compile CUDA-enabled methods
101+
- `--with-cudadir=<path>` to specify the CUDA toolkit location
102+
- `--with-cudacc=XX,YY,ZZ` to specify a list of target CCs (compute
103+
capabilities).
104+
CUDA versions have specific compatibility requirements;
105+
for example:
106+
- CUDA version 11.8 supports GNU compilers up to version 11
107+
- CUDA versions 12.3 through 12.6 support GNU compilers up to version 13
108+
- CUDA versions 12.8 and 12.9 support GNU compilers up to version 14
109+
- CUDA version 13.0 supports GNU compilers up to version 15
110+
For further information please refer to the CUDA documentation at
111+
https://developer.nvidia.com/cuda/gpus
112+
113+
The configure script will generate a `Make.inc` file suitable for building
105114
the library. The script is capable of recognizing the needed libraries
106115
with their default names; if they are in unusual places consider adding
107116
the paths with `--with-libs`, or explicitly specifying the names in
108117
`--with-blas`, etc.
109118

119+
>[!CAUTION]
110120
> Please note that a common way for the configure script
111121
> to fail is to specify inconsistent MPI vs. plain compilers, either
112122
> directly or indirectly via environment variables; e.g. specifying the
113123
> Intel compiler with `FC=ifort` while at the same time having an
114124
> `MPIFC=mpif90` which points to GNU Fortran.
115125
126+
>[!TIP]
116127
> The best way to avoid this
117128
> situation is (in our opinion) to use the environment modules package
118129
> (see [http://modules.sourceforge.net/](http://modules.sourceforge.net/)), and load the relevant
119130
> variables with (e.g.)
120131
> ```
121-
> module load gcc/13.2.0 openmpi/4.1.6
132+
> module load gcc/14.2.0 openmpi/5.0.8
122133
> ```
123134
> This will delegate to the modules setup to make sure that the version of
124135
> openmpi in use is the one compiled with the gnu46 compilers. After the
@@ -130,11 +141,20 @@ After you have Make.inc fixed, run
130141
make
131142
```
132143
to compile the library; go to the test directory and its subdirectories
133-
to get test programs done. If you specify `--prefix=/path` you can do make
134-
install and the libraries will be installed under `/path/lib`, while the
135-
module files will be installed under `/path/modules`. The regular and
136-
experimental C interface header files are under `/path/include`.
137-
144+
to get test programs done.
145+
You can then install with
146+
```
147+
make install
148+
```
149+
We recommend specifying `--prefix=/path` in the configure step, so that
150+
the libraries will be installed under `/path/lib`,
151+
the module files will be installed under `/path/modules`, the documentation under `/path/docs` and so on.
152+
The C interface header files are under `/path/include`.
153+
If `/path` is a system directory, you may need
154+
```
155+
sudo make install
156+
```
157+
If you do not specifye `--with-prefix` the usual default of `/usr` applies.
138158
### Packaging changes, CUDA and GPU support
139159
140160
This version of PSBLAS incorporates into a single package three
@@ -145,12 +165,12 @@ entities that were previously separated:
145165
| PSBLAS-EXT | a library providing additional storage formats for matrices and vectors |
146166
| SPGPU | a package of kernels for NVIDIA GPUs originally written by Davide Barbieri and Salvatore Filippone; see the license file [cuda/License-spgpu.md](cuda/License-spgpu.md) |
147167
148-
Moreover, the module and library previously called psb_krylovv are now called
168+
Moreover, the module and library previously called psb_krylov are now called
149169
psb_linsolve, but their usage is otherwise unchanged.
150170
151171
### OpenACC
152172
There is a highly experimental version of an OpenACC interface,
153-
you can access it by speficifying
173+
you can compile it by speficifying
154174
```bash
155175
--enable-openacc --with-extraopenacc="-foffload=nvptx-none=-march=sm_70"
156176
```
@@ -168,7 +188,7 @@ cover what we use internally, it's not a complete replacement).
168188
### Integers
169189

170190
We have two kind of integers: IPK for local indices, and LPK for
171-
global indices. They can be specified independently at configure time,
191+
global indices. Their size can be specified at configure time,
172192
e.g.
173193
```bash
174194
--with-ipk=4 --with-lpk=8
@@ -177,11 +197,96 @@ which is asking for 4-bytes local indices, and 8-bytes global indices
177197
(this is the default).
178198

179199
## CMAKE
180-
There is initial support for building with CMAKE. As of this time, it does not compile the CUDA part.
200+
PSBLAS supports building with CMake (version 3.11 or higher). This method handles the automatic detection of compilers, MPI, and linear algebra libraries.
201+
Standard Compilation (Without CUDA)
202+
To perform a standard compilation, run:
203+
### 1. Create and enter a dedicated build directory
204+
```
205+
mkdir build
206+
cd build
207+
```
208+
### 2. Configure the project
209+
```
210+
cmake ..
211+
```
212+
### 3. Compile the libraries
213+
```
214+
make
215+
```
216+
If you wish to install PSBLAS in a specific location (similar to using the --prefix option in the legacy configure script), you must define the CMAKE_INSTALL_PREFIX variable.
217+
To set a custom installation path, run the configuration command as follows:
218+
#### Example: Installing PSBLAS to a specific folder in your home directory
219+
```
220+
cmake -DCMAKE_INSTALL_PREFIX=/home/user/psblas_install
221+
```
222+
### Compiling with CUDA Support
223+
To enable GPU support via CUDA, you must set the PSB_BUILD_CUDA option to ON during the configuration step.
224+
Important Compatibility Note: CUDA support is strictly incompatible with 8-byte local integers. If you manually set CMAKE_PSB_IPK to 8, CUDA support will be automatically disabled by the system.
225+
To build with CUDA enabled:
181226

182-
## LLVM
183-
The library has been successfully compiled and tested with LLVM version 20.1.0-rc2.
227+
```
228+
cmake -DPSB_BUILD_CUDA=ON ..
229+
```
230+
The compilation then proceed as before through make
231+
When this flag is active, CMake will search for the CUDAToolkit, enable the CUDA language, and define necessary macros such as PSB_HAVE_CUDA.
232+
233+
### Customizing Integer Sizes
234+
You can override the default integer sizes (4-byte local IPK and 8-byte global LPK) using the following variables:
235+
Example: Using 8-byte global integers (default) and 4-byte local integers
236+
```
237+
cmake -DCMAKE_PSB_IPK=4 -DCMAKE_PSB_LPK=8 ..
238+
```
239+
240+
### 4. Installation
241+
To install the libraries, header files, and Fortran modules to your system (or a custom path defined by -DCMAKE_INSTALL_PREFIX), run:
242+
```
243+
make install
244+
```
245+
The files will be organized into the lib, include, and modules subdirectories within the installation prefix, same as the configure build.
246+
## MPI and Compilers
247+
The library has been successfully compiled and tested with multiple compilers
248+
and MPI implementations; this release has been successfully tested with:
249+
- MPICH 4.2.3, 4.3.0, 4.3.2
250+
- OpenMPI 4.1.8. 5.0.7, 5.0.8, 5.0.9
251+
252+
combined with
253+
254+
- GNU compilers 10.5.0, 11.5.0, 12.5.0, 13.3.0, 14.2.0 14.3.0, 15.2.0
255+
- LLVM 20.1.0 and 21.1.0 (except OpenMPI 4.1.8 which does not build with LLVM)
256+
257+
Moreover, it has been tested with the Intel OneAPI toolchain versions 2025.2 and 2025.3
258+
259+
As of this release, the NVIDIA compiler 25.7 fails to handle our code.
260+
Cray, IBM and NAg compilers have been used for testing in the past, but not on this version.
184261

262+
## Documentation
263+
264+
Further information on installation and configuration can be found in the documentation.
265+
See [docs/psblas-3.9.pdf](docs/psblas-3.9.pdf); an HTML version of the same document is
266+
available in docs/html. Please consult the sample programs, especially
267+
- [test/pdegen/psb_s_pde2d.F90](test/pdegen/psb_s_pde2d.F90) [test/pdegen/psb_d_pde2d.F90](test/pdegen/psb_d_pde2d.F90)
268+
- [test/pdegen/psb_s_pde2d.F90](test/pdegen/psb_s_pde3d.F90) [test/pdegen/psb_d_pde2d.F90](test/pdegens/psb_d_pde3d.F90)
269+
270+
which contain examples for the solution of linear systems obtained by the discretization of a generic second-order differential equation in two:
271+
```math
272+
- a_1 \frac{\partial^2 u}{\partial x^2}
273+
- a_2 \frac{\partial^2 u}{\partial y^2}
274+
+ b_1 \frac{\partial u}{\partial x}
275+
+ b_2 \frac{\partial u}{\partial y}
276+
+ c u = f
277+
```
278+
or three
279+
```math
280+
- a_1 \frac{\partial^2 u}{\partial x^2}
281+
- a_2 \frac{\partial^2 u}{\partial y^2}
282+
- a_3 \frac{\partial^2 u}{\partial z^2}
283+
+ b_1 \frac{\partial u}{\partial x}
284+
+ b_2 \frac{\partial u}{\partial y}
285+
+ b_3 \frac{\partial u}{\partial z}
286+
+ c u = f
287+
```
288+
dimensions on the unit square/cube with Dirichlet boundary conditions.
289+
185290
### Utilities
186291

187292
The [test/util](test/util) directory contains some utilities to convert to/from
@@ -204,27 +309,25 @@ Salvatore Filippone
204309

205310
**Contributors** (_roughly reverse cronological order_):
206311

312+
- Fabio Durastante
207313
- Luca Pepè Sciarria
208314
- Theophane Loloum
209-
- Fabio Durastante
210315
- Dimitri Walther
316+
- Pasqua D'Ambra
211317
- Andea Di Iorio
212318
- Stefano Petrilli
213319
- Soren Rasmussen
214320
- Zaak Beekman
215321
- Ambra Abdullahi Hassan
216-
- Pasqua D'Ambra
217322
- Alfredo Buttari
218323
- Daniela di Serafino
324+
- Thomas Amestoy
219325
- Michele Martone
220326
- Michele Colajanni
221327
- Fabio Cerioni
222328
- Stefano Maiolatesi
223329
- Dario Pascucci
224330

225-
226-
227-
228331
# For versions prior to 3.9
229332

230333
The **PSBLAS library**, developed with the aim to facilitate the
1.79 MB
Binary file not shown.

psblasguide/psblas-3.9.pdf

2.74 MB
Binary file not shown.

0 commit comments

Comments
 (0)