What is Chapel?
Supported Chapel versions:
This is the core image for Chapel. It provides the complete Chapel compiler and runtime. It can be used to compile and run Chapel programs inside the Docker container. On 64-bit Linux hosts, the compiled Chapel program binary can sometimes be executed outside the container (your mileage may vary). Other Chapel-based Docker images can be created from this image.
The Chapel core image (above), rebuilt with
GASNET_SPAWNFN=L. Simulates a multilocale Chapel platform within the Docker container.
Multilocale Chapel brings additional requirements, unrelated to Docker. The
chpl compilation produces two binary files (e.g.
hello_real as well as
hello). When you run the binary, you need another command line parameter,
-nl #, to specify the number of locales. Please see Multilocale Chapel Execution for details.
How to use the image
Compile your Chapel program
The image can be used to compile and run your Chapel program inside the container.
In the following example, you start a shell in the container and use the interactive session to compile and run your Chapel program, all within the container. The
-v argument mounts the current directory in the container,
-w sets the working directory to this mounted directory,
-i gives you STDIN, and
-t allocates a psuedo-TTY, giving you STDOUT and STDERR.
The Chapel compiler,
chpl, is invoked much like
gcc, with argument
-o to specify the name of the output binary. Then the binary file,
hello, is run in the usual way.
$ echo 'writeln("Hello, world!");' > hello.chpl $ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp chapel/chapel /bin/bash root@xxxxxxxxx:/usr/src/myapp# chpl -o hello hello.chpl root@xxxxxxxxx:/usr/src/myapp# ./hello Hello, world!
Alternatively, you could compile your program in one instance of the container, and run it in another, for the same end result.
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp chapel/chapel chpl -o hello hello.chpl $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp chapel/chapel ./hello Hello, world!
On 64-bit Linux systems, the resultant binary can sometimes be run outside the container, if it was compiled with the
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp chapel/chapel chpl --static -o hello hello.chpl $ ./hello Hello, world!
View license information for the software contained in this image.
If you have any questions about or problems with this image, please write to the Chapel developers mailing list. To post a message to all the list members, send email to email@example.com. You may also be interested in other Chapel resources for developers, including the
#chapel-developers IRC channel on Freenode.