Running Chapel Programs with GASNet on your Desktop

This document give a few pointers on using Chapel with the GASNet communication layer on your desktop. For more general information about using the GASNet communication layer, see multilocale.rst in the release docs.


Set GASNet environment variables for simulating multiple Chapel locales on a single workstation as described in multilocale.rst.

GASNet may detect the existence of an Infiniband network even if one does not exist (due to the inclusion of Infiniband in the Linux kernel). If you do not have an Infiniband NIC in your workstation (or don’t want to use it), set CHPL_GASNET_CFG_OPTIONS=--disable-ibv when you build the GASNet library for your Chapel installation. Alternatively, you can set GASNET_QUIET=yes to avoid the GASNet warning messages from GASNet regarding using the Infiniband conduit.


See debugging.rst regarding debugging with CHPL_COMM_USE_GDB or CHPL_COMM_USE_LLDB.

Sometimes GASNet issues are general multi-locale issues that can be recreated by compiling the program with the --no-local flag and using CHPL_COMM=none. The --no-local flag assumes that all variables are non-local, and thus the compiler inserts communication and communication-related calls into the code. During program execution, the runtime checks to see if the reference is remote (which it will never be), and if the generated code is correct, the program will execute without issue. If the program does not complete as expected, you can use the --gdb flags to debug in gdb (see executing.rst).


To debug using valgrind, use the following command

% valgrind --trace-children=yes --suppressions=$CHPL_HOME/third-party/gasnet/gasnet-src/other/valgrind/gasnet.supp