Skip to content

Commit aefd5d2

Browse files
committed
Updated libraries description
1 parent e405eca commit aefd5d2

5 files changed

Lines changed: 192 additions & 40 deletions

File tree

_products/amg4psblas.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ features:
1414
icon: fa-network-wired
1515
- label: Excellent innovation in the EU Innovation Radar
1616
icon: fa-star
17-
order: 3
17+
order: 2
1818
---
1919

2020
Algebraic Multigrid Package based on [PSBLAS](https://github.com/sfilippone/psblas3) (Parallel Sparse BLAS version 3.9)

_products/psblas.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ subtitle: Parallel Sparse BLAS
44
description: Parallel Sparse Basic Linear Algebra Subroutines
55
product_code: PSBLAS
66
layout: product
7-
image: /img/psblaslibrary.png
7+
image: /img/psblaslibraryext.png
88
features:
99
- label: Great addition to any scientific project
1010
icon: fa-plus-square

_products/psblasext.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ subtitle: Parallel Sparse BLAS GPU Plugin
44
description: Parallel Sparse BLAS for an hybrid MPI-NVIDIA code
55
product_code: PSBLAS-EXT
66
layout: product
7-
image: /img/psblaslibraryext.png
7+
image: /img/psblaslibraryext_discontinued.png
88
features:
99
- label: Add NVIDIA-GPU capabilities to your code
1010
icon: fa-microchip
1111
- label: Tested on thousands of GPUs
1212
icon: fa-fighter-jet
13-
order: 2
13+
order: 4
1414
---
1515

1616
> ⚠️ **Attention:** Starting from **PSBLAS version 3.9**, the **PSBLAS-EXT** library is no longer required, as it has been fully integrated into the main **PSBLAS** library.

_products/psctoolkit.md

Lines changed: 188 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,67 +8,219 @@ image: /img/psctoolkit.png
88
features:
99
- label: PSBLAS Parallel Sparse BLAS
1010
icon: fa-code
11-
- label: PSBLAS-EXT GPU Plugin for Parallel Sparse BLAS
12-
icon: fa-puzzle-piece
1311
- label: AMG4PSBLAS Preconditioners for PSBLAS
1412
icon: fa-tachometer-alt
1513
- label: Excellent innovation in the EU Innovation Radar
1614
icon: fa-star
17-
order: 4
15+
order: 3
1816
---
1917

20-
This is the complete set of libraries that goes under the name PSCToolkit. To have the latest aligned version you can use the [psctoolkit repository](https://github.com/psctoolkit/psctoolkit).
21-
It contains the various libraries that make up the Parallel Sparse Computation Toolkit (PSCToolkit) as submodules.
18+
# PSCToolkit
2219

23-
- PSBLAS
24-
- PSBLAS-EXT
25-
- AMG4PSBLAS
20+
PSCToolkit is a suite of libraries for high‑performance sparse linear algebra on distributed memory systems, with optional GPU acceleration. It includes:
2621

27-
Moreover, it contains a version of the SUNDIALS library interfacing the PSCToolkit routines for linear algebra (distributed matrices and vectors), linear solvers and preconditioners.
22+
- PSBLAS — Parallel Sparse BLAS (distributed sparse matrices and vectors)
23+
- AMG4PSBLAS — Algebraic Multigrid preconditioners and solvers for PSBLAS
24+
- SUNDIALS (integration) — ODE/DAE solvers interfaced with PSBLAS
2825

29-
## How to get
26+
Project home: https://psctoolkit.github.io/
27+
GitHub: https://github.com/psctoolkit/psctoolkit
28+
Docker Hub: https://hub.docker.com/r/psctoolkit/psctoolkit
29+
30+
## Get the Code
31+
32+
### Stable (master)
3033

31-
To clone the **latest version** do
3234
```bash
33-
git clone https://github.com/psctoolkit/psctoolkit.git
35+
git clone --recurse-submodules https://github.com/psctoolkit/psctoolkit.git
3436
```
35-
or if you want to use ssh:
37+
38+
### Development (bleeding edge)
39+
3640
```bash
37-
git clone git@github.com:psctoolkit/psctoolkit.git
41+
git clone --recurse-submodules https://github.com/psctoolkit/psctoolkit.git
42+
cd psctoolkit
43+
git checkout development
44+
git submodule update --init --recursive
3845
```
39-
To keep it updated with the changes in the individual repositories, use the command:
46+
47+
To update submodules to their tracked branches:
48+
4049
```bash
41-
git submodule update --init --recursive
50+
git submodule update --recursive --remote
51+
```
52+
53+
> The submodules are pinned to mutually compatible versions. Switching branches or pulling arbitrarily inside submodules may break compatibility.
54+
55+
## Docker Images
56+
57+
Prebuilt images are published on Docker Hub via GitHub Actions:
58+
59+
- `psctoolkit/psctoolkit:latest` — built from the `master` branch (stable)
60+
- `psctoolkit/psctoolkit:development` — built from the `development` branch
61+
62+
### Pull
63+
64+
```bash
65+
# Stable
66+
docker pull psctoolkit/psctoolkit:latest
67+
68+
# Development
69+
docker pull psctoolkit/psctoolkit:development
70+
```
71+
72+
### Run
73+
74+
```bash
75+
# CPU-only container
76+
docker run -it psctoolkit/psctoolkit:development /bin/bash
77+
78+
# GPU-enabled (requires NVIDIA Container Toolkit)
79+
docker run --gpus all -it psctoolkit/psctoolkit:development /bin/bash
80+
```
81+
82+
Inside the container, libraries are installed under:
83+
84+
- `/usr/local/psctoolkit/include` — headers and Fortran modules
85+
- `/usr/local/psctoolkit/lib` — libraries
86+
87+
### What’s Inside the Image
88+
89+
Base: `nvidia/cuda:13.0.2-devel-ubuntu24.04` (Ubuntu 24.04 + CUDA 13).
90+
91+
Installed components:
92+
- Build tools: gcc/g++, gfortran, cmake, git, OpenMPI
93+
- Math: OpenBLAS, SuiteSparse (incl. UMFPACK, AMD), METIS
94+
- Direct solvers: SuperLU, SuperLU_DIST, MUMPS
95+
- PSCToolkit libraries compiled with:
96+
- PSBLAS: OpenMP enabled; CUDA enabled for compute capabilities 60, 70, 80, 89, 90
97+
- AMG4PSBLAS: support for SuperLU, SuperLU_DIST, MUMPS, UMFPACK
98+
99+
Source code is available at `/home/work/psctoolkit/` inside the container.
100+
101+
### Compile and Run Examples
102+
103+
```bash
104+
# Fortran + PSBLAS
105+
mpif90 -I/usr/local/psctoolkit/modules your_code.f90 \
106+
-L/usr/local/psctoolkit/lib -lpsb_linsolve -lpsb_prec -lpsb_util -lpsb_base -o your_program
107+
108+
# With AMG4PSBLAS
109+
mpif90 -I/usr/local/psctoolkit/modules your_code.f90 \
110+
-L/usr/local/psctoolkit/lib -lamg_prec -lpsb_prec -lpsb_linsolve -lpsb_util -lpsb_base -o your_program
111+
112+
# With CUDA support
113+
mpif90 -I/usr/local/psctoolkit/modules your_code.f90 \
114+
-L/usr/local/psctoolkit/lib -lpsb_ext -lpsb_cuda -lspgpu -lpsb_linsolve -lpsb_prec -lpsb_util -lpsb_base \
115+
-L/usr/local/cuda/lib64 -lcudart -lcublas -lcusparse -o your_program
116+
117+
# Run with MPI (example)
118+
mpirun -np 4 ./your_program
119+
```
120+
121+
### C Language Bindings
122+
123+
The C interfaces (Fortran/C interoperability via ISO_C_BINDING) are located in the cbind subdirectories:
124+
- psblas3/cbind (PSBLAS)
125+
- amg4psblas/cbind (AMG4PSBLAS)
126+
127+
They are built automatically with the normal build; no separate configure step is required.
128+
129+
After installation, the binding headers are placed under the main include prefix (e.g. /usr/local/psctoolkit/include). Header filenames follow the library naming used in the cbind directories (inspect that directory for the exact names; typical patterns group PSBLAS and AMG4PSBLAS symbols separately).
130+
131+
### GPU Runtime Prerequisites
132+
133+
- NVIDIA GPU (compute capability ≥ 6.0: Pascal, Volta, Turing, Ampere, Hopper)
134+
- NVIDIA Container Toolkit installed on the host
135+
136+
Quick install (Ubuntu/Debian):
137+
138+
```bash
139+
# Install NVIDIA Container Toolkit (see NVIDIA docs for details)
140+
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
141+
curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
142+
curl -fsSL https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
143+
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
144+
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
145+
sudo systemctl restart docker
42146
```
43-
or to execute ```git pull``` inside each of the folders to synchronize to the latest version.
44147

45-
**Warning:** the various submodules point to mutually compatible versions of the library. Branch switching and pull operations could damage compatibility, especially moving into development branches. The easiest way is to download the latest **stable release**. This contains all versions of the packages that can be compiled together.
148+
Verify:
46149

47-
| PSCToolkit Stable Version | Libraries | |
48-
|---------------------------|------------------|--------------------|
49-
| Version 1.0.0 | PSBLAS 3.7.0.1 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3/archive/refs/tags/V3.7.0.1.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3/archive/refs/tags/V3.7.0.1.tar.gz) |
50-
| | AMG4PSBLAS 1.0.0 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/amg4psblas/archive/refs/tags/V1.0.0.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/amg4psblas/archive/refs/tags/V1.0.0.tar.gz) |
51-
| | PSBLAS-EXT 1.3.0 | [![ZIP](/img/zipicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3-ext/archive/refs/tags/V1.3.0.zip) [![Archive](/img/archiveicon.png){:height="24px" width="24px"}](https://github.com/sfilippone/psblas3-ext/archive/refs/tags/V1.3.0.tar.gz) |
150+
```bash
151+
docker run --gpus all psctoolkit/psctoolkit:development nvidia-smi
152+
```
52153

53-
## How to install
154+
## Build From Source (Development)
54155

55-
The possible installation order are:
156+
Requirements:
157+
- C/C++ (gcc/g++), Fortran (gfortran)
158+
- MPI (OpenMPI or MPICH)
159+
- BLAS/LAPACK (OpenBLAS, MKL, etc.)
160+
- Optional: CUDA Toolkit; SuiteSparse; METIS; SuperLU; SuperLU_DIST; MUMPS
56161

57-
1. PSBLAS -> PSBLAS-EXT -> AMG4PSBLAS -> SUNDIALS
58-
2. PSBLAS -> AMG4PSBLAS -> PSBLAS-EXT -> SUNDIALS
59-
3. PSBLAS -> AMG4PSBLAS
162+
### PSBLAS
60163

164+
```bash
165+
cd psblas3
166+
./configure --prefix=/usr/local/psctoolkit \
167+
--with-amdlibdir=/usr/lib/x86_64-linux-gnu/ \
168+
--with-amdincdir=/usr/include/suitesparse/ \
169+
--with-metislibdir=/usr/lib/x86_64-linux-gnu/ \
170+
--with-ipk=4 --with-lpk=4 \
171+
--enable-openmp
61172

62-
Each of the libraries contains its own installation instructions. See information on [https://psctoolkit.github.io/libraries/](https://psctoolkit.github.io/libraries/) for each of them.
173+
# CUDA (optional)
174+
# add: --enable-cuda \
175+
# --with-cudadir=/usr/local/cuda \
176+
# --with-cudacc=60,70,80,89,90
63177

64-
### Docker container
178+
make -j$(nproc)
179+
make install
180+
```
65181

66-
We have also available an *experimental* Docker container containing the installation of the core libraries PSBLAS, PSBLAS-EXT, and AMG4PSBLAS (without GPU support). Such container is a unit of software packaging up the source code, the compiled version of the library, and all the relevant dependencies. The idea is to have a version of the PSCToolkit that can run quickly and reliably from one computing environment to another.
182+
### AMG4PSBLAS
67183

68-
The container is available on [dockerhub](https://hub.docker.com/r/psctoolkit/psctoolkit). If you have a version of Docker installed on your
69-
machine, you can use the image by doing
70184
```bash
71-
docker pull psctoolkit/psctoolkit
185+
cd amg4psblas
186+
./configure --prefix=/usr/local/psctoolkit \
187+
--with-psblas=/usr/local/psctoolkit \
188+
--with-superlulibdir=/usr/lib/x86_64-linux-gnu \
189+
--with-superluincdir=/usr/include/superlu/ \
190+
--with-superludistlibdir=/usr/lib/x86_64-linux-gnu \
191+
--with-superludistincdir=/usr/include/superlu-dist/ \
192+
--with-mumpslibdir=/usr/lib/x86_64-linux-gnu \
193+
--with-mumpsincdir=/usr/include \
194+
--with-umfpacklibdir=/usr/lib/x86_64-linux-gnu \
195+
--with-umfpackincdir=/usr/include/suitesparse/
196+
197+
make -j$(nproc)
198+
make install
72199
```
73-
The library is installed under `/usr/local/psctoolkit`. The container is built upon the latest long term release of Ubuntu and uses the packaged versions of the software to fulfill the PSCToolkit prerequisites and
74-
the auxiliary libraries.
200+
201+
### SUNDIALS (optional)
202+
203+
See instructions inside the `sundials/` submodule.
204+
205+
## Continuous Integration
206+
207+
Images are built and pushed automatically by GitHub Actions:
208+
- `latest` on pushes to `master` → Docker tag `psctoolkit/psctoolkit:latest`
209+
- `development` on pushes to `development` → Docker tag `psctoolkit/psctoolkit:development`
210+
211+
## Links and Support
212+
213+
- Website: https://psctoolkit.github.io/
214+
- GitHub: https://github.com/psctoolkit/psctoolkit
215+
- Docker Hub: https://hub.docker.com/r/psctoolkit/psctoolkit
216+
- Documentation: https://psctoolkit.github.io/libraries/
217+
- Publications: https://psctoolkit.github.io/publication/
218+
- Email: psctoolkit@na.iac.cnr.it
219+
220+
## Citation
221+
222+
If PSCToolkit helped your research, please cite the relevant libraries. See the [Publications page](https://psctoolkit.github.io/publication/).
223+
224+
## License
225+
226+
Each component retains its original license (generally BSD 3‑Clause). Refer to the respective repositories for details.
60.3 KB
Loading

0 commit comments

Comments
 (0)