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

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



Hello Étienne,

Thanks for your reply.

> Looking into the paste, I see among the whole lot of options
> that the compiler uses "-mpopcnt", which generates machine
> dependent CPU instructions.  Since your CPU does probably not
> have popcnt support, it chokes when running on this instruction,
> and the operating system aborts the program with an illegal
> instruction error.
>
> I have not spotted other machine dependent options (they start
> with -m) in the compilation command line, so this might just be
> a matter of removing the "-mpopcnt" flag hopefully.

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.

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?

Kind regards,
Shayan Doust


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

On 29/06/2020 19:44, Étienne Mollier wrote:
> Hi Shayan,
> 
> Shayan Doust, on 2020-06-29 12:48:53 +0100:
>> If anyone knows or can spot why illegal instruction is thrown, this
>> would be much appreciated! I have tried to disable optimisation but that
>> has not helped. Here is a log to my build attempt
>> (https://paste.debian.net/1154344/).
> 
> Looking into the paste, I see among the whole lot of options
> that the compiler uses "-mpopcnt", which generates machine
> dependent CPU instructions.  Since your CPU does probably not
> have popcnt support, it chokes when running on this instruction,
> and the operating system aborts the program with an illegal
> instruction error.
> 
> I have not spotted other machine dependent options (they start
> with -m) in the compilation command line, so this might just be
> a matter of removing the "-mpopcnt" flag hopefully.
> 
> Kind Regards,
> 

Attachment: 0x6D7D441919D02395.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: