unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Konrad Hinsen <konrad.hinsen@fastmail.net>
To: zimoun <zimon.toutoune@gmail.com>
To: Guix Devel <guix-devel@gnu.org>
To: Ricardo Wurmus <rekado@elephly.net>
Subject: Re: Investigating a reproducibility failure
Date: Thu, 03 Feb 2022 10:16:55 +0100	[thread overview]
Message-ID: <m17dacb988.fsf@fastmail.net> (raw)
In-Reply-To: <CAJ3okZ3p0L9_KLjsOS+C1Jk6N7SbujTE7ygtA=u7BXRgkVZs3A@mail.gmail.com>

Hi Ricardo and Simon,

Thanks for your insight! I didn't even know about lscpu. The output for
my laptop is shown below. I tried building on a virtual machine, and
that works fine.

> CPU detection is a bottomless can of worms.

That sounds very credible. But what can we do about this?

There is obviously a trade-off between reproducibility and performance
here. Can we support both, in a way that users can understand and manage?

The OpenBlas package in Guix is (or at least was, back then) written for
performance. Can I, as a user, ask for a reproducible version? That
could either be a generic version for any x86 architecture (preferably),
or one that always builds for a given sub-architecture and then fails at
runtime if the CPU doesn't match.

Next: can I, as a user of dependent code, ask for reproducible versions
of all my dependencies? In my case, I was packaging Python code that
calls OpenBlas via NumPy. Many people in that situation don't even know
what OpenBlas is. I did know, but wasn't aware of the build-time CPU
detection.

There is of course the issue that we can never be sure if a build will
be reproducible in the future. But we can at least take care of the
cases where the packager is aware of non-reproducibility issues, and
make them transparent and manageable.

Cheers,
  Konrad

--8<---------------cut here---------------start------------->8---
$ lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   39 bits physical, 48 bits virtual
CPU(s):                          8
On-line CPU(s) list:             0-7
Thread(s) per core:              2
Core(s) per socket:              4
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           140
Model name:                      11th Gen Intel(R) Core(TM) i7-1185G7 @ 3.00GHz
Stepping:                        1
CPU MHz:                         1800.000
CPU max MHz:                     4800,0000
CPU min MHz:                     400,0000
BogoMIPS:                        3609.60
Virtualization:                  VT-x
L1d cache:                       192 KiB
L1i cache:                       128 KiB
L2 cache:                        5 MiB
L3 cache:                        12 MiB
NUMA node0 CPU(s):               0-7
Vulnerability Itlb multihit:     Not affected
Vulnerability L1tf:              Not affected
Vulnerability Mds:               Not affected
Vulnerability Meltdown:          Not affected
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via p
                                 rctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user poi
                                 nter sanitization
Vulnerability Spectre v2:        Mitigation; Enhanced IBRS, IBPB conditional, RSB fi
                                 lling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pg
                                 e mca cmov pat pse36 clflush dts acpi mmx fxsr sse 
                                 sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm cons
                                 tant_tsc art arch_perfmon pebs bts rep_good nopl xt
                                 opology nonstop_tsc cpuid aperfmperf tsc_known_freq
                                  pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm
                                 2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 
                                 x2apic movbe popcnt tsc_deadline_timer aes xsave av
                                 x f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault
                                  epb cat_l2 invpcid_single cdp_l2 ssbd ibrs ibpb st
                                 ibp ibrs_enhanced tpr_shadow vnmi flexpriority ept 
                                 vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2
                                  erms invpcid rdt_a avx512f avx512dq rdseed adx sma
                                 p avx512ifma clflushopt clwb intel_pt avx512cd sha_
                                 ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves
                                  split_lock_detect dtherm ida arat pln pts hwp hwp_
                                 notify hwp_act_window hwp_epp hwp_pkg_req avx512vbm
                                 i umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq 
                                 avx512_vnni avx512_bitalg tme avx512_vpopcntdq rdpi
                                 d movdiri movdir64b fsrm avx512_vp2intersect md_cle
                                 ar flush_l1d arch_capabilities
--8<---------------cut here---------------end--------------->8---


  reply	other threads:[~2022-02-03  9:17 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-02 20:35 Investigating a reproducibility failure zimoun
2022-02-02 23:43 ` zimoun
2022-02-03  9:16   ` Konrad Hinsen [this message]
2022-02-03 11:41     ` Ricardo Wurmus
2022-02-03 17:05       ` Konrad Hinsen
2022-02-03 12:07     ` zimoun
2022-02-05 14:12     ` Ludovic Courtès
2022-02-15 14:10       ` Bengt Richter
2022-02-16 12:03         ` zimoun
2022-02-16 13:04           ` Konrad Hinsen
2022-02-17 11:21             ` zimoun
2022-02-17 16:55               ` Konrad Hinsen
  -- strict thread matches above, loose matches on Subject: below --
2022-02-01 14:05 Konrad Hinsen
2022-02-01 14:30 ` Konrad Hinsen
2022-02-02 23:19   ` Ricardo Wurmus
2022-02-02 23:36     ` Ricardo Wurmus
2022-02-05 14:05 ` Ludovic Courtès
2022-02-08  5:57   ` Konrad Hinsen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m17dacb988.fsf@fastmail.net \
    --to=konrad.hinsen@fastmail.net \
    --cc=zimon.toutoune@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).