JuliaLang/julia

`JULIA_NUM_THREADS` ignored when embedding Julia on a Windows system

Ouverte

#55 468 ouverte le 12 août 2024

 (1 commentaire) (0 réaction) (0 personne assignée)Julia (5 773 forks)batch import
bughelp wantedsystem:windows

Métriques du dépôt

Stars
 (48 709 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

The following c# code...

Environment.SetEnvironmentVariable("JULIA_NUM_THREADS", "4");
jl_init_with_image__threading(mBinPath, mSysImg);
jl_eval_string("println(\"Threads=$(Threads.nthreads())\")");
jl_eval_string("println(\"JULIA_NUM_THREADS=$(ENV[\"JULIA_NUM_THREADS\"])\")");

Produces the following output

Threads=1
JULIA_NUM_THREADS=4

In discussions with the Jeff and Keno it appears this happens in Windows because there are several environment stores in Windows, and the threads are created by reading with getenv (which access the machine level environment), while later in Julia the ENV is retrieved using getenvw (which access the process level environment).

Guide contributeur