You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.8 KiB
146 lines
3.8 KiB
# Copyright 1999-2016 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI="4"
|
|
|
|
inherit fortran-2
|
|
|
|
DESCRIPTION="MVAPICH2 MPI-over-infiniband package auto-configured for OpenIB"
|
|
HOMEPAGE="http://mvapich.cse.ohio-state.edu/"
|
|
SRC_URI="${HOMEPAGE}/download/mvapich2/mvapich2-${PV/_/-}.tgz"
|
|
|
|
SLOT="0"
|
|
LICENSE="BSD"
|
|
KEYWORDS="~x86 ~amd64"
|
|
IUSE="debug fortran large-cluster medium-cluster romio threads"
|
|
|
|
RDEPEND="
|
|
|| (
|
|
(
|
|
sys-fabric/libibverbs
|
|
sys-fabric/libibumad
|
|
sys-fabric/libibmad
|
|
sys-fabric/librdmacm )
|
|
sys-fabric/openib-userspace )"
|
|
DEPEND="${RDEPEND}"
|
|
|
|
S="${WORKDIR}/mvapich2-${PV/_/-}"
|
|
|
|
pkg_setup() {
|
|
fortran-2_pkg_setup
|
|
|
|
if [ -z "${MVAPICH_HCA_TYPE}" ]; then
|
|
elog "${PN} needs to know which HCA it should optimize for. This is"
|
|
elog "passed to the ebuild with the variable, \${MVAPICH_HCA_TYPE}."
|
|
elog "Please choose one of: _MLX_PCI_EX_SDR_, _MLX_PCI_EX_DDR_,"
|
|
elog "_MLX_PCI_X, _PATH_HT_, or _IBM_EHCA_."
|
|
elog "See make.mvapich2.detect in ${S} for more information."
|
|
die "MVAPICH_HCA_TYPE undefined"
|
|
fi
|
|
|
|
case ${ARCH} in
|
|
amd64)
|
|
if grep Intel /proc/cpuinfo &>/dev/null; then
|
|
BUILD_ARCH=-D_EM64T_
|
|
else
|
|
BUILD_ARCH=-D_X86_64_
|
|
fi
|
|
;;
|
|
x86)
|
|
BUILD_ARCH=-D_IA32_
|
|
;;
|
|
ia64)
|
|
BUILD_ARCH=-D_IA64_
|
|
;;
|
|
ppc64)
|
|
BUILD_ARCH=-D_PPC64_
|
|
;;
|
|
*)
|
|
die "unsupported architecture: ${ARCH}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
src_prepare() {
|
|
einfo "Disabling examples"
|
|
# Examples are always compiled with the default 'all' target. This
|
|
# causes problems when we don't build support for everything, including
|
|
# threads, mpe2, etc. So we're not going to build them.
|
|
sed -i 's:.*cd examples && ${MAKE} all.*::' Makefile.in
|
|
}
|
|
|
|
src_configure() {
|
|
local c="--with-device=osu_ch3:mrail
|
|
--with-rdma=gen2
|
|
--with-pm=mpd
|
|
$(use_enable romio)
|
|
--with-mpe=no"
|
|
|
|
# TODO Shared libs should build with this, but they don't
|
|
# --enable-shared=gcc"
|
|
|
|
local enable_srq
|
|
local vcluster=-D_SMALL_CLUSTER
|
|
|
|
use large-cluster && vcluster=-D_LARGE_CLUSTER
|
|
use medium-cluster && vcluster=-D_MEDIUM_CLUSTER
|
|
[ "${MVAPICH_HCA_TYPE}" == "_MLX_PCI_X_" ] && enable_srq="-DSRQ"
|
|
|
|
append-ldflags "-lrdmacm"
|
|
append-flags "-DADAPTIVE_RDMA_FAST_PATH -DRDMA_CM"
|
|
|
|
append-ldflags "-libverbs -libumad -libmad"
|
|
|
|
append-flags "${BUILD_ARCH} -DUSE_INLINE -D_SMP_ -D_GNU_SOURCE"
|
|
append-flags "${enable_srq} -DUSE_HEADER_CACHING -DLAZY_MEM_UNREGISTER"
|
|
append-flags "-DONE_SIDED -D${MVAPICH_HCA_TYPE} ${vcluster}"
|
|
append-flags "-DMPID_USE_SEQUENCE_NUMBERS -DUSE_MPD_RING"
|
|
|
|
use debug && c="${c} --enable-g=all --enable-debuginfo"
|
|
|
|
if use threads; then
|
|
c="${c} --enable-threads=multiple --with-thread-package=pthreads"
|
|
append-flags "-pthread"
|
|
else
|
|
c="${c} --with-thread-package=none"
|
|
fi
|
|
|
|
# enable f90 support for appropriate compilers
|
|
if use fortran; then
|
|
case "$(tc-getFC)" in
|
|
gfortran|ifort|f95)
|
|
c="${c} --enable-f77 --enable-f90";;
|
|
g77|f77|f2c)
|
|
c="${c} --enable-f77 --disable-f90";;
|
|
esac
|
|
else
|
|
c="${c} --disable-f77 --disable-f90"
|
|
fi
|
|
|
|
sed -i \
|
|
-e 's/ ${exec_prefix}/ ${DESTDIR}${exec_prefix}/' \
|
|
-e 's/ ${libdir}/ ${DESTDIR}${libdir}/' \
|
|
${S/-beta2/}/Makefile.in
|
|
sed -i '/bindir/s/ ${bindir}/ ${DESTDIR}${bindir}/' ${S/-beta2/}/src/pm/mpd/Makefile.in
|
|
cd ${S/-beta2/}
|
|
|
|
econf ${c}
|
|
}
|
|
|
|
src_install() {
|
|
emake DESTDIR="${D}"|| die
|
|
dodoc CHANGES_MPICH2 COPYRIGHT COPYRIGHT_MVAPICH2 LICENSE.TXT \
|
|
README* RELEASE_NOTES*
|
|
}
|
|
|
|
pkg_postinst() {
|
|
einfo "To allow normal users to use infiniband, it is necessary to"
|
|
einfo "increase the system limits on locked memory."
|
|
einfo "You must increase the kernel.shmmax sysctl value, and increase"
|
|
einfo "the memlock limits in /etc/security/limits.conf. i.e.:"
|
|
echo
|
|
einfo "echo 'kernel.shmmax = 512000000' >> /etc/sysctl.conf"
|
|
einfo "echo 512000000 > /proc/sys/kernel/shmmax"
|
|
einfo "echo -e '* soft memlock 500000\n* hard memlock 500000' > /etc/security/limits.conf"
|
|
}
|