It look this might be already fixed upstream: https://github.com/dlang/druntime/pull/2620 https://github.com/dlang/druntime/commit/0723a38a858aaaae83a9c5c0d43a0400571ef2a0
and could explain why ldc is showing correct values. On Sat, 9 May 2020 at 22:57, Witold Baryluk <witold.bary...@gmail.com> wrote: > > Package: gdc-10 > Version: 10.1.0-1 > Severity: normal > > Dear Maintainer, > > ==== > import std.stdio; > import core.cpuid; > void main() { > writefln("CPU: threads_per_cpu=%d; cores_per_cpu=%d; ht=%s; processor=%s", > threadsPerCPU(), coresPerCPU(), hyperThreading(), processor()); > } > ==== > > > # Using gdc-10 (10.1.0-1) and ligphobos1 (10.1.0-1) > CPU: threads_per_cpu=1; cores_per_cpu=32; ht=false; processor=AMD Ryzen > Threadripper 2950X 16-Core Processor > > # Using ldc (1:1.20.1-1) and libphobos2-ldc-shared-dev (= 1:1.20.1-1): > CPU: threads_per_cpu=32; cores_per_cpu=16; ht=true; processor=AMD Ryzen > Threadripper 2950X 16-Core Processor > > > As can be seen gdc-10 (and gdc-9 too) returns wrong values. > > I tried various optimization options, different -mcpu, static phobos > linking, etc. and they don't change it. > > I am running on a bare hardware (no kvm, Xen or qemu involved) with > kernel Linux 5.2.17. > > > For reference: > > $ lscpu > Architecture: x86_64 > CPU op-mode(s): 32-bit, 64-bit > Byte Order: Little Endian > Address sizes: 43 bits physical, 48 bits virtual > CPU(s): 32 > On-line CPU(s) list: 0-31 > Thread(s) per core: 2 > Core(s) per socket: 16 > Socket(s): 1 > NUMA node(s): 2 > Vendor ID: AuthenticAMD > CPU family: 23 > Model: 8 > Model name: AMD Ryzen Threadripper 2950X 16-Core > Processor > Stepping: 2 > Frequency boost: enabled > CPU MHz: 2431.075 > CPU max MHz: 3500.0000 > CPU min MHz: 2200.0000 > BogoMIPS: 6999.26 > Virtualization: AMD-V > L1d cache: 512 KiB > L1i cache: 1 MiB > L2 cache: 8 MiB > L3 cache: 32 MiB > NUMA node0 CPU(s): 0-7,16-23 > NUMA node1 CPU(s): 8-15,24-31 > Vulnerability L1tf: Not affected > Vulnerability Mds: Not affected > Vulnerability Meltdown: Not affected > Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass > disabled via prctl and s > eccomp > Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and > __user pointer sanit > ization > Vulnerability Spectre v2: Mitigation; Full AMD retpoline, IBPB > conditional, STIBP disab > led, RSB filling > Flags: fpu vme de pse tsc msr pae mce cx8 apic sep > mtrr pge mca cmov > pat pse36 clflush mmx fxsr sse sse2 ht > syscall nx mmxext fxs > r_opt pdpe1gb rdtscp lm constant_tsc > rep_good nopl nonstop_ts > c cpuid extd_apicid amd_dcm aperfmperf pni > pclmulqdq monitor > ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt > aes xsave avx f16c > rdrand lahf_lm cmp_legacy svm extapic > cr8_legacy abm sse4a mi > salignsse 3dnowprefetch osvw skinit wdt tce > topoext perfctr_c > ore perfctr_nb bpext perfctr_llc mwaitx cpb > hw_pstate sme ssb > d sev ibpb vmmcall fsgsbase bmi1 avx2 smep > bmi2 rdseed adx sm > ap clflushopt sha_ni xsaveopt xsavec xgetbv1 > xsaves clzero ir > perf xsaveerptr arat npt lbrv svm_lock > nrip_save tsc_scale vm > cb_clean flushbyasid decodeassists > pausefilter pfthreshold av > ic v_vmsave_vmload vgif overflow_recov > succor smca > $ > > $ numactl -s > policy: default > preferred node: current > physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 > 25 26 27 28 29 30 31 > cpubind: 0 1 > nodebind: 0 1 > membind: 0 1 > $ > > $ numactl --hardware > available: 2 nodes (0-1) > node 0 cpus: 0 1 2 3 4 5 6 7 16 17 18 19 20 21 22 23 > node 0 size: 64371 MB > node 0 free: 15527 MB > node 1 cpus: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 > node 1 size: 64497 MB > node 1 free: 678 MB > node distances: > node 0 1 > 0: 10 16 > 1: 16 10 > $ > > $ nproc > 32 > $ > > $ getconf -a | grep PROCESSORS > _NPROCESSORS_CONF 32 > _NPROCESSORS_ONLN 32 > $ > > $ cpuid > CPU 0: > vendor_id = "AuthenticAMD" > version information (1/eax): > processor type = primary processor (0) > family = 0xf (15) > model = 0x8 (8) > stepping id = 0x2 (2) > extended family = 0x8 (8) > extended model = 0x0 (0) > (family synth) = 0x17 (23) > (model synth) = 0x8 (8) > (simple synth) = AMD Ryzen (Pinnacle Ridge PiR-B2) [Zen+], 12nm > miscellaneous (1/ebx): > process local APIC physical ID = 0x0 (0) > cpu count = 0x20 (32) // <----- > CLFLUSH line size = 0x8 (8) > brand index = 0x0 (0) > brand id = 0x00 (0): unknown > feature information (1/edx): > ... > hyper-threading / multi-core supported = true // <----- > ... > feature information (1/ecx): > ... > ... > $ > > $ cpuid | grep ^CPU | wc -l > 32 > $ > > $ /proc/cpuinfo flags: > flags : ..... sse2 ht ..... > $ > > > Regards, > Witold > > -- System Information: > Debian Release: bullseye/sid > APT prefers unstable-debug > APT policy: (500, 'unstable-debug'), (500, 'unstable'), (1, > 'experimental-debug'), (1, 'experimental') > Architecture: amd64 (x86_64) > Foreign Architectures: i386 > > Kernel: Linux 5.2.0-3-amd64 (SMP w/32 CPU cores) > Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, > TAINT_UNSIGNED_MODULE > Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), > LANGUAGE=en_US.UTF-8 (charmap=UTF-8) > Shell: /bin/sh linked to /usr/bin/dash > Init: systemd (via /run/systemd/system) > LSM: AppArmor: enabled > > Versions of packages gdc-10 depends on: > ii g++-10 10.1.0-1 > ii gcc-10-base 10.1.0-1 > ii libc6 2.30-7 > ii libgmp10 2:6.2.0+dfsg-4 > ii libgphobos-10-dev 10.1.0-1 > ii libisl22 0.22.1-1 > ii libmpc3 1.1.0-1 > ii libmpfr6 4.0.2-1 > ii libzstd1 1.4.4+dfsg-3 > ii zlib1g 1:1.2.11.dfsg-2 > > gdc-10 recommends no packages. > > gdc-10 suggests no packages. > > -- no debconf information