LGro / PyAPSI

Python wrapper for labeled and unlabeled asymmetric private set intersection (APSI).
MIT License
14 stars 6 forks source link

why avx2 causes this issue during dynamic linking? #21

Open capricornsky0119 opened 6 months ago

capricornsky0119 commented 6 months ago

We find the same problem on a special cpu (i.e., Intel Xenon E5-2620 v4), while it works fine on other CPUs (e.g., Intel 8336).

Can you provide more details for this issue (i.e., illegal instruction), for example, the explaination from Intel or gcc or Cmake ...

Thanks!

https://github.com/LGro/PyAPSI/blob/main/docker/base.Dockerfile#L13-L17

LGro commented 6 months ago

Hi, from what I've seen this issue arises when APSI is built on a system with certain platform extensions supported by the present CPU and the resulting binary then being used on less capable systems that do not support the same extensions like AVX2, see also #11 and #13. In a way the APSI build is "too smart" with its context awareness of detecting available ways to e.g. accelerate computation; the flipside of this is that my approach of trying to build APSI once and ship it to all kinds of systems is flawed. Instead of distributing a wheel we should probably distribute PyAPSI as source and build it on each target system on installation including the compilation of APSI. But I don't know how to do that yet and my focus has unfortunately shifted away from APSI. But if you have ideas or would like to figure out source distribution and automated, self contained building on the target system, it would do the community a great service.