Skip to content

Commit d507200

Browse files
committed
fix CI and updated readme
1 parent cd4334e commit d507200

2 files changed

Lines changed: 38 additions & 12 deletions

File tree

.github/workflows/test-build.yml

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,13 @@ on:
1212

1313
jobs:
1414
build:
15-
16-
runs-on: ubuntu-24.04
17-
15+
runs-on: ubuntu-latest
16+
container: nvidia/cuda:12.6.0-devel-ubuntu24.04
1817
steps:
19-
- uses: actions/checkout@v3
20-
- name: configure
21-
run: |
22-
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
23-
sudo dpkg -i cuda-keyring_1.1-1_all.deb
24-
sudo apt-get update
25-
sudo apt-get -y install cuda-toolkit-12-8
26-
- name: make check
18+
- uses: actions/checkout@v4
19+
- name: Install dependencies
20+
run: apt-get update && apt-get install -y cmake git build-essential
21+
- name: Clone cuarena
22+
run: git clone https://github.com/muhos/cuArena.git $HOME/cuarena
23+
- name: Build
2724
run: bash install.sh -c -g

README.md

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,10 @@ To install either the CPU or the GPU solvers, use the `install.sh` script which
3030
-a or --all enable all above flags except 'assert'
3131
--ncolors disable colors in all solver outputs
3232
--clean=<target> remove old installation of <cpu | gpu | all> solvers
33-
--standard=<n> compile with <11 | 14 | 17> c++ standard
33+
--standard=<n> compile with <14 | 17 | 20> c++ standard
3434
--gextra="flags" pass extra "flags" to the GPU compiler (nvcc)
3535
--cextra="flags" pass extra "flags" to the CPU compiler (g++)
36+
--cuarena=<path> path to cuArena root (default: dep/cuarena; NONE to disable)
3637

3738

3839
### GPU solver
@@ -51,6 +52,34 @@ installation guide in https://docs.nvidia.com/cuda/.
5152
Now the GPU solver is ready to install by running the install script via the command `./install.sh -g`.
5253
The `parafrost` binary, the library `libparafrost.a`, and the main include file `solver.hpp` will be created by default in the build directory.<br>
5354

55+
#### cuArena device pool backend
56+
57+
The GPU solver can optionally use [cuArena](https://github.com/muhos/cuArena) as its GPU memory backend. cuArena pre-allocates a single contiguous GPU pool at startup and services all subsequent allocations entirely in host-side C++ with no `cudaMalloc` call per allocation. For ParaFROST this eliminates driver overhead during inprocessing, where the simplifier repeatedly allocates and frees buffers across many simplifying rounds.
58+
59+
The pool is split into two regions:
60+
- **Stable**: long-term data that persists across simplification rounds; never moved by compaction.
61+
- **Dynamic**: the temporary buffers, which grow and shrink each phase. Defragmentation is supported and performed automatically when needed.
62+
63+
To enable it, clone cuArena into `dep/cuarena` (the default search path) before building:
64+
65+
```bash
66+
mkdir -p dep
67+
git clone https://github.com/muhos/cuArena.git dep/cuarena
68+
./install.sh -g
69+
```
70+
71+
If cuArena is found and CMake is available, the install script automatically builds it and links it in (`-DUSE_CUARENA`). To point to a different location:
72+
73+
```bash
74+
./install.sh -g --cuarena=/path/to/cuarena
75+
```
76+
77+
To build without cuArena even if the directory exists:
78+
79+
```bash
80+
./install.sh -g --cuarena=NONE
81+
```
82+
5483
### CPU solver
5584
To build a CPU-only version of the solver, run `./install.sh -c`.<br>
5685

0 commit comments

Comments
 (0)