I have been trying to run an example form the getting started section of the concrete-numpy documentation for quite some time. Unfortunately, I still haven’t been successful.
Okay, so an illegal instruction was reached, which can be caused by two things:
You have an old CPU that doesn’t support AES instructions
You have a CPU that supports those instructions, but they aren’t being exposed to the virtual machine.
First case is quite complicated, as we currently make use of AES instructions during key generation, and we will have to release a future version that supports CPUs without these instructions. If you have another machine with a CPU that supports them, then you can just try there.
Second case is about enabling these instructions to be accessible to the VM. So you want to search “how to enable aes cpu instructions on …” with the virtualization software you are using.
First of all, thanks for the kind support in this community!
Indeed, the AES instructions have not been exposed to the virtual machine.
I managed to make this work by updating virtualbox.
Now, AES instructions are available, as you can see in the console output.
Let’s try to get some other info to figure out what’s happening:
To confirm it’s happening during keygen, could you run your script interactively, but instead of encrypt_run_decrypt, just run circuit.keygen()? Your interpreter should fail during this call
Also, what is the host machine (the machine you are running virtualbox on)?
Could you also give the output of lscpu from the virtual machine? As well as the host machine (or other equivalent command if not Linux)
Sorry for the late reply. I was busy with other stuff.
Finally, I got my hands on a pure linux machine, where everything works fine.
I suppose, the issue is somehow related to having a Win10 Host PC and an Ubuntu Client. As I can work now, I won’t pursue to find a solution any further.
Thanks a lot for your support! This community is very helpful!