DevHeads.net

Packages optimized for very specific x86_64 "x" generation (OpenSUSE OBS / Fedora Koji)

As darktable co-maintainer, today I was speaking with darix from
OpenSUSE community, which maintains such package on that distro.
On their OBS build system, they are able to build various packages each
one optimized for a single x86_64 CPU generation using @BUILD_FLAVOR@ +
_multibuild file.[1] So for example they have packages
darktable-broadwell
darktable-ivybridge
darktable-sandybridge
darktable-skylake
darktable-skylake-avx512

 darix also said "that is an OBS feature, nothing that you can just copy
to koji[...]"
"there is no generic solution to this for a normal distro package".

I would like to study a way to make darktable (sub)packages very
optimized for each CPU generation, so I am asking you if that is
possible on Fedora, and what I should study to achieve it.

Best regards

[1]:
<a href="https://build.opensuse.org/package/show/home:darix:darktable:master/darktable" title="https://build.opensuse.org/package/show/home:darix:darktable:master/darktable">https://build.opensuse.org/package/show/home:darix:darktable:master/dark...</a>

Comments

Re: Packages optimized for very specific x86_64 "x" generation (

By Stephen John Smoogen at 04/14/2018 - 19:06

On 13 April 2018 at 09:47, Germano Massullo <germano. ... at gmail dot com> wrote:
I would prefer if you also didn't do this with koji. This is more of a
feature for copr as you are exploding out the amount of storage that
the distribution uses by each of these architectures. [And if one
package wants cpu specialization, then many packages will want it even
if it doesn't make sense because the optimized cpu instruction speed
is completley lost in anything that asks for memory or disk.

Re: Packages optimized for very specific x86_64 "x" generation (

By Dominik 'Rathan... at 04/13/2018 - 10:40

On Friday, 13 April 2018 at 15:47, Germano Massullo wrote:
On Fedora 27+ (glibc 2.26+), you can use the standard way of building
optimized libraries and putting them in platform and capability-specific
directories, e.g.:
/usr/lib64/haswell
/usr/lib64/haswell/avx512_1
/usr/lib64/xeon_phi

It's not the same as OBS does, but it's better than nothing.

See this article for more information
<a href="https://clearlinux.org/blogs/transparent-use-library-packages-optimized-intel-architecture" title="https://clearlinux.org/blogs/transparent-use-library-packages-optimized-intel-architecture">https://clearlinux.org/blogs/transparent-use-library-packages-optimized-...</a>

Regards,
Dominik