You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+30-1Lines changed: 30 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,9 +30,10 @@ To install either the CPU or the GPU solvers, use the `install.sh` script which
30
30
-a or --all enable all above flags except 'assert'
31
31
--ncolors disable colors in all solver outputs
32
32
--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
34
34
--gextra="flags" pass extra "flags" to the GPU compiler (nvcc)
35
35
--cextra="flags" pass extra "flags" to the CPU compiler (g++)
36
+
--cuarena=<path> path to cuArena root (default: dep/cuarena; NONE to disable)
36
37
37
38
38
39
### GPU solver
@@ -51,6 +52,34 @@ installation guide in https://docs.nvidia.com/cuda/.
51
52
Now the GPU solver is ready to install by running the install script via the command `./install.sh -g`.
52
53
The `parafrost` binary, the library `libparafrost.a`, and the main include file `solver.hpp` will be created by default in the build directory.<br>
53
54
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:
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
+
54
83
### CPU solver
55
84
To build a CPU-only version of the solver, run `./install.sh -c`.<br>
0 commit comments