Title: Parallel Programming in BEC (A Tutorial) Speaker: Mike Heroux and Zhaofang Wen, CSRI, Sandia National Labs Date/Time: Thursday, April 10th, 2008, 10:00am-12:00pm (Mountain Time) Location: CSRI Building, Room 90 (Sandia NM), , video-conferenced to 915/N153 Sandia/CA Brief Abstract: Bundle-Exchange-Compute (BEC) is a new programming environment developed at Sandia. BEC allows programming with “shared” variables on distributed-memory machines. BEC has built-in efficient support for unstructured applications, such as parallel sparse-matrix, graph algorithms, and material physical simulations that require high-volume random fine-grained communication. Specifically, the global view of shared data structures enables ease of algorithm design and programming; and for good application performance, fine-grained (random) accesses to shared data are automatically and dynamically bundled together for coarse-grained message-passing. BEC frees the users from explicit management of data distribution, locality, and communication. Therefore, BEC is much easier to program than MPI, while achieving comparable application performance. Early applications show that simple BEC codes can match complex and highly optimized MPI codes. For example, a BEC implementation of the sparse linear solver using the Conjugate Gradient method required just 11 lines of code for communication (compared to 277 lines in MPI) while exhibiting comparable performance and scalability to the production MPI implementation. BEC extends ANSI C to allow “shared” variables. BEC also includes a runtime library with a very simple API (a user only needs to know a few functions). A BEC program is translated into C code plus BEC library calls. BEC can be used alone, or mixed together with MPI in the same code as an enhancement to support unstructured applications. CSRI POC: |