running Pocl in Docker

Install Docker

  • install docker for your distribution
  • start the docker daemon
  • make sure you have enough space (default location is usually /var/lib/docker, required storage for standard pocl build is about 1.5 GB per container, and more than 10GB for TCE/PHSA builds)

start Pocl container

  • create an empty directory <D>
  • copy Dockerfile of your choice (any file from tools/docker/) to <D>/Dockerfile
  • cd <D> ; sudo docker build -t TAG . .. where TAG is a name you can choose for the build.
  • sudo docker run -t TAG
  • this will by default use master branch of pocl git; to use a different branch/commit, run docker build with --build-arg GIT_COMMIT=<branch/commit>

Dockerfiles

Many are split up into two or three build stages, in which you must build all but last stage with a proper tag (grep the dockerfiles for “FROM <TAG>”). Dockerfiles are named according to what they build:

  • base: the first stage in multi-stage Docker builds. Downloads dependencies

    and clones pocl git repo but does nothing more.

  • default: builds pocl, then runs the internal tests from build dir.

    Uses latest release of a distribution, with whatever is the default version of LLVM.

  • <release>: same as above, except uses specific release and specific LLVM version (the latest available in that release).

  • default.32bit: same as default but sets up i386 environment

  • test_install: builds & installs pocl into system path, then runs the internal tests

  • distro: does a distribution-friendly build (enables runtime detection of CPU, etc)

Some additional notes: * Arch Dockerfiles are split up into two-stage builds * some (not all) Ubuntu Dockerfiles are split up into multi-stage builds * RHEL 7 was added, it’s using unofficial LLVM 5.0 binaries from copr, since the official RHEL 7 LLVM is too old. * TCE added - TCE is built using three stages (LLVM, TCE, pocl) * PHSA added - also built using three stages (LLVM, PHSA runtime, pocl)