Skip to content
This repository has been archived by the owner on Jul 19, 2023. It is now read-only.

Commit

Permalink
Merge pull request #65 from keisukefukuda/create-mpi-classes
Browse files Browse the repository at this point in the history
Code Refactoring
  • Loading branch information
keisukefukuda committed Jul 20, 2017
2 parents b101975 + d75f707 commit 6f2c6b3
Show file tree
Hide file tree
Showing 27 changed files with 917 additions and 797 deletions.
14 changes: 9 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@ language: python
sudo: false

env:
- TEST_SHELL_CMD=zsh
- TEST_SHELL_CMD=bash
- TEST_SHELL_CMD=zsh LANG=C
- TEST_SHELL_CMD=bash LANG=en_US.utf-8
- TEST_SHELL_CMD=zsh LANG=ja_JP.utf-8
- TEST_SHELL_CMD=bash LANG=C
- TEST_SHELL_CMD=zsh LANG=en_US.utf-8
- TEST_SHELL_CMD=bash LANG=ja_JP.utf-8

python:
# - "2.6"
Expand Down Expand Up @@ -37,8 +41,8 @@ addons:
- ibverbs-utils
- libibverbs-dev

#before_script:
# - sh ./.travis_install.sh
before_script:
- sh ./.travis_install.sh

install:
- pip install -r requirements.txt
Expand All @@ -50,5 +54,5 @@ script:
- test ! -s check_autopep8
- flake8 $(find . -name "*.py")
# - coverage run $(which nosetests) -v
- ./tests/test_main.sh
- travis_wait 35 ${TEST_SHELL_CMD} ./tests/test_main.sh
- codeclimate-test-reporter || true # CODECLIMATE_REPO_TOKEN is defined in TravisCI's setting
88 changes: 0 additions & 88 deletions .travis_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,91 +26,3 @@ else
$HOME/zsh/bin/zsh --version
fi

PREFIX=$HOME/mpi

cd $HOME/tmp

echo ls $PREFIX
ls $PREFIX

# Remove Open MPI version which we no longer use
rm -rf $PREFIX/openmpi-1.10*

for VER in 2.1.1; do
if [ ! -x $PREFIX/openmpi-${VER}/bin/mpiexec ]; then
echo "==============================================="
echo "Installing Open MPI ${VER}"
echo "==============================================="
VER_SHORT=$(echo $VER | grep -oE '^[0-9]+\.[0-9]+')
wget --no-check-certificate https://www.open-mpi.org/software/ompi/v${VER_SHORT}/downloads/openmpi-${VER}.tar.gz
tar -xf openmpi-${VER}.tar.gz
cd openmpi-${VER}
echo ./configure --prefix=$PREFIX/openmpi-${VER} --disable-mpi-fortran
./configure --prefix=$PREFIX/openmpi-${VER} \
--disable-mpi-fortran >/dev/null 2>&1
echo make
make -j4 >/dev/null 2>&1
echo make install
make install >/dev/null 2>&1
cd ..
else
echo "Open MPI ${VER} looks good."
$PREFIX/openmpi-${VER}/bin/mpiexec --version
fi
echo
echo
done

# MPICH
cd $HOME/tmp
for VER in 3.2; do
if [ ! -x $PREFIX/mpich-${VER}/bin/mpiexec ]; then
echo "==============================================="
echo "Installing MPICH ${VER}"
echo "==============================================="
wget --no-check-certificate http://www.mpich.org/static/downloads/${VER}/mpich-${VER}.tar.gz
tar -xf mpich-${VER}.tar.gz
cd mpich-${VER}
echo ./configure
./configure --enable-fortran=no \
--enable-silent-rules \
--disable-dependency-tracking \
--prefix=$PREFIX/mpich-${VER} >/dev/null 2>&1
echo make
make -j4 >/dev/null 2>&1
echo make install
make install >/dev/null 2>&1
cd ..
else
echo "MPICH ${VER} looks good."
$PREFIX/mpich-${VER}/bin/mpiexec --version
fi
echo
echo
done

# MVAPICH
cd $HOME/tmp
for VER in 2.2; do
if [ ! -x $PREFIX/mvapich2-2.2/bin/mpiexec ]; then
echo "==============================================="
echo "Installing MVAPICH ${VER}"
echo "==============================================="
wget --no-check-certificate http://mvapich.cse.ohio-state.edu/download/mvapich/mv2/mvapich2-${VER}.tar.gz
tar -xf mvapich2-${VER}.tar.gz
cd mvapich2-${VER}
echo ./configure
./configure --disable-fortran --prefix=$PREFIX/mvapich2-2.2 \
--disable-mcast >/dev/null 2>&1
echo make
make -j4 >/dev/null 2>&1
echo make install
make install >/dev/null 2>&1
cd ..
else
echo "MPVAPICH ${VER} looks good."
$PREFIX/mvapich2-2.2/bin/mpiexec --version
fi
echo
echo
done
4 changes: 2 additions & 2 deletions bin/add.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import argparse

from common import manager
from mpienv import mpienv


parser = argparse.ArgumentParser(
Expand All @@ -18,7 +18,7 @@ def main():
args = parser.parse_args()

# Create a link
manager.add(args.path, args.name)
mpienv.add(args.path, args.name)


if __name__ == "__main__":
Expand Down
8 changes: 4 additions & 4 deletions bin/autodiscover.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pprint
import sys

from common import manager
from mpienv import mpienv


parser = argparse.ArgumentParser(
Expand Down Expand Up @@ -61,19 +61,19 @@ def investigate_path(path, to_add):
printv("checking {}".format(mpiexec))

# Exclude mpienv's own directory
name = manager.is_installed(path)
name = mpienv.is_installed(path)
if name:
prints("{}\n\t Already known as "
"'{}'".format(path, name))
prints()
else:
prints("--------------------------------------")
prints("Found {}".format(mpiexec))
prints(pprint.pformat(manager.get_info(path)))
prints(pprint.pformat(mpienv.get_mpi_from_prefix(path)))
# Install the new MPI
if to_add:
try:
name = manager.add(path)
name = mpienv.add(path)
prints("Added {} as {}".format(path, name))
except RuntimeError as e:
prints("Error occured while "
Expand Down
4 changes: 2 additions & 2 deletions bin/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import argparse

from common import manager
from mpienv.installer import create_installer
from mpienv import mpienv


parser = argparse.ArgumentParser(
Expand All @@ -24,7 +24,7 @@
def main():
args = parser.parse_args()

inst = create_installer(manager, args.mpi, args.name,
inst = create_installer(mpienv, args.mpi, args.name,
verbose=args.verbose)

inst.build(npar=args.npar)
Expand Down
4 changes: 2 additions & 2 deletions bin/configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import argparse

from common import manager
from mpienv.installer import create_installer
from mpienv import mpienv


parser = argparse.ArgumentParser(
Expand All @@ -24,7 +24,7 @@
def main():
args = parser.parse_args()

inst = create_installer(manager, args.mpi, args.name,
inst = create_installer(mpienv, args.mpi, args.name,
verbose=args.verbose)

inst.configure()
Expand Down
4 changes: 2 additions & 2 deletions bin/exec.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import argparse
import sys

from common import manager
from mpienv import mpienv


parser = argparse.ArgumentParser(
Expand All @@ -16,7 +16,7 @@
def main():
args = sys.argv[1:]

manager.exec_(args)
mpienv.exec_(args)


if __name__ == "__main__":
Expand Down
13 changes: 7 additions & 6 deletions bin/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@
import pprint
import sys

from common import manager
from common import UnknownMPI
from mpienv import mpienv
from mpienv import UnknownMPI
from mpienv import util

parser = argparse.ArgumentParser(
prog='mpienv info',
Expand All @@ -19,18 +20,18 @@
args = parser.parse_args()

try:
name = manager.get_current_name()
name = mpienv.get_current_name()
except UnknownMPI:
sys.stderr.write("Error: the current MPI is not under control\n")
exit(-1)

name = args.name or name

if name not in manager:
if name not in mpienv:
sys.stderr.write("Error: '{}' is unknown.\n".format(name))
else:
if args.json:
print(json.dumps(manager[name]))
print(json.dumps(mpienv[name], default=util.dump_json))
else:
print(name)
pprint.pprint(manager[name])
pprint.pprint(mpienv[name])
4 changes: 2 additions & 2 deletions bin/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
import argparse
import sys

from common import manager
from mpienv.installer import create_installer
from mpienv.installer import list_avail
from mpienv import mpienv

parser = argparse.ArgumentParser(
prog='mpienv build', description='Install a new MPI environment.')
Expand All @@ -31,7 +31,7 @@ def main():

args = parser.parse_args()

inst = create_installer(manager, args.mpi, args.name,
inst = create_installer(mpienv, args.mpi, args.name,
verbose=args.verbose)

inst.install(npar=args.npar)
Expand Down
27 changes: 14 additions & 13 deletions bin/list.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,41 +4,42 @@
import json
import sys

from common import manager
from mpienv import mpienv
from mpienv import util

parser = argparse.ArgumentParser(
prog='mpienv list', description='List all available MPI environments.')
parser.add_argument('--json', action="store_true",
default=None)


def _print_info(info, max_label_len):
if info.get('broken'):
def _print_info(mpi, max_label_len):
if mpi.is_broken:
print(" {:<{width}} -> *** broken ***".format(
info['name'],
mpi.name,
width=max_label_len
))
else:
print(" {} {:<{width}} -> {}".format(
"*" if info['active'] else " ",
info['name'],
info['prefix'],
"*" if mpi.is_active else " ",
mpi.name,
mpi.prefix,
width=max_label_len))


if __name__ == '__main__':
args = parser.parse_args()

if len(manager.keys()) == 0:
if len(mpienv.keys()) == 0:
exit(0)

max_label_len = max(len(name) for name in manager.keys())
max_label_len = max(len(name) for name in mpienv.keys())

lst = [info for name, info in manager.items()]
lst.sort(key=lambda x: x['name'])
lst = [info for name, info in mpienv.items()]
lst.sort(key=lambda x: x.name)
if args.json:
lst = {name: info for name, info in manager.items()}
json.dump(lst, sys.stdout)
lst = {name: info for name, info in mpienv.items()}
json.dump(lst, sys.stdout, default=util.dump_json)
else:
print("\nInstalled MPIs:\n")
for info in lst:
Expand Down
8 changes: 4 additions & 4 deletions bin/prefix.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import argparse
import sys

from common import manager
from mpienv import mpienv

parser = argparse.ArgumentParser(
prog='mpienv prefix',
Expand All @@ -13,10 +13,10 @@
if __name__ == "__main__":
args = parser.parse_args()

name = args.name or manager.get_current_name()
name = args.name or mpienv.get_current_name()

if name in manager:
sys.stdout.write(manager[name]['prefix'])
if name in mpienv:
sys.stdout.write(mpienv[name].prefix)
if sys.stdout.isatty():
sys.stdout.write("\n")

Expand Down
4 changes: 2 additions & 2 deletions bin/rename.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import argparse

from common import manager
from mpienv import mpienv

parser = argparse.ArgumentParser(
prog='mpienv rename', description='Rename an environment.')
Expand All @@ -12,7 +12,7 @@

def main():
args = parser.parse_args()
manager.rename(args.name_from, args.name_to)
mpienv.rename(args.name_from, args.name_to)


if __name__ == "__main__":
Expand Down
Loading

0 comments on commit 6f2c6b3

Please sign in to comment.