|
Neko 1.99.9
A portable framework for high-order spectral element flow simulations
|
#include <stdlib.h>#include <stdio.h>#include <math.h>#include <hip/hip_runtime.h>#include <device/device_config.h>#include <device/hip/check.h>

Go to the source code of this file.
Classes | |
| struct | neko_tune_verify_t |
| struct | neko_tune_rej_t |
Macros | |
| #define | NEKO_EB_SWEEP_DEFAULT 1 |
| #define | NEKO_TUNE_INIT 1.0e30f |
| #define | NEKO_TUNE_WARMUP 20 |
| #define | NEKO_TUNE_FOR(C, ON, PIN, N) |
| #define | NEKO_TUNE_TIME(T, LAUNCH, LX, C, ITERS) |
| #define | NEKO_TUNE_US(T, ITERS) ((T) * 1000.0 / (double) (ITERS)) |
| #define | NEKO_TUNE_BEST(T, BEST, N) |
| #define | NEKO_TUNE_LOG_1D(LX, T1) |
| #define | NEKO_TUNE_LOG_KSTEP(LX, T2) |
| #define | NEKO_TUNE_LOG(LX, T1, T2) |
| #define | NEKO_TUNE_VERIFY_DEFAULT 1 |
| #define | NEKO_TUNE_VERIFY_BLOCKS 256 |
| #define | NEKO_TUNE_VERIFY_THREADS 256 |
| #define | NEKO_TUNE_VERIFY_MAXIN 8 |
| #define | NEKO_TUNE_MAXCAND 16 |
| #define | NEKO_TUNE_VERIFY_CAND(VF, REJ, LAUNCH, LX, C, NAME) |
| #define | NEKO_TUNE_APPLY_REJ(T, REJ, N) |
Functions | |
| static int | neko_eb_sweep () |
| static int | neko_eb_pin () |
| static int | neko_chunks_pin () |
| static int | neko_tune_rounds () |
| static int | neko_tune_iters () |
| static int | neko_tune_verify_on () |
| static double | neko_tune_verify_tol () |
| static __global__ void | neko_tune_fill_kernel (real *__restrict__ x, const int n, const unsigned int seed) |
| static __global__ void | neko_tune_diff_kernel (const real *__restrict__ a, const real *__restrict__ b, const int n, double *__restrict__ part) |
| static int | neko_tune_verify_begin (neko_tune_verify_t *v, real **outs, const int nout, void ***ins, const int nin, const int n, hipStream_t stream) |
| static void | neko_tune_verify_ref (neko_tune_verify_t *v, hipStream_t stream) |
| static int | neko_tune_verify_check (neko_tune_verify_t *v, hipStream_t stream, double *maxdiff, double *maxref) |
| static void | neko_tune_verify_end (neko_tune_verify_t *v, hipStream_t stream) |
| #define NEKO_EB_SWEEP_DEFAULT 1 |
Shared autotuner scaffolding for the SEM operator kernels
Each operator's tune() picks between the 1d variant and the kstep variant, and – when sweeping is enabled – between the elements per block candidates in elem_block.h. The sampling is interleaved and min reduced: timing the variants one after another in a fixed order lets clock drift bias the comparison by candidate position, which no amount of extra iterations removes.
NEKO_AUTOTUNE takes a formulation out of the tuner's hands, but only the formulation: the geometry candidates of the one it names are still measured and reported, and it takes that formulation's own variable (NEKO_EB, NEKO_CHUNKS, ...) to fix the geometry too. Pinning the formulation used to imply candidate 0, which silently answered a different question than the one an A/B run of two formulations is asking. See NEKO_TUNE_FOR() below.
A tune function using these macros is expected to have start, stop and stream in scope — and iters for the reporting macros — plus a CASE_1D(LX) macro and a kstep launch macro taking (LX, C).
Definition at line 79 of file elem_block_tune.h.
Definition at line 498 of file elem_block_tune.h.
| #define NEKO_TUNE_INIT 1.0e30f |
Definition at line 82 of file elem_block_tune.h.
Definition at line 226 of file elem_block_tune.h.
Definition at line 205 of file elem_block_tune.h.
Definition at line 215 of file elem_block_tune.h.
| #define NEKO_TUNE_MAXCAND 16 |
Definition at line 281 of file elem_block_tune.h.
Definition at line 173 of file elem_block_tune.h.
Definition at line 193 of file elem_block_tune.h.
| #define NEKO_TUNE_VERIFY_BLOCKS 256 |
Definition at line 277 of file elem_block_tune.h.
Definition at line 484 of file elem_block_tune.h.
| #define NEKO_TUNE_VERIFY_DEFAULT 1 |
Definition at line 275 of file elem_block_tune.h.
| #define NEKO_TUNE_VERIFY_MAXIN 8 |
Definition at line 279 of file elem_block_tune.h.
| #define NEKO_TUNE_VERIFY_THREADS 256 |
Definition at line 278 of file elem_block_tune.h.
| #define NEKO_TUNE_WARMUP 20 |
Definition at line 83 of file elem_block_tune.h.
|
static |
Definition at line 318 of file elem_block_tune.h.


|
static |
Definition at line 304 of file elem_block_tune.h.


|
static |
Definition at line 381 of file elem_block_tune.h.


|
static |
|
static |
Definition at line 471 of file elem_block_tune.h.


Definition at line 283 of file elem_block_tune.h.


|
static |
Definition at line 423 of file elem_block_tune.h.


Definition at line 293 of file elem_block_tune.h.

