[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [help] -- clp ftbfs on several architectures



On Tue, Dec 24, 2019 at 09:40:14AM +0100, Håvard Flaget Aasen wrote:
> I uploaded a new version of clp [1], This only builds an seven
> architectures,

To be exact: x86, and armhf.

> the old version built on all of them.
> Except for armel, they are all missing the same header file, immintrin.h
> This header file is shipped with gcc, but not all arch's have it.
> 
> The armel arch loads a replacement for immintrin.h, which also fails.

immintrin.h is for x86 only, arm_neon.h is for armhf and arm64 -- and on
armhf, it's not even in the arch baseline.

Without reading much of the code, though, a test on an old amd64 (Phenom 2)
of packages built on a very new amd64 (Pinnacle Ridge) show that at least in
stuff covered by the testsuite clp doesn't use AVX2 code when not available.

> This is the issue upstream. [2]

I see the #ifdef is wrong:

__arm__ matches 32-bit only.  That's neither sufficient nor necessary for
NEON support: armel can't use this without hand-crafted assembly as gcc
intrinsics are available only in hard-float mode, armhf _usually_ has NEON,
and arm64 always has it (shown as asimd in cpuinfo).

> What possibilities do i have with this one?
> 
> Revert to the old version?
> 
> Upload a new version with updated runtime-dependencies, no changes regarding
> build. Check with upstream regarding options for different architectures?
> 
> Any other possibilities?

I've verified that simply commenting out #include <immintrin.h> in the two
files that use it will do the right thing -- so that's enough for
non-optimized archs.

For arm64, you can check defined(__aarch64__) -- I've also verified that
this works.

> I will admit that both the research and testing on this package wasn't good
> enough.

I haven't looked at upstream code before sponsoring myself, and tested the
package only on new amd64.


By "verified" in this mail I mean:
 * compiles (incl. tests ran during build)
 * passes autopkgtest
but I don't know if ClpPackedMatrix and ClpSimplexDual are covered.  If not,
my testing was bogus.

> [1] https://tracker.debian.org/pkg/clp
> [2] https://github.com/coin-or/Clp/issues/106


Meow!
-- 
⢀⣴⠾⠻⢶⣦⠀ A MAP07 (Dead Simple) raspberry tincture recipe: 0.5l 95% alcohol,
⣾⠁⢠⠒⠀⣿⡁ 1kg raspberries, 0.4kg sugar; put into a big jar for 1 month.
⢿⡄⠘⠷⠚⠋⠀ Filter out and throw away the fruits (can dump them into a cake,
⠈⠳⣄⠀⠀⠀⠀ etc), let the drink age at least 3-6 months.


Reply to: