All releases of The Cell Messaging Layer


Changes: Numerous bugs were fixed, some severe. The "showcase" example was modified to sanity-check the result of the reductions/multicasts.


Changes: This release fixes a race condition that could enable one SPE to receive a message destined for a neighboring SPE. It fixes a compilation bug that prevented CML from building in non-hybrid mode in the absence of MPI. More error checking for message sizes has been added. The PPE code has been modified to more promptly drain the SPE request queues.


Changes: SPE-to-PPE RPC calls are simplified by allowing CML_BYTE_SWAP_NOT_NEEDED as the unit of byte-swapping. A sporadic hang-on-exit bug has been fixed. CML cooperates better with applications by using mfc_tag_reserve() to allocate DMA tags. Collective-communication code has been refactored to use less memory in some cases.


Changes: The remote procedure call (RPC) mechanism now tells the callee who the caller is, more precisely defines the semantics of what can and can't be done with the input and output buffers, and fixes a race condition that could lead to corruption of the data returned by an RPC function. The SPE's cellmsg_rpc() function now requires two extra parameters, making it more consistent with the PPE's cellmsg_rpc() function. The build process should be more robust when dealing with file timestamp issues.


Changes: The build process is now more robust to incorrect timestamps on files and is slightly better at constructing some of the Makefile build variables. A CMLDACSTHREADED environment variable has been introduced to control whether DaCS should surround all of its internal operations with locks. An end-of-run race condition has been fixed. CML has been tested on the full, 12,240-Cell Roadrunner supercomputer.


Changes: MPI tags are now supported. "make help-config" lists all CML-specific configuration options. Support for 32-bit PPE builds has been dropped.


Changes: Hybrid clusters (e.g. the Roadrunner supercomputer) are now supported. The remote procedure call mechanism is easier to use. SPE main() functions now accept real argc and argv[]. A new MPI_COMM_MEM_DOMAIN communicator enables intra-Cell collectives. "make explain" explains configuration error messages. The PPE's cellmsg_run() can now take either a filename or a spe_program_handle_t. A ping-pong benchmark has been added to the examples directory.


Changes: This release runs on the PlayStation 3 in addition to the BladeCenter QS22 (the primary development platform).


Changes: MPI_Wtick() has been added to the API. Files have been split into finer pieces to make the library more space-efficient. Internal PPE-to-SPE data transfers are now implemented in a non-blocking manner.


Changes: On the PPE side, some of cellmsg_init()'s arguments have been moved to cellmsg_run(). The PPE API now includes cellmsg_finalize(), cellmsg_ppes(), and cellmsg_this_ppe(). The SPE API is unmodified.