You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(Making this so Bryan sees it for libypkg rewrite).
Currently the avx2_shift_lib command in rc.yml dumps everything into /usr/lib64/haswell/*, this is wrong for packages which install themselves to /usr/lib64/packagename. avx2_shift_lib will install such packages to /usr/lib64/haswell/packagename, however, glibc actually tries to load haswell libs from /usr/lib64/packagename/haswell
Strace output from glibc 2.33 (which also searches the new glibc-hwcaps directories)
openat(AT_FDCWD, "/usr/lib64/gvfs/glibc-hwcaps/x86-64-v3/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/glibc-hwcaps/x86-64-v3", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/glibc-hwcaps/x86-64-v2/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/glibc-hwcaps/x86-64-v2", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/tls/haswell/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/tls/haswell/x86_64", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/tls/haswell/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/tls/haswell", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/tls/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/tls/x86_64", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/tls/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/tls", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/haswell/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/haswell/x86_64", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/haswell/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/haswell", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/x86_64/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/usr/lib64/gvfs/x86_64", 0x7fff9cfe9cb0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/usr/lib64/gvfs/libgvfscommon.so", O_RDONLY|O_CLOEXEC) = 4
Setting %libdir% back to /usr/lib64/haswell (which special care taken for the glibc package) or manually mangling the libs after the install step to /usr/lib64/packagename/haswell would fix this.
Potentially, .so.avx2files could be skipped so patching packages which dlopen their modules would be easier.
The text was updated successfully, but these errors were encountered:
This is a non-issue at the moment, since avx2 is really only used with a few key libraries where performance has been thoroughly tested and the libs are in the libdir anyways. gvfs isn't something I'd generally consider a candidate for haswell optimizations.
gvfs was only used an an example as the strace was handy, but yeah it would unlock enabling avx2 in a few more packages, i believe I ran into this originally when looking into avx2 for octave.
I don't really think it's worth it in octave. I looked at this in the past and it gets most benefit from its dependencies getting AVX2 (fftw, openblas). The rest of the internal stuff is either a light wrapper for those functions or awful interpreter code that's beyond saving.
(Making this so Bryan sees it for libypkg rewrite).
Currently the avx2_shift_lib command in rc.yml dumps everything into /usr/lib64/haswell/*, this is wrong for packages which install themselves to
/usr/lib64/packagename
. avx2_shift_lib will install such packages to/usr/lib64/haswell/packagename
, however, glibc actually tries to load haswell libs from/usr/lib64/packagename/haswell
Strace output from glibc 2.33 (which also searches the new glibc-hwcaps directories)
Setting %libdir% back to /usr/lib64/haswell (which special care taken for the glibc package) or manually mangling the libs after the install step to /usr/lib64/packagename/haswell would fix this.
Potentially,
.so.avx2
files could be skipped so patching packages which dlopen their modules would be easier.The text was updated successfully, but these errors were encountered: