--- magma-2.4.0.ebuild 2018-11-28 22:13:46.558889391 +0100 +++ magma-1.4.1.ebuild 2017-10-14 23:08:21.281202347 +0200 @@ -1,19 +1,13 @@ -# Copyright 1999-2018 Gentoo Authors +# Copyright 1999-2017 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# TODO -# 1. Open issue on science-overlay to add a possibility for installing -# xlintstc and other test programs from lapack-reference! -# 2. Keep an eye on the cmake implementation. Does not work currently, -# check again on bumps. - -EAPI=6 +EAPI=5 PYTHON_COMPAT=( python2_7 ) FORTRAN_STANDARD="77 90" -inherit cuda flag-o-matic fortran-2 multilib toolchain-funcs python-any-r1 +inherit cuda eutils flag-o-matic fortran-2 multilib toolchain-funcs versionator python-any-r1 DESCRIPTION="Matrix Algebra on GPU and Multicore Architectures" HOMEPAGE="http://icl.cs.utk.edu/magma/" @@ -22,28 +16,25 @@ LICENSE="BSD" SLOT="0" KEYWORDS="~amd64 ~amd64-linux" -IUSE="doc kepler maxwell pascal +sparse static-libs test volta" +IUSE="fermi kepler static-libs test" + +REQUIRED_USE="?? ( fermi kepler )" RDEPEND=" dev-util/nvidia-cuda-toolkit - virtual/blas:= - virtual/lapack:=" + virtual/cblas + virtual/lapack" DEPEND="${RDEPEND} virtual/pkgconfig - doc? ( >=app-doc/doxygen-1.8.14-r1[dot] ) test? ( ${PYTHON_DEPS} )" # We have to have write acccess /dev/nvidia0 and /dev/nvidiactl and the portage # user is (usually) not in the video group -RESTRICT=" - userpriv - !test? ( test ) -" +RESTRICT="userpriv" pkg_setup() { fortran-2_pkg_setup use test && python-any-r1_pkg_setup - tc-check-openmp || die "Need OpenMP to compile ${P}" } src_prepare() { @@ -57,9 +48,9 @@ Version: ${PV} URL: ${HOMEPAGE} Libs: -L\${libdir} -lmagma - Libs.private: -lm -lpthread -ldl -lcublas -lcudart -lcusparse + Libs.private: -lm -lpthread -ldl -lcublas -lcudart Cflags: -I\${includedir} - Requires: blas lapack + Requires: cblas lapack EOF if [[ $(tc-getCC) =~ gcc ]]; then @@ -70,10 +61,9 @@ elog "Cannot detect compiler type so not setting openmp support" fi append-flags -fPIC ${eopenmp} - append-ldflags -Wl,-soname,lib${PN}.so.2.4 ${eopenmp} + append-ldflags -Wl,-soname,lib${PN}.so.1.4 ${eopenmp} cuda_src_prepare - default } src_configure() { @@ -85,58 +75,42 @@ CC = $(tc-getCXX) FORT = $(tc-getFC) INC = -I"${EPREFIX}/opt/cuda/include" -DADD_ -DCUBLAS_GFORTRAN - CFLAGS = ${CFLAGS} -fPIC - CXXFLAGS = ${CXXFLAGS} -fPIC - F90FLAGS = ${FFLAGS} -fPIC -x f95-cpp-input - FFLAGS = ${FFLAGS} -fPIC - NVCCFLAGS = -DADD_ -DUNIX ${NVCCFLAGS} + OPTS = ${CFLAGS} -fPIC + FOPTS = ${FFLAGS} -fPIC -x f95-cpp-input + F77OPTS = ${FFLAGS} -fPIC + NVOPTS = -DADD_ -DUNIX ${NVCCFLAGS} LDOPTS = ${LDFLAGS} LOADER = $(tc-getFC) - LIBBLAS = $($(tc-getPKG_CONFIG) --libs blas) + LIBBLAS = $($(tc-getPKG_CONFIG) --libs cblas) LIBLAPACK = $($(tc-getPKG_CONFIG) --libs lapack) CUDADIR = ${EPREFIX}/opt/cuda - LIBCUDA = -L\$(CUDADIR)/$(get_libdir) -lcublas -lcudart -lcusparse + LIBCUDA = -L\$(CUDADIR)/$(get_libdir) -lcublas -lcudart LIB = -pthread -lm -ldl \$(LIBCUDA) \$(LIBBLAS) \$(LIBLAPACK) -lstdc++ EOF - if use volta; then - echo >> make.inc "GPU_TARGET = Volta" - elif use pascal; then - echo >> make.inc "GPU_TARGET = Pascal" - elif use maxwell; then - echo >> make.inc "GPU_TARGET = Maxwell" - elif use kepler; then + if use kepler; then echo >> make.inc "GPU_TARGET = Kepler" - else # See http://icl.cs.utk.edu/magma/forum/viewtopic.php?f=2&t=227 - # Minimal arch supported is Fermi as of 2.4.0 + elif use fermi; then echo >> make.inc "GPU_TARGET = Fermi" + else # See http://icl.cs.utk.edu/magma/forum/viewtopic.php?f=2&t=227 + echo >> make.inc "GPU_TARGET = Tesla" fi } src_compile() { emake lib - use sparse && emake sparse-lib emake shared - mv lib/lib${PN}.so{,.2.4} || die - ln -sf lib${PN}.so.2.4 lib/lib${PN}.so.2 || die - ln -sf lib${PN}.so.2.4 lib/lib${PN}.so || die - if use sparse; then - mv lib/lib${PN}-sparse.so{,.2.4} || die - ln -sf lib${PN}-sparse.so.2.4 lib/lib${PN}-sparse.so.2 || die - ln -sf lib${PN}-sparse.so.2.4 lib/lib${PN}-sparse.so || die - fi + mv lib/lib${PN}.so{,.1.4} || die + ln -sf lib${PN}.so.1.4 lib/lib${PN}.so.1 || die + ln -sf lib${PN}.so.1.4 lib/lib${PN}.so || die } src_test() { - emake test - # FIXME: sparse-test currently fails -# use sparse && emake sparse-test + emake test lapacktest cd testing/lin || die # we need to access this while running the tests - cuda_add_sandbox -w # replaces addwrite /dev/nvidia{ctl,0} - # FIXME: The python file needs the xlintstc program from - # lapack-reference test suite, which is not installed, even - # if lapack-reference is compiled with FEATURES="test". See TODO -# LD_LIBRARY_PATH="${S}"/lib ${EPYTHON} lapack_testing.py || die + addwrite /dev/nvidiactl + addwrite /dev/nvidia0 + LD_LIBRARY_PATH="${S}"/lib ${EPYTHON} lapack_testing.py || die } src_install() { @@ -146,7 +120,5 @@ doins include/*.h insinto /usr/$(get_libdir)/pkgconfig doins ${PN}.pc - local DOCS=( README ReleaseNotes ) - use doc && local HTML_DOCS=( docs/html/. ) - einstalldocs + dodoc README ReleaseNotes }