PM [73] is an active-message like communication mechanism on the Myrinet. Other libraries for communication over Myrinet include Myrinet API [14] (by Myricom), Fast Messages [62] and Active Messages [74] on Myrinet (Berkeley). Myrinet API is a multiuser API, but pays heavy cost for context-switching etc. and as a result the message latency is much larger than the other approaches. FM and AM-Myrinet are single user API's: Exactly one thread could be using the switch from start to completion. Also, AM requires modification to the OS kernel. PM supports multiuser channels using a user-level scheduling daemon process called S-core. It uses a modified ACK/NACK algorithm to preserve ordering among messages, and to determine when it is safe to switch context. Variable length messages of lengths up to a pagesize (4K) are allowed. For messages larger than that, one has to build packetization routines on top of PM.
Converse presents a higher level API, that is more tuned to implementing other languages than active messages and variants, which are geared toward implementing runtime systems for those languages. Converse implementations on clusters using Myrinet can use each of these APIs. Converse does not impose any restriction on the message sizes, and explicit packetization need not be implemented. In addition, Converse does not need message ordering. Therefore, the modified ACK/NACK is an overkill for our requirements.