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)