|Bundle-Exchange-Compute (BEC) is a parallel
programming model developed at Sandia National Labs, in collaboration with Syracuse University.
- BEC supports virtual shared memory
- BEC includes an extension to C for shared variables,
and a portable runtime library (BEC
with MPI: BEC code and MPI code can intermix.
application performance (compatible with MPI)
to use (much easier than MPI): BEC programmers are free from
explicit management of data distribution and locality, communication,
and synchronization. BEC makes programming of complex unstructured
communication patterns very easy.
A BEC program has
and code sections that typically repeat the Bundle-Exchange-Compute
phases. For example,
Programming in BEC
A, B, C; /* globally shared data
data needs to be requested before
requests will be Bundled by
the runtime library */
/* Exchange bundled requests
After exchange, compute C
using A and B as if
they were local.
location C will be updated in
next round of global exchange */
= (C language extension for shared variables) + (BEC Lib)
- BEC Lib can be used with or without
- BEC can be used alone, or as
enhancements to MPI and other programming languages/models.
is readily portable to
any machine (including PC) with a C/C++ compiler, Unix/Linux, and a
message-passing library such as MPI.