grimbough / rhdf5filters

Distributing additional HDF5 compression filters as an R package. Intended to be used with rhdf5, however the compiled filters can also be used with external applications.

Home Page:https://bioconductor.org/packages/rhdf5filters/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Assembler Error on linux gcc/8.1.0

mfrisoli126 opened this issue · comments

Hi, I think i'm getting the same assembler error message that the other guy was getting trying to install rhdf5filters on conda, except I am getting the error trying to install on a linux gcc server. I'm new to using gcc, so I'm sorry if anything in this post doesn't make sense; however, i'm hoping you can help since I have problem installing rhdf5filters on my own PCs, yet can't install it on a gcc cluster.

I am using modules: R/4.0.0_gcc and gcc/8.1.0

To install in R, i've tried:

BiocManager::install("rhdf5filters")

and

BiocManager::install('grimbough/rhdf5filters')

And the error message I get looks like this:

Bioconductor version 3.12 (BiocManager 1.30.10), R 4.0.0 (2020-04-24)
Installing github package(s) 'grimbough/rhdf5filters'
Downloading GitHub repo grimbough/rhdf5filters@HEAD
✔  checking for file ‘/tmp/Rtmp8EZmzn/remotes854535862d33/grimbough-rhdf5filters-120df60/DESCRIPTION’ (860ms)
─  preparing ‘rhdf5filters’:
✔  checking DESCRIPTION meta-information
─  cleaning src
─  running ‘cleanup’
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
─  building ‘rhdf5filters_1.3.4.tar.gz’
   
* installing *source* package ‘rhdf5filters’ ...
** using staged installation
configuring the BLOSC filter...
x86_CPU=true
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether C compiler accepts -msse2... yes
checking whether C compiler accepts -mavx2... yes
checking for gcc __builtin_cpu_init function... (cached) true
checking for x86 sse2 instruction support... yes
checking for x86 avx2 instruction support... no
configure: creating ./config.status
config.status: creating src/blosc/lib/blosc-1.20.1/Makefile
config.status: creating src/blosc/Makefile
configure:    HDF5_INCLUDE=/src
configure:    BZIP2_LIB=bzip2/libH5Zbz2.so
configure:    BLOSC_LIB=blosc/libH5Zblosc.so
configure:    LZF_LIB=lzf/libH5Zlzf.so
configure: creating ./config.status
config.status: creating src/blosc/lib/blosc-1.20.1/Makefile
config.status: creating src/blosc/Makefile
config.status: creating src/Makevars
** libs
make -C blosc
make[1]: Entering directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc'
make -C lib/snappy-1.1.1
make[2]: Entering directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc/lib/snappy-1.1.1'
g++ -std=gnu++11 -g -O2 -fpic -I/usr/local/include -I"/home/mf45w/R/x86_64-pc-linux-gnu-library/4.0/Rhdf5lib/include" -c snappy.cc
g++ -std=gnu++11 -g -O2 -fpic -I/usr/local/include -I"/home/mf45w/R/x86_64-pc-linux-gnu-library/4.0/Rhdf5lib/include" -c snappy-c.cc
g++ -std=gnu++11 -g -O2 -fpic -I/usr/local/include -I"/home/mf45w/R/x86_64-pc-linux-gnu-library/4.0/Rhdf5lib/include" -c snappy-sinksource.cc
g++ -std=gnu++11 -g -O2 -fpic -I/usr/local/include -I"/home/mf45w/R/x86_64-pc-linux-gnu-library/4.0/Rhdf5lib/include" -c snappy-stubs-internal.cc
make[2]: Leaving directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc/lib/snappy-1.1.1'
make -C lib/lz4-1.9.2
make[2]: Entering directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc/lib/lz4-1.9.2'
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -c lz4.c
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -c lz4hc.c
make[2]: Leaving directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc/lib/lz4-1.9.2'
make -C lib/zstd-1.4.5
make[2]: Entering directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc/lib/zstd-1.4.5'
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/debug.c -o common/debug.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/entropy_common.c -o common/entropy_common.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/error_private.c -o common/error_private.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/fse_decompress.c -o common/fse_decompress.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -I. -c common/pool.c -o common/pool.o -o common/pool.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/threading.c -o common/threading.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/xxhash.c -o common/xxhash.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c common/zstd_common.c -o common/zstd_common.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c compress/fse_compress.c -o compress/fse_compress.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c compress/hist.c -o compress/hist.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c compress/huf_compress.c -o compress/huf_compress.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c compress/zstd_compress.c -o compress/zstd_compress.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c compress/zstd_compress_literals.c -o compress/zstd_compress_literals.o
gcc -I/share/pkg/bzip2/1.0.6_fPIC_lib/include -I/share/pkg/pcre/8.40/include -I/share/pkg/xz/5.2.3/include -fpic -I. -I./common -DXXH_NAMESPACE=ZSTD_ -c compress/zstd_compress_sequences.c -o compress/zstd_compress_sequences.o
/tmp/cc0j5cGx.s: Assembler messages:
/tmp/cc0j5cGx.s:2763: Error: no such instruction: `shrx %eax,%ecx,%eax'
/tmp/cc0j5cGx.s:2968: Error: no such instruction: `shrx %eax,%ecx,%eax'
make[2]: *** [compress/zstd_compress_sequences.o] Error 1
make[2]: Leaving directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc/lib/zstd-1.4.5'
make[1]: *** [lib/zstd-1.4.5] Error 2
make[1]: Leaving directory `/tmp/RtmpjyTlyc/R.INSTALL52ca40b46cf8/rhdf5filters/src/blosc'
make: *** [blosc/libH5Zblosc.so] Error 2
ERROR: compilation failed for package ‘rhdf5filters’
* removing ‘/home/mf45w/R/x86_64-pc-linux-gnu-library/4.0/rhdf5filters’
Error: Failed to install 'rhdf5filters' from GitHub:
  (converted from warning) installation of package ‘/tmp/Rtmp8EZmzn/file85451f13ca01/rhdf5filters_1.3.4.tar.gz’ had non-zero exit status

You can see from that error message, that it's the same assembler error: Error: no such instruction: `shrx %eax,%ecx,%eax'

You recommended to install this package through conda for the other guy, but what's the equivalent method to install this package on linux? Any recommendations for how I can fix this?

Thanks very much!
Mike

If anyone else is having this same problem, it's fixed by loading the binutils/2.35 module in addition to R/4.0.0_gcc and gcc/8.1.0 modules. Then the package installed just fine for me on this linux gcc cluster.

Thanks for adding the solution. Glad you got it working.

I was just about to start digging into the CPU architecture parts of the configure script to try. The result checking for x86 avx2 instruction support... no means it shouldn't try to use the shrx instruction. I probably still need to figure out why this doesn't obey that properly.