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
+11-2Lines changed: 11 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,6 +57,7 @@ The main highlights of our SVM implementations are:
57
57
1. Drop-in replacement for LIBSVM's `svm-train`, `svm-predict`, and `svm-scale` (some features currently not implemented).
58
58
2. Support of multiple different programming frameworks for parallelization (also called backends in our PLSSVM implementation) which allows us to target GPUs and CPUs from different vendors like NVIDIA, AMD, or Intel:
59
59
-[OpenMP](https://www.openmp.org/)
60
+
-[HPX](https://hpx.stellar-group.org/)
60
61
-[stdpar](https://en.cppreference.com/w/cpp/algorithm) (supported implementations are [nvc++](https://developer.nvidia.com/hpc-sdk) from NVIDIA's HPC SDK, [roc-stdpar](https://github.com/ROCm/roc-stdpar) as a patched LLVM, [icpx](https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compiler.html) as Intel's oneAPI compiler, [AdaptiveCpp](https://github.com/AdaptiveCpp/AdaptiveCpp), and [GNU GCC](https://gcc.gnu.org/) using TBB). <br>
61
62
**Note**: due to the nature of the used USM mechanics in the `stdpar` implementations, the `stdpar` backend **can't** be enabled together with **any** other backend! <br>
62
63
**Note**: since every translation units need to be compiled with the same flag, we currently globally set `CMAKE_CXX_FLAGS` although it's discouraged in favor of `target_compile_options`.
@@ -105,6 +106,10 @@ Additional dependencies for the stdpar backend:
@@ -196,7 +196,7 @@ The following table lists all PLSSVM enumerations exposed on the Python side:
196
196
|`FileFormatType`|`LIBSVM`, `ARFF`| The different supported file format types (default: `LIBSVM`). |
197
197
|`GammaCoefficientType`|`AUTOMATIC`, `SCALE`| The different modes for the dynamic gamma calculation (default: `AUTOMATIC`). |
198
198
|`ClassificationType`|`OAA`, `OAO`| The different supported multi-class classification strategies (default: `LIBSVM`). |
199
-
|`BackendType`|`AUTOMATIC`, `OPENMP`, `CUDA`, `HIP`, `OPENCL`, `SYCL`| The different supported backends (default: `AUTOMATIC`). If `AUTOMATIC` is provided, the selected backend depends on the used target platform. |
199
+
|`BackendType`|`AUTOMATIC`, `OPENMP`, `HPX`, `CUDA`, `HIP`, `OPENCL`, `SYCL`| The different supported backends (default: `AUTOMATIC`). If `AUTOMATIC` is provided, the selected backend depends on the used target platform. |
200
200
|`VerbosityLevel`|`QUIET`, `LIBSVM`, `TIMING`, `FULL`| The different supported log levels (default: `FULL`). `QUIET` means no output, `LIBSVM` output that is as conformant as possible with LIBSVM's output, `TIMING` all timing related outputs, and `FULL` everything. Can be combined via bit-wise operations. |
201
201
|`Status`|`UNINITIALIZED`, `INITIALIZED`, `FINALIZED`, `UNNECESSARY`| The different environment status values. **Note**: located in the `plssvm.environment` module. ||
202
202
@@ -337,6 +337,10 @@ If the most performant backend should be used, it is sufficient to use `plssvm.C
337
337
`sycl_implementation_type` to choose between DPC++ and AdaptiveCpp as SYCL implementations
338
338
and `sycl_kernel_invocation_type` to choose between the two different SYCL kernel invocation types.
339
339
340
+
**Note**: if the backend type is `plssvm.BackendType.HPX` it is necessary to initialize and finalize the HPX runtime.
341
+
The runtime can be manually managed using `plssvm.environment.initialize()` and `plssvm.environment.finalize()`.
342
+
We recommend utilizing `plssvm.environment.ScopeGuard()` to manage the lifetime of the HPX runtime automatically.
.value("AUTOMATIC", plssvm::backend_type::automatic, "the default backend; depends on the specified target platform")
22
23
.value("OPENMP", plssvm::backend_type::openmp, "OpenMP to target CPUs only (currently no OpenMP target offloading support)")
24
+
.value("HPX", plssvm::backend_type::hpx, "HPX to target CPUs only (currently no GPU executor support)")
23
25
.value("STDPAR", plssvm::backend_type::stdpar, "C++ standard parallelism to target CPUs and GPUs from different vendors based on the used stdpar implementation; supported implementations are: nvhpc (nvc++), roc-stdpar, AdaptiveCpp, Intel LLVM (icpx), and GNU GCC + TBB")
24
26
.value("CUDA", plssvm::backend_type::cuda, "CUDA to target NVIDIA GPUs only")
25
27
.value("HIP", plssvm::backend_type::hip, "HIP to target AMD and NVIDIA GPUs")
0 commit comments