I installed Q2 on my ESXi virtual machine (6 CPUs x Intel(R) Xeon(R) W-2133 CPU @ 3.60GHz, Ubuntu 18.04.2) with conda as the official instruction. The installation runs well, but every time when I try to activate the q2 I get the sam error:
QIIME is caching your current deployment for improved performance. This may take a few moments and should only happen once per deployment.
Illegal instruction (core dumped)
I tried to uninstall the qiime2 environment and reinstall it, like this:
This sounds remarkably similar to this thread which was running QIIME 2 in virtualbox. The ultimate conclusion was that virtualbox was mis-configured/not correctly supported for the CPU, as a Hyper-V installation worked fine on the same CPU.
That said, we super don’t understand what specifically triggers this, so all we know at this point is it has something to do with virtualization (apparently T2 and now T1 hypervisors, like ESXi, can cause it…).
Are you willing to help us debug this? I can see about creating some test situations and we can see when/where it actually breaks. No promises that it can actually be fixed however until we figure out what it is exactly.
So my suspicion is that numpy or scipy are maybe causing this, could you run the following inside your QIIME 2 environment? (whenever you get the chance, it’s pretty late where I am)
python -c "import numpy"
and
python -c "import scipy"
If neither of those do anything impressive, then I’ll see about writing a script to load plugins one by one to try and narrow this down.
Alright! I’ll do some research to try and figure out what could be going on. I think there’s some things we can set with numpy to make it use CPU flags differently, but I’m not certain.
I’m not sure, but it wouldn’t hurt to try. It would give us more information.
However, conda-forge seems to move a little bit quickly and they tend to delete/move their packages when they find a bad build, so I wouldn’t be shocked if some of our older environment files don’t work quite like they should. You should be able to delete the offending lines in the environment file to force conda to create a new resolution, but I wouldn’t use the resulting environment for anything serious.
After a little bit of poking around it looks like numpy recently added a CPU probe which has caused similar issues for others on a VM. This seems to be a result of executing an AVX instruction where the hypervisor isn’t prepared to support it.
According to the spec sheet, your processor definitely has AVX2 (and AVX 512, which is it’s own story). So it seems ESXi isn’t providing those instructions to the guest OS. I’m not an expert on anything VMWare, but maybe this is something others have dealt with? Googling around I didn’t see anything particularly obvious.
This thread seems like roughly the right direction. It seems either you upgrade ESXi, or mask the CPUID to look like an older CPU (which I expect numpy would have no problem with).