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

Re: marginPhase illegal instruction (through test and manual invocation of binary marginPhase)



Hi Shayan,

Shayan Doust, on 2020-06-29 20:24:33 +0100:
> Ahhh. My knowledge of some CPU instruction sets, especially that of bit
> manipulation, is very limited, so I didn't know -mpopcnt had that much
> of an implication over the test. I can confirm that removing this does
> in fact pass the tests.

Glad it helped.  :)

> I assume the best course of action is to keep this flag removed because
> not all end user machines would support an instruction like this,
> however I have seen some packages such as mmseqs2[1] test for various
> instruction sets such as that of the SSE family, so should something
> like popcnt be conditionally set if the build supports such instruction
> set or would a single instruction set such as popcnt not be significant
> enough for all this trouble?

> [1] https://salsa.debian.org/med-team/mmseqs2/-/blob/master/debian/rules

Normally yes, we want the greatest common denominator of
instructions available on all variants of a same architecture,
so the package can run everywhere; otherwise users get illegal
instruction errors and get angry.  Some programs may have
special tuning for dynamically recognizing instructions
availability, and branch accordingly to the fastest path (Linux
RAID error correction code for instance).

In the case of mmseq2, there is a binding to the SIMDe
library[2], which eases building a whole set of variants of the
same program, each variant being tuned to a particular CPU's
vector instructions capabilities.  Well at least, that is how I
understood it.  Other persons such as Michael have spent a lot
of time on this, and may explain the principle much better than
myself.  As far as I can tell, popcnt are bit instructions, so
are not covered by SIMDe, so I think for the moment that
disabling the option should be good enough.

[2] https://github.com/simd-everywhere/simde

Kind Regards,
-- 
Étienne Mollier <etienne.mollier@mailoo.org>
Fingerprint:  5ab1 4edf 63bb ccff 8b54  2fa9 59da 56fe fff3 882d
Help find cures against the Covid-19 !  Give CPU cycles:
  * Rosetta@home: https://boinc.bakerlab.org/rosetta/
  * Folding@home: https://foldingathome.org/

Attachment: signature.asc
Description: PGP signature


Reply to: