You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There was a glitch using velocyto.py on a CentOS 8 system which involved numba not finding the right libtbb shared library. This is what happened. First installed velocyto like so:
package=velocyto
pversion=0.17.17
TOPDIR=/usr/common/modules/el8/x86_64/software/${package}/${pversion}-CentOS-vanilla
cd /usr/common/src
mkdir ${package}-${pversion}
cd ${package}-${pversion}
#next from https://sourceforge.net/projects/python-devirtualizer/
module load python_devirtualizer
pdvctrl mkvenv ${package}
pdvctrl install ${package} "Cython numpy ${package}" 2>&1 | tee install_2020_08_13.log
pdvctrl migrate ${package} $TOPDIR 2>&1 | tee migrate_2020_08_13.log
#next from https://saf.bio.caltech.edu/pub/software/linux_or_unix_tools/module_generate_from_directory.sh
module_generate_from_directory.sh \
${package} \
${pversion}\
CentOS/vanilla \
$TOPDIR \
"Analysis of expression dynamics in single cell RNA seq data." \
"http://velocyto.org/"
#but it does not like CentOS 8's libtbb:
velocyto --help
(velocyto._wrapped:2610): dbind-WARNING **: 10:23:58.129: Couldn't register with accessibility bus: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
/home/common/modules/el8/x86_64/software/velocyto/0.17.17-CentOS-vanilla/lib/python3.6/site-packages/numba/np/ufunc/parallel.py:355: NumbaWarning: The TBB threading layer requires TBB version 2019.5 or later i.e., TBB_INTERFACE_VERSION >= 11005. Found TBB_INTERFACE_VERSION = 10002. The TBB threading layer is disabled.
warnings.warn(problem)
Usage: velocyto._wrapped [OPTIONS] COMMAND [ARGS]...
(The accessibility bus warning can be ignored I think, something is broken in this XFCE4 install.)
There is a much more recent libtbb on this system, which salmon 1.2.1 needed, which had been installed previously. This one has been modified to use cmake:
pversion=2020.5
package=libtbb
TOPDIR=/usr/common/modules/el8/x86_64/software/${package}/${pversion}-CentOS-vanilla
cd /usr/common/src
module load cmake
git clone https://github.com/wjakob/tbb.git
cd tbb
cd build
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=$TOPDIR \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
.. 2>&1 | tee cmake_2020_05_12.log
make 2>&1 | tee build_2020_05_12.log
make test #all passed
make install 2>&1 | tee install_2020_05_12.log
(cd $TOPDIR; mv lib lib64; ln -s lib64 lib)
module_generate_from_directory.sh \
$package \
$pversion \
CentOS/vanilla \
$TOPDIR \
"Intel Threading Building Blocks Library." \
"https://github.com/intel/tbb/"
But even when it was loaded velocyto would not use it:
module load libtbb
set | grep LD
LD_LIBRARY_PATH=/usr/common/modules/el8/x86_64/software/libtbb/2020.5-CentOS-vanilla/lib64:/usr/common/modules/el8/x86_64/software/libtbb/2020.5-CentOS-vanilla/lib:/usr/common/modules/el8/x86_64/software/velocyto/0.17.17-CentOS-vanilla/lib64:/usr/common/modules/el8/x86_64/software/velocyto/0.17.17-CentOS-vanilla/lib
velocyto --help
Exact same error message as before, it still sees the CentOS 8 libtbb. I replaced velocyto._wrapped with this script:
#!/usr/bin/bash
set
and the LD_LIBRARY_PATH was passed correctly, so the velocyto script you supply (which is identical to velocyto._wrapped) seemed not to respond to LD_LIBRARY_PATH for some reason. The place that fails is actually in numba, in parallel.py here:
elif _IS_LINUX:
libtbb_name = 'libtbb.so.2'
else:
raise ValueError("Unknown operating system")
libtbb = CDLL(libtbb_name)
version_func = libtbb.TBB_runtime_interface_version
version_func.argtypes = []
version_func.restype = c_int
tbb_iface_ver = version_func()
if tbb_iface_ver < 11005: # magic number from TBB
msg = ("The TBB threading layer requires TBB "
"version 2019.5 or later i.e., "
"TBB_INTERFACE_VERSION >= 11005. Found "
"TBB_INTERFACE_VERSION = %s. The TBB "
"threading layer is disabled.")
The sole name searched for was "libtbb.so.2", but the build shown above only produced ".so" versions. The fix was to rename all lilbraries from .so to .so.2, then create links from .so to .so.2. At that point the numba code above accepted the libtbb.
So, in summary, if a different libtbb must be supplied be sure that the shared library ends in .so.2 or it will not be found!
The text was updated successfully, but these errors were encountered:
There was a glitch using velocyto.py on a CentOS 8 system which involved numba not finding the right libtbb shared library. This is what happened. First installed velocyto like so:
(The accessibility bus warning can be ignored I think, something is broken in this XFCE4 install.)
There is a much more recent libtbb on this system, which salmon 1.2.1 needed, which had been installed previously. This one has been modified to use cmake:
But even when it was loaded velocyto would not use it:
Exact same error message as before, it still sees the CentOS 8 libtbb. I replaced velocyto._wrapped with this script:
and the LD_LIBRARY_PATH was passed correctly, so the velocyto script you supply (which is identical to velocyto._wrapped) seemed not to respond to LD_LIBRARY_PATH for some reason. The place that fails is actually in numba, in parallel.py here:
The sole name searched for was "libtbb.so.2", but the build shown above only produced ".so" versions. The fix was to rename all lilbraries from .so to .so.2, then create links from .so to .so.2. At that point the numba code above accepted the libtbb.
So, in summary, if a different libtbb must be supplied be sure that the shared library ends in .so.2 or it will not be found!
The text was updated successfully, but these errors were encountered: