Closed Fred-07 closed 3 years ago
This suggests your CPU doesn't have appropriate SIMD instructions. What's the output of grep flags /proc/cpuinfo | head -1
?
Note that the current Bioconda version is old (v0.6.3b) and wasn't built by me. I'm trying to get this updated to v0.7.2.
You can also get the latest version from DockerHub (https://hub.docker.com/r/dancooke/octopus).
Thanks for your reply. The command outputs : flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pse36 clflush mmx fxsr sse sse2 syscall nx lm nopl pni cx16 hypervisor lahf_lm abm
Not more successful with the container :
singularity pull docker:dancooke/octopus
singularity exec -B $PWD "octopus_latest.sif" /opt/octopus/bin/octopus -v
Running the command outputs nothing.
I have the same Illegal instruction error occuring when submitting to some but not all nodes on our HPC cluster. In case it is helpful I've added information below.
cpuinfo flags nodes where this works:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 intel_pt ssbd mba ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm mpx rdt_a avx512f avx512dq rdseed adx clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts pku ospke spec_ctrl intel_stibp flush_l1d
cpuinfo flags for nodes getting Illegal instruction:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm ida arat pln pts spec_ctrl intel_stibp
Flags in first but not second:
'bmi2', 'fma', 'clflushopt', 'cqm_occup_llc', 'avx512cd', 'xgetbv1', 'cqm_mbm_local', 'cdp_l3', 'ospke', 'tsc_adjust', 'mpx', 'flush_l1d', 'sdbg', 'bmi1', 'avx512bw', 'hle', 'avx512vl', 'cqm_llc', 'avx2', 'avx512f', 'movbe', 'intel_pt', 'adx', 'epb', 'pku', 'rtm', 'cat_l3', 'art', 'cqm_mbm_total', 'clwb', 'rdseed', 'rdt_a', 'abm', 'mba', 'invpcid', '3dnowprefetch', 'xsavec', 'cqm', 'avx512dq'
(I have tried building from source but so far can't get this working even after installing required boost libraries and providing the path to compiled htslib).
I don't know if it would be possible to provide a compiled linux binary in a release on github, but I would be immensely grateful if you could!
Both container and conda installation are OK if I run octopus on the cluster and not on the frontend machine.
Cluster CPUs : flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm epb intel_ppin ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm xsaveopt cqm_llc cqm_occup_llc dtherm ida arat pln pts md_clear spec_ctrl intel_stibp flush_l1d
arch : x86_64
@david-a-parry Thanks - so it would appear the Bioconda build used AVX2 instructions. This is a bit tricky. Octopus can work with just SSE2, but it will run much faster, particularly in cancer mode, with AVX2. I'm somewhat reluctant to downgrade to SSE2 for the Bioconda build as I'd imagine the majority of HPC's will have AVX2 machines.
@Fred-07 The Docker build also uses AVX2 so that will explain why it's not working on your frontend machine. I'm currently re-building a new image for SandyBridge, so that should work more generally (but slower).
@dancooke That explains it - I've been able to find out from our computing support which are the old nodes that don't support AVX2 and will blacklist them when submitting Octopus jobs, so that's a decent workaround for me at least.
Thank you for explaining!
Description Installation with the following command completes without problem but octopus can not be run:
conda create -n Octopus -c conda-forge -c bioconda python=3.8 octopus
conda activate Octopus
octopus
It reports: Illegal instructionVersion 0.7.2
CentOS 7 (3.10.0-862.el7.x86_64)