diff --git a/examples/main.c b/examples/main.c index a86cdc60a7473e84e8fba8c32417e7e19ebaeb60..c0b191d58ff6ac2acfdf6f6d184739ff17799f0c 100644 --- a/examples/main.c +++ b/examples/main.c @@ -153,12 +153,6 @@ int main(int argc, char *argv[]) { #endif -/* Let's pin the main thread */ -#if defined(HAVE_SETAFFINITY) && defined(HAVE_LIBNUMA) && defined(_GNU_SOURCE) - if (((ENGINE_POLICY)&engine_policy_setaffinity) == engine_policy_setaffinity) - engine_pin(); -#endif - /* Welcome to SWIFT, you made the right choice */ if (myrank == 0) greetings(); @@ -329,6 +323,12 @@ int main(int argc, char *argv[]) { return 1; } +/* Let's pin the main thread, now we know if affinity will be used. */ +#if defined(HAVE_SETAFFINITY) && defined(HAVE_LIBNUMA) && defined(_GNU_SOURCE) + if (with_aff && ((ENGINE_POLICY)&engine_policy_setaffinity) == engine_policy_setaffinity) + engine_pin(); +#endif + /* Genesis 1.1: And then, there was time ! */ clocks_set_cpufreq(cpufreq); diff --git a/src/engine.c b/src/engine.c index 65d541bab1c428aa6e0c719a847554563aa0b489..901824000ca9a4311ab1d19ac0da52f226d14990 100644 --- a/src/engine.c +++ b/src/engine.c @@ -4468,8 +4468,9 @@ void engine_init(struct engine *e, struct space *s, /* Avoid (unexpected) interference between engine and runner threads. We can * do this once we've made at least one call to engine_entry_affinity and * maybe numa_node_of_cpu(sched_getcpu()), even if the engine isn't already - * pinned. Also unpin this when asked to not pin at all (!with_aff). */ - engine_unpin(); + * pinned. */ + if (with_aff) + engine_unpin(); #endif if (with_aff) {