Code Monkey home page Code Monkey logo

Comments (3)

antoinetran avatar antoinetran commented on July 29, 2024

Ok, following https://github.com/mpickpt/mana/blob/main/doc/mana-centos-tutorial.txt, I understood the issue is about mpich version. Mana needs Mpich >= 3.3.2 instead of provided mpich-3.2 (from CentOS 7). I still have issue but working on that:

cp -f lh_proxy lh_proxy_da gethostbyname-static/gethostbyname_static.o /tmp/mana/mana/bin/
�[91mcp: cannot stat 'lh_proxy_da': No such file or directory
�[0m�[91mmake[3]: *** [Makefile:97: install] Error 1
make[2]: *** [Makefile:106: /tmp/mana/mana/bin/lh_proxy] Error 2
�[0mmake[3]: Leaving directory '/tmp/mana/mana/mpi-proxy-split/lower-half'

from mana.

jiamingz9925 avatar jiamingz9925 commented on July 29, 2024

Hi, I wonder do you manage to make it run on CentOS 7? I followed the tutorial and encounter 'lmpi command not found error' on both nersc-release-phase-3 and most up-to-date head version.

from mana.

antoinetran avatar antoinetran commented on July 29, 2024

Hi, I wonder do you manage to make it run on CentOS 7? I followed the tutorial and encounter 'lmpi command not found error' on both nersc-release-phase-3 and most up-to-date head version.

Hi I gave up trying to make Mana working on a cluster that is not NERSC a while ago, but I have still hope that one day, a Mana developer reads this issue and make the Mana build and run easier for other cluster!

I think I managed to build it, but not running it with my OpenMPI application. Here is how below. If you manage to build and run in CentOS 7, can you answer here? I will be glad to here it!

Dockerfile


####
# Build environment
####

FROM centos:7.9.2009 as builder
RUN yum update -y

# The loop does a second yum install to check that individual rpm that are missing in remote are counted as an error.
# We need latest cmake3 instead of cmake, and latest gcc*, thus devtoolset.
# See https://access.redhat.com/documentation/en-us/red_hat_developer_toolset/11/html/user_guide/chap-red_hat_developer_toolset#sect-Red_Hat_Developer_Toolset-Install
RUN yum install centos-release-scl epel-release -y \
  && rpms="bzip2 cmake3 devtoolset-11-toolchain git python3-pip wget" \
  && yum install ${rpms} -y \
  && for rpm in ${rpms} ; do yum install "${rpm}" -y ; done

RUN ln -s /usr/bin/cmake3 /usr/bin/cmake \
  && sclCreateProxy() { \
  cmd="$1" \
  sclName="$2" \
  && echo '#!/bin/sh' >/usr/bin/"${cmd}" \
  && echo exec scl enable "${sclName}" -- "${cmd}" \"\$@\" >>/usr/bin/"${cmd}" \
  && chmod 775 /usr/bin/"${cmd}" \
  ; } \
  && sclCreateProxy make devtoolset-11 \
  && sclCreateProxy gcc devtoolset-11 \
  && sclCreateProxy g++ devtoolset-11 \
  && sclCreateProxy gfortran devtoolset-11

ARG MPI_DIR
ENV MPI_DIR=${MPI_DIR:-/usr/local/lib/mpi}
ARG MANA_DIR
ENV MANA_DIR=${MANA_DIR:-/usr/local/lib/mana}
# See https://cmake.org/cmake/help/latest/module/FindGSL.html
ARG GSL_ROOT_DIR
ENV GSL_ROOT_DIR=${GSL_ROOT_DIR:-/usr/local/lib/gsl}

####
# MPICH
####

RUN rpms="libxml2-static libxml2-devel zlib-static xz-devel patch yum-utils" \
  && yum install ${rpms} -y \
  && for rpm in ${rpms} ; do yum install "${rpm}" -y ; done

RUN set -x && mkdir /tmp/xz-static && cd /tmp/xz-static \
  && wget http://vault.centos.org/7.9.2009/os/Source/SPackages/xz-5.2.2-1.el7.src.rpm \
  && mkdir liblzma_TEMP && cd liblzma_TEMP \
  && yumdownloader --source xz-devel \
  && rpm2cpio xz-*.src.rpm | cpio -idv \
  && find \
  && tar xf xz-*.tar.gz \
  && cd xz-5.2.2 \
  && patch -Np1 < ../xz-5.2.2-compat-libs.patch \
  && patch -Np1 < ../xz-5.2.2-man-page-day.patch \
  && ./configure --enable-static \
  && make -j install \
  && cp ./src/liblzma/.libs/liblzma.a /usr/lib64/

# To fix this error:
# configure: error: The Fortran compiler gfortran will not compile files that call the same routine with arguments of different types.
# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91731
RUN mkdir /tmp/mpich && cd /tmp/mpich && wget https://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz --no-check-certificate \
  && tar xf mpich-3.3.2.tar.gz \
  && cd mpich-3.3.2 \
  && export FFLAGS="-w -fallow-argument-mismatch -O2" \
  && ./configure --prefix=$MPI_DIR \
  && make -j install

ENV PATH="${PATH}:${MPI_DIR}/bin"

####
# MANA
####

RUN yum install glibc-static mlocate iproute vim -y

# Dirty workaround of Mana needing gzip >= 1.6 for "gzip --keep", but in CentOS7 we have gzip < 1.6.
RUN mv /usr/bin/gzip /usr/bin/gzip.orig \
  && writeGzip() { echo "$@" >>/usr/bin/gzip ; } \
  && writeGzip '#!/bin/sh' \
  && writeGzip 'i=0' \
  && writeGzip 'while test $((i+=1)) -lt "$#" ; do' \
  && writeGzip '  if test "$1" != "--keep" ; then' \
  && writeGzip '    set -- "$@" "$1"' \
  && writeGzip '    shift' \
  && writeGzip '  else' \
  && writeGzip '    set -- "$@"' \
  && writeGzip '    shift' \
  && writeGzip '  fi' \
  && writeGzip 'done' \
  && writeGzip 'exec gzip.orig "$@"' \
  && chmod 775 /usr/bin/gzip

RUN set -x && echo PATH = $PATH && type mpicc  && mpicc -v \
  && mkdir /tmp/mana && cd /tmp/mana && git clone https://github.com/mpickpt/mana.git -b main \
  && cd ./mana && export MANA_ROOT=$PWD \
  && git submodule update --init \
  && sed ./configure-mana -i -e 's,MANA_USE_LH_FIXED_ADDRESS=1$,MANA_USE_LH_FIXED_ADDRESS=1 "$@",g' \
  && sed mpi-proxy-split/lower-half/Makefile -i -e 's,2>&1,,g' -e 's,grep -q,grep,g' -e 's,if ${MPICC},set -x \&\& if ${MPICC},g' \
  && ./configure-mana --prefix="${MANA_DIR}" \
  && make mana \
  && make install

from mana.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.