Types
OmpChunkCallback = proc (start, end: int64; context: pointer) {.cdecl.}
OmpLoopCallback = proc (idx: int64; context: pointer) {.cdecl.}
Procs
proc ompGetNumThreads(): cint {.importc: "omp_get_num_threads_wrapper", cdecl, ...raises: [], tags: [], forbids: [].}
- Get number of available OpenMP threads
proc ompParallelFor(start, end: int64; callback: OmpLoopCallback; context: pointer) {.importc: "omp_parallel_for", cdecl, ...raises: [], tags: [], forbids: [].}
- CPU parallel for loop with static scheduling (per-iteration callback)
proc ompParallelForChunked(start, end: int64; callback: OmpChunkCallback; context: pointer) {. importc: "omp_parallel_for_chunked", cdecl, ...raises: [], tags: [], forbids: [].}
- CPU parallel for loop with chunked dispatch (range per thread) Each thread receives a contiguous [start, end) range, enabling the callback to iterate with compiler auto-vectorization.
proc ompSetNumThreads(numThreads: cint) {. importc: "omp_set_num_threads_wrapper", cdecl, ...raises: [], tags: [], forbids: [].}
- Set number of threads