JuliaLang/julia

`JULIA_NUM_THREADS` ignored when embedding Julia on a Windows system

オープン

#55,468 opened on 2024/08/12

 (1 件のコメント) (0 件のリアクション) (0 人の担当者)Julia (5,773 件のフォーク)batch import
bughelp wantedsystem:windows

Repository metrics

Stars
 (48,709 個のスター)
PR merge metrics
 (PR metrics pending)

説明

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

コントリビューターガイド