Installation failure meas_base against Anaconda Python on Linux

OS : Linux CentOS 7.0
Python : declined miniconda install from newinstall.sh and used fresh installation of Anaconda Python 2.7 (conda 4.0.5)
Git (2.8.1) and git-lfs (1.0.2) setup and working.

Problem:
I tried to use to do a source installation of the LSST stack (w_2016_15 and sims_2.2.4), using
eups distrib install lsst_sims -t sims

and got a failure on meas_base.
The error was that the unit tests were failing, so the package could not be installed.

The relevant section from the build.log file ($LSST_INSTALL_DIR/EupsBuildDir/Linux64/meas_base-w.2016.15/build.log):

running tests/testSdssCentroid.py… running tests/testApertureFlux.py… running tests/measureSources.py… running tests/testPeakCentroid.py… r
unning tests/testTransform.py… running tests/testVariance.py… running tests/centroid.py… running tests/testShapeUtilities.py… running tests
/testApCorrNameSet.py… running tests/testInputCount.py… running tests/testScaledApertureFlux.py… running tests/testGaussianCentroid.py… run
ning tests/testPsfFlux.py… running tests/testJacobian.py… running tests/testApplyApCorr.py… running tests/sincPhotSums.py… running tests/te
stPeakLikelihoodFlux.py… running tests/testNoiseReplacer.py… running tests/testMeasureApCorr.py… running tests/shape.py… running tests/impo
rtCentroidAlgorithm.py… running tests/testSkyCoord.py… running tests/testInputUtilities.py… running tests/testSdssShape.py… running tests/t
estGaussianFlux.py… running tests/testNaiveCentroid.py… running tests/testFPPosition.py… running tests/testPixelFlags.py… running tests/tes
tClassification.py… running tests/testBlendedness.py… sh: line 1: 112014 Segmentation fault (core dumped) TRAVIS=1 python “tests/testApert
ureFlux.py” >> “tests/.tests/testApertureFlux.py” 2>&1
failed
passed
sh: line 1: 112019 Segmentation fault (core dumped) TRAVIS=1 python “tests/measureSources.py” >> “tests/.tests/measureSources.py” 2>&1
failed
passed
passed
passed
passed
sh: line 1: 112073 Segmentation fault (core dumped) TRAVIS=1 python “tests/testJacobian.py” >> “tests/.tests/testJacobian.py” 2>&1
passed
failed
sh: line 1: 112082 Segmentation fault (core dumped) TRAVIS=1 python “tests/sincPhotSums.py” >> “tests/.tests/sincPhotSums.py” 2>&1
failed
passed
passed
passed
passed
passed
passed
passed
passed
passed
passed
passed
passed
passed
passed
passed
sh: line 1: 112061 Segmentation fault (core dumped) TRAVIS=1 python “tests/testScaledApertureFlux.py” >> “tests/.tests/testScaledApertureFlux.
py” 2>&1
failed
passed

The unit test output files are empty.
The problem is that there are segfaults when running the unit tests.

The solution is that this is a known problem with Linux builds when not using the LSST miniconda package.

Meas_base uses numpy. When LSST installs miniconda as part of the installation process, it adds the ‘nomkl’ package, which forces numpy to not use the intel version of the MKL package, but instead use a numpy-provided blas (I could be wrong about those details … but basically – you need ‘nomkl’.)

So, by using the anaconda python I installed myself, I was using a ‘standard’ version of numpy, which uses MKL. To avoid the problem, you must use the ‘nomkl’ version of numpy.

Solution:
conda install nomkl
(this will make anaconda swap to the non-mkl versions of numpy and scipy).
eups distrib clean meas_base w_2016_15
(this cleans up the version of meas_base that didn’t compile properly … strictly speaking, this is not necessary, but is nice).
Restart the installation:
eups distrib install lsst_sims -t sims

Result - Successful installation of meas_base.

1 Like

For future updates on LSST’s handling of this problem, this JIRA ticket is relevant:
https://jira.lsstcorp.org/browse/DM-5123