Skip to main content
Skip to main content
Version: 2.0 (Current)

Communication Primitives

GASNet-style runtimes generally expose two classes of primitives: remote memory access and active messages.

Remote memory access

  • Put: one-sided write into a remote address space
  • Get: one-sided read from a remote address space

Focus on these metrics:

  • Initiation cost vs. completion latency
  • Ordering guarantees
  • Alignment and registration penalties

Put and get across languages

Remote memory access bindings
gasnet_put(dest, src, size);
gasnet_get(dest, src, size);

Active messages

Active messages combine data movement with a handler invocation on the target node. They are valuable for control-plane and fine-grained coordination.

Key observations to document:

  • Handler queue depth
  • Handler execution time
  • Progress mode (polling vs. interrupts)

Interactive latency model

Use the slider to visualize how fixed overhead impacts small message latency.

Live Editor
function LatencyModel() {
  const [payloadKb, setPayloadKb] = React.useState(1);
  const baseUs = 0.7;
  const perKbUs = 0.18;
  const latency = (baseUs + perKbUs * payloadKb).toFixed(2);

  return (
    <div>
      <label>
        Payload (KB): {payloadKb}
        <input
          type="range"
          min="1"
          max="64"
          value={payloadKb}
          onChange={event => setPayloadKb(Number(event.target.value))}
        />
      </label>
      <p>Estimated latency: {latency} μs</p>
    </div>
  );
}
Result
Loading...
Loading comments...