Khronos is considering an open standardization initiative to unify point-to-point communication into a simple API with the aim of reducing application complexity, minimizing development costs, and improving time-to-market for high- performance embedded products. If successful, this new standard could transform the way applications are developed for heterogeneous systems and edge computing.
Edge computing applications typically need multiple point-to- point APIs to collect various types of sensor data, and distribute computing across processors, processes and threads. Development and maintenance are not trivial.
SOLUTION
A unified communication API should fit all endpoint variations.
Engineers who are focused on algorithm development, but not communication, struggle with high learning curves of communication APIs. Setting up communication endpoints and invoking efficient transfers can take weeks or months to get it right, but should take hours or days.
SOLUTION
The functionality of a unified communication API should only includes a few simple and intuitive concepts:
Common APIs |
Function Count |
Typical Drawbacks |
---|---|---|
Sockets | ~20 | Confusing naming/ concepts Difficult to tune for performance |
RDMA | ~100 | Confusing naming / concepts High learning curve, experts are rare |
libFabrics | ~100 | Confusing naming / concepts High learning curve, experts are rare |
MPI | ~300 | Confusing transfer variations ‘mpirun’ not portable and difficult to tune |
Embedded / edge computing has much different requirements than large homogeneous server farm computing. Lack of features may severely limit the choice of API, which may in turn force a much larger learning curve. For example:
SOLUTION
A unified communication API should support these critical features:
Some underlying interconnects may not support all the features, but the API should not limit the interconnects that can.
Performance is a combination of throughput, latency, and determinism. Some communication APIs may reduce performance provided by the underlying interconnect. For example, if the destination address of data is not know until transfer time, then the transfer may be zero- copy but it can't be one way; i.e. a round trip is required to know where to place the data.
SOLUTION
A unified API should provide best performance via:
Proposals are welcome – please contact us at .(JavaScript must be enabled to view this email address) if you would like to discuss getting involved.
Group | Functions | Details |
---|---|---|
Create | takyonCreate() takyonDestroy() |
Dynamically create and destroy endpoints |
Two-Sided | takyonSend() takyonIsSent() takyonPostRecvs() takyonIsRecved() |
Both endpoints involved with transfer via coordinated send -> recv |
One-Sided | takyonOneSided() takyonIsOneSidedDone() |
One endpoint does all the work, and the other endpoint is not involved |