JuliaLang/julia

`JULIA_NUM_THREADS` ignored when embedding Julia on a Windows system

Aperta

#55.468 aperta il 12 ago 2024

 (1 commento) (0 reazioni) (0 assegnatari)Julia (5773 fork)batch import
bughelp wantedsystem:windows

Metriche repository

Star
 (48.709 stelle)
Metriche merge PR
 (Merge medio 20g 6h) (157 PR mergiate in 30 g)

Descrizione

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).

Guida contributor