• Stars
    star
    133
  • Rank 266,114 (Top 6 %)
  • Language
    Shell
  • License
    MIT License
  • Created almost 8 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MPI Cluster Automation Solution using Docker, based on Alpine Linux with MPICH (see IEEE paper)

Alpine MPICH

Docker image of Alpine Linux with MPICH -- portable implementation of Message Passing Interface (MPI) standard. Designed for MPI program development and deployment.

Provide solution for MPI Cluster Automation with Docker containers using either Docker Compose or Docker Swarm Mode.


    Best Paper Award at IEEE CCWC 2017

N. Nguyen and D. Bein, "Distributed MPI cluster with Docker Swarm mode," 2017 IEEE 7th Annual Computing and Communication Workshop and Conference (CCWC), Las Vegas, NV, USA, 2017, pp. 1-7.


Image usage instruction: https://hub.docker.com/r/nlknguyen/alpine-mpich

Distributed MPI cluster setup instruction: https://github.com/NLKNguyen/alpine-mpich/tree/master/cluster


Automated build with Travis CI and push to Docker Hub https://hub.docker.com/r/nlknguyen/alpine-mpich

TODO Feb 23, 2019: Current failed checks are due to new style rules for shell scripts using shellcheck tool. All shell scripts need to be updated to pass the build. Most of shellcheck's recommendations are legit.

Build Status

Docker Hub

base image (Dockerfile) : contains MPICH and essential build tools. Intended to be used as development environment for developing MPI programs.

onbuild image (Dockerfile) : inherits base image with network setup for cluster. Can be used like base image but intended to be used to build image that contains compiled MPI program in order to deploy to a cluster.

cluster (project scaffolder) : is a directory containing a setup for deploying MPI programs to a cluster of containers. Include a runner script to automate Docker commands.

Below is instruction for building the Docker image yourself if you don't want to use the pre-built base or onbuild image.


Build Instruction

The images are prebuilt and hosted at Docker Hub, but in case you want to build them yourself:

$ git clone https://github.com/NLKNguyen/alpine-mpich

$ cd alpine-mpich

$ docker build -t nlknguyen/alpine-mpich base/

$ docker build -t nlknguyen/alpine-mpich:onbuild onbuild/

Since the onbuild image inherits the base image, if you use a different tag name (nlknguyen/alpine-mpich), you must change the first line in onbuild/Dockerfile to inherits FROM your custom tag name.


Build Customization

In order to customize the base image at build time, you need to download the Dockerfile source code and build with optional build arguments (without those, you get the exact image as you pull from DockerHub), for example:

$ git clone https://github.com/NLKNguyen/alpine-mpich

$ cd alpine-mpich

$ docker build --build-arg MPICH_VERSION="3.2b4" -t my-custom-image base/

These are available build arguments to customize the build:

  • REQUIRE space-separated names of packages to be installed from Alpine main package repository before downloading and installing MPICH. Default="sudo build-base openssh"
  • MPICH_VERSION to find which version of MPICH to download from here. Default="3.2"
  • MPICH_CONFIGURE_OPTIONS to be passed to ./configure in MPICH source directory. Default="--disable-fortran" (let me know if you need Fortran, I can certainly add it by default)
  • MPICH_MAKE_OPTIONS to be passed to make after the above command. Default is empty
  • USER non-root user with sudo privilege and no password required. Default=mpi
  • WORKDIR main working directory to be owned by default user. Default=/project

See MPICH documentation for available options

Should you need more than that, you need to change the Dockerfile yourself or send suggestion/pull requests to this GitHub repository.

Feedback

Feedbacks are always welcome. For general comments, use the comment section at the bottom of this image page on Docker Hub

Issue

Use this GitHub repository issues

Contributing

Suggestions and pull requests are awesome.

License MIT

Copyright © Nikyle Nguyen

More Repositories

1

papercolor-theme

🎨 Light & Dark Vim color schemes inspired by Google's Material Design
Vim Script
2,634
star
2

awesome-language-engineering

✨ A curated list of useful resources for computer language engineering and theory
256
star
3

pipe-mysql.vim

MySQL client runner to query MySQL / Amazon Aurora / MariaDB database in Vim interactively (also remotely)
Vim Script
54
star
4

papercolor-16

A collection of color schemes based on PaperColor Theme for various environments
Shell
36
star
5

copy-cut-paste.vim

Vim plugin for naturally copy, cut, and paste between buffer and system clipboard
Vim Script
23
star
6

jekyll-bootstrap-calendar

Pure Jekyll layout to display [bootstrap-calendar] that reads events from CSV file
JavaScript
21
star
7

pipe.vim

Vim plugin to pipe command line output into Vim window. Support external running interface. Include useful utilities to build other interactive plugins.
Vim Script
13
star
8

cloudformation-syntax.vim

Amazon AWS Cloudformation Syntax Files for Vim
Vim Script
12
star
9

alpine-shellcheck

Docker image for Alpine Linux with latest ShellCheck, a static analysis tool for shell scripts.
12
star
10

base16-papercolor-light-syntax

A Base16 port of PaperColor Light syntax color scheme for Atom
CSS
11
star
11

papercolor-jetbrains

PaperColor Theme for JetBrains IDEs (IntelliJIDEA, AndroidStudio, etc.)
11
star
12

vim-starter-kit

Get your Vim ready for real coding
Shell
5
star
13

S-Expression.JS

S-Expression Parser, Serializer, Interpreter, and Tree Constructor / Walker Utilities for JavaScript in Browsers and Node.js
JavaScript
4
star
14

vim-docker-compose-syntax

Fancy Docker-Compose Syntax Highlighting Plugin for Vim
Vim Script
4
star
15

easy-navigate.vim

Common navigation keymaps for Vim
Vim Script
4
star
16

simple-blockchain-service

Web Service of Simple Private Blockchain | Project @ Udacity's Blockchain Developer Nanodegree
JavaScript
3
star
17

alpine-mpich-cluster

Cluster setup for distributed MPI project based on alpine-mpich image
Shell
3
star
18

grading-app

Cross-platform desktop application for grading students' assignments (built with NW.js)
JavaScript
3
star
19

armhf-alpine-qemu

Alpine Linux for ARMhf devices like Raspberry Pi or Odroid + QEMU static binary
3
star
20

vim-maven-syntax

Apache Maven syntax highlighting plugin for Vim
Vim Script
2
star
21

dotfiles

Personal Configuration Dotfiles
Vim Script
1
star
22

vim-lisp-syntax

Vim Lisp Syntax Highlighting Improved
JavaScript
1
star
23

nd00333-capstone

Crypto Forecasting With Azure ML
Jupyter Notebook
1
star
24

nd00333_AZMLND_C2

Operationalizing Machine Learning - Udacity's Azure Machine Learning Nanodegree Project 2
Jupyter Notebook
1
star