diff options
author | Anton Khirnov <anton@khirnov.net> | 2018-12-27 11:25:30 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2018-12-27 11:56:47 +0100 |
commit | ebb69e5e3765c0a65f92d4eb5e4ae8ba56c23f94 (patch) | |
tree | 9ab88212e897e7c4f32a5bca312c7a1208239c46 /mg2d.c | |
parent | 8b99b8dc65863c60f0473dc0bfeeaf6f8dd2550e (diff) |
Add CPU feature detection.
Will be used for dynamically dispatching future asm functions.
Diffstat (limited to 'mg2d.c')
-rw-r--r-- | mg2d.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -24,6 +24,7 @@ #include <string.h> #include "common.h" +#include "cpu.h" #include "ell_relax.h" #include "log.h" #include "mg2d.h" @@ -54,6 +55,8 @@ struct MG2DInternal { MG2DLevel *root; + int cpuflags; + int64_t time_solve; int64_t count_solve; @@ -343,6 +346,7 @@ static int mg_levels_init(MG2DContext *ctx) cur->solver->step[0] = prev->solver->step[0] * ((double)(prev->solver->domain_size[0] - 1) / (cur->solver->domain_size[0] - 1)); cur->solver->step[1] = prev->solver->step[1] * ((double)(prev->solver->domain_size[1] - 1) / (cur->solver->domain_size[1] - 1)); } + cur->solver->cpuflags = priv->cpuflags; cur->solver->fd_stencil = ctx->fd_stencil; @@ -497,6 +501,8 @@ MG2DContext *mg2d_solver_alloc(size_t domain_size) priv->logger.log = log_callback; priv->logger.opaque = ctx; + priv->cpuflags = mg2di_cpu_flags_get(); + for (int i = 0; i < ARRAY_ELEMS(ctx->boundaries); i++) { const size_t boundary_len_max = domain_size + 2 * (FD_STENCIL_MAX - 1); |