Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

containerize Gunrock #349

Closed
jowens opened this issue Jun 29, 2018 · 6 comments
Closed

containerize Gunrock #349

jowens opened this issue Jun 29, 2018 · 6 comments
Assignees
Labels

Comments

@jowens
Copy link
Contributor

@jowens jowens commented Jun 29, 2018

We should make a Docker container for Gunrock.

Not assigned yet, but something we ought to / need to do.

@neoblizz neoblizz added the todo label Jul 6, 2018
@1duo

This comment has been minimized.

Copy link
Member

@1duo 1duo commented Jul 13, 2018

@jowens @neoblizz Sounds like an hour work for me. I'd be happy to contribute in my spare time. Let me know if needed. I'm sure this will help other users/developers to get started with Gunrock much easier.

@neoblizz

This comment has been minimized.

Copy link
Member

@neoblizz neoblizz commented Jul 13, 2018

@1duo

This comment has been minimized.

Copy link
Member

@1duo 1duo commented Jul 13, 2018

Cool. Any specific requirements? I guess we want ubuntu16.04 + CUDA 9.1 + boost 1.58?

@neoblizz

This comment has been minimized.

Copy link
Member

@neoblizz neoblizz commented Jul 13, 2018

@1duo 1duo self-assigned this Jul 13, 2018
@jowens

This comment has been minimized.

Copy link
Contributor Author

@jowens jowens commented Jul 13, 2018

@1duo this is super awesome. Um, just for all of us who don't know this, tell us why a container is good and what's going on here. I simply don't know squat about containers. I am so happy you're doing this. But I want to know why it's good for us. :)

@1duo

This comment has been minimized.

Copy link
Member

@1duo 1duo commented Jul 13, 2018

@jowens My understanding: for Gunrock, it mostly helps users/developers to get started faster and easier.

  • Infrastructure agnostic: no matter you have macOS, Linux (Ubuntu, CentOS, etc.), or Windows. Anyone has NVIDIA GPU(s) and driver installed (docker, with NVIDIA plugin, needs to mount both devices and drivers into containers), can run Gunrock easily.

  • No need to install dependencies on host machine: packages are pre-installed/configured in docker images (you select a docker image when docker run). you don't need to install CUDA/Boost/METIS and any other dependencies on host machine (good for people want to try Gunrock but lazy to install/switch OS/dependency versions). Configure once in Dockerfile, update if necessary, then and simply docker run, you'll get all packages.

  • Consistent environment: Dockerfile freezes OS and software versions. You'll guaranteed to have same software versions and easily switch/test them simply changing containers (good for CI/CD and tests). For example, you can have Gunrock docker image for CentOS7 + CUDA9.1 + Boost1.58, in the meantime, another docker image for Ubuntu18.04 + CUDA9.2 + Boost1.64, etc. No longer needs two different physical/virtual machines. Run tests on different environment as easy as run two different processes. See here, I have two environments. Only difference is the base image, docker are layered, here I initiated from nvidia/cuda docker image maintained by NVIDIA, I simply adding dependencies layer (apt-gets) and Gunrock layers (git clone and compile) on top of it.

  • Unlike VM, almost no performance impact: from this IBM paper:

Docker is nearly identical to Native performance and faster than KVM in every category.

Plus, many other benefits that might not be necessary for researchers and developers, but it's essential for production environment. Say we want to deploy Gunrock in production. Host machine may have many different services/applications, each might need different OS/software versions. Have to use docker to make then co-exist on the same host. Several I can think of at this moment, might be more.

  • Isolation
  • Portability
  • Security
  • Compatibility and Maintainability
  • Rapid Deployment

...

In my work, I have to deal with workloads/libraries that have much more dependencies than Gunrock. So using docker is a must. Otherwise, too painful and time-consuming to deal with deployment / task scheduling.

@neoblizz neoblizz closed this Jul 15, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.