Yes its possible. I add this ebuild after i test it
also i add infiniband support for openmpi
Hi, is it finally possible to someone put new ebuild for openib-mvapich2, i send my ebuild for this package below, it works well, one think maybe is to add USE flag for SDR or DDR infiniband,
and register mvapich2 in virtual-mpi as one of the 'official' mpi's to select? it is easy i think and no effort (just add sys-cluster/openib-mvapich2 as a RDEPEND)
also there's something wrong with this new package responsible for programs such as ibdiagnet ibtrace... , paths are wrong, emerge installs these into /usr/bin but when i start those programs, they are looking for others in /usr/local/bin.. need to be fixed
openib-mvapich2.ebuild attachment:
--
Dept of Computational Biophysics & Bioinformatics,
Faculty of Biochemistry, Biophysics and Biotechnology,
Jagiellonian University,
ul. Gronostajowa 7,
30-387 Krakow, Poland.
Tel: (+48-12)-664-6380
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
inherit mpi fortran flag-o-matic eutils multilib toolchain-funcs
SLOT="0"
LICENSE="BSD"
KEYWORDS="~x86 ~amd64"
DESCRIPTION="MVAPICH2 MPI-over-infiniband package auto-configured for OpenIB."
HOMEPAGE="http://mvapich.cse.ohio-state.edu/"
SRC_URI="${HOMEPAGE}/download/mvapich2/mvapich2-${PV/_/-}p1.tgz"
S="${WORKDIR}/mvapich2-${PV/_/-}p1"
IUSE="debug medium-cluster large-cluster rdma romio threads fortran"
RDEPEND="
|| ( ( sys-cluster/libibverbs
sys-cluster/libibumad
sys-cluster/libibmad
rdma? ( sys-cluster/librdmacm ) )
sys-cluster/openib-userspace )
$(mpi_imp_deplist)"
DEPEND="${RDEPEND}"
pkg_setup() {
MPI_ESELECT_FILE="eselect.mpi.mvapich2"
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
use fortran && fortran_pkg_setup
}
src_unpack() {
unpack ${A}
cd "${S}"
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_compile() {
local vcluster="small"
use large-cluster && vcluster="large"
use medium-cluster && vcluster="medium"
local c="--with-device=ch3:sock
--with-link=DDR
$(use_enable romio)
--with-cluster-size=${vcluster}
--enable-sharedlibs=gcc"
local enable_srq
[ "${MVAPICH_HCA_TYPE}" == "_MLX_PCI_X_" ] && enable_srq="-DSRQ"
append-flags "${BUILD_ARCH}"
append-flags "${enable_srq}"
append-flags "-D${MVAPICH_HCA_TYPE}"
use debug && c="${c} --enable-g=all --enable-debuginfo"
if use threads; then
c="${c} --enable-threads=multiple --with-thread-package=pthreads"
else
c="${c} --with-thread-package=none"
fi
# enable f90 support for appropriate compilers
if use fortran; then
case "${FORTRANC}" in
gfortran|ifc|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/}
! mpi_classed && c="${c} --sysconfdir=/etc/${PN}"
econf $(mpi_econf_args) ${c}
# http://www.mcs.anl.gov/research/projects/mpich2/support/index.php?s=faqs#parmake
# https://trac.mcs.anl.gov/projects/mpich2/ticket/297
emake -j1 || die "emake failed"
#emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "make install failed"
mpi_imp_add_eselect
}
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 unlimited\n* hard memlock unlimited' > /etc/security/limits.conf"
}