1 / 16

OFI SW Proposal

OFI SW Proposal. Sean Hefty - Intel Corporation. Review. We are already starting with multiple solutions Open source and proprietary Merge into a single open source solution Fix problems with the current solution(s) Application driven!

keene
Download Presentation

OFI SW Proposal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OFI SW Proposal Sean Hefty - Intel Corporation

  2. Review • We are already starting with multiple solutions • Open source and proprietary • Merge into a single open source solution • Fix problems with the current solution(s) • Application driven! • Verbs forever is as simple as the applications requesting it www.openfabrics.org

  3. Target Software • Can we do all? How? • Consensus based on comments from WG participants on 4/8 www.openfabrics.org

  4. Approach • ibverbs / rdmacm • Continue to target corresponding kernel modules • Maintain current semantics • E.g. completion ordering • Extend functionality where acceptable • fabric • Support multiple kernel interfaces • Including uverbs / ucma • Abstracted (application) semantics • Transport / network / link / device agnostic • Application-oriented interfaces • Integrated CM www.openfabrics.org

  5. libfabricPackage • Integrates libibverbs and librdmacm as sub-trees • Full library compatibility • Tracks upstream development • Easy to merge changes • Can coordinate releases, but not required • All changes go through upstream first • Builds and installs libibverbs, librdmacm, and libfabric www.openfabrics.org

  6. fabtestsPackage • Integrates libibverbs, librdmacm, perftest as sub-trees • Tracks upstream development • Builds and installs example programs • Extended examples and tests for new APIs www.openfabrics.org

  7. Overlapping Interfaces • Identify interface sets usable by both extended verbs and version 2 APIs • Verbs acceptance gated by upstream inclusion • API is usable, but functionality may be limited • Migration path from v1 to v2 APIs • Providers and applications can adopt either or both, and in different capacities • Control interface discussion deferred www.openfabrics.org

  8. MSG ops structfi_ops_msg { size_t size; ssize_t (*recv)(fid_t fid, void *buf, size_tlen, uint64_t desc, void *context); ssize_t (*recvv)(fid_t fid, const void *iov, size_t count, void *context); ssize_t (*recvfrom)(fid_t fid, void *buf, size_tlen, uint64_t desc, const void *src_addr, void *context); ssize_t (*recvmsg)(fid_t fid, conststructfi_msg *msg, uint64_t flags); ssize_t (*send)(fid_t fid, const void *buf, size_tlen, uint64_t mem_desc, void *context); ssize_t (*sendv)(fid_t fid, const void *iov, size_t count, void *context); ssize_t (*sendto)(fid_t fid, const void *buf, size_tlen, uint64_t desc, const void *dest_addr, void *context); ssize_t (*sendmsg)(fid_t fid, conststructfi_msg *msg, uint64_t flags); }; www.openfabrics.org

  9. RMA ops structfi_ops_rma { size_t size; int (*read)(fid_t fid, void *buf, size_tlen, uint64_t desc, uint64_t addr, uint64_t key, void *context); int (*readv)(fid_t fid, const void *iov, size_t count, uint64_t addr, uint64_t key, void *context); int (*readfrom)(fid_t fid, void *buf, size_tlen, uint64_t desc, const void *src_addr, uint64_t addr, uint64_t key, void *context); int (*readmsg)(fid_t fid, conststructfi_msg_rma *msg, uint64_t flags); int (*write)(fid_t fid, const void *buf, size_tlen, uint64_t desc, uint64_t addr, uint64_t key, void *context); int (*writev)(fid_t fid, const void *iov, size_t count, uint64_t addr, uint64_t key, void *context); int (*writeo)(fid_t fid, const void *buf, size_tlen, uint64_t desc, const void *dest_addr, uint64_t addr, uint64_t key, void *context); int (*writemsg)(fid_t fid, conststructfi_msg_rma *msg, uint64_t flags); }; www.openfabrics.org

  10. New Interfaces • Currently do not apply to verbs • As defined by either the IB or iWarp specs • May be applicable in the future www.openfabrics.org

  11. Tagged ops structfi_ops_tagged { size_t size; ssize_t (*recv)(fid_t fid, void *buf, size_tlen, uint64_t tag, uint64_t ignore, void *context); ssize_t (*recvv)(fid_t fid, const void *iov, size_t count, uint64_t tag, uint64_t ignore, void *context); ssize_t (*recvfrom)(fid_t fid, void *buf, size_tlen, const void *src_addr, uint64_t tag, uint64_t ignore, void *context); ssize_t (*recvmsg)(fid_t fid, conststructfi_msg_tagged *msg, uint64_t flags); ssize_t (*send)(fid_t fid, const void *buf, size_tlen, uint64_t tag, void *context); ssize_t (*sendv)(fid_t fid, const void *iov, size_t count, uint64_t tag, void *context); ssize_t (*sendto)(fid_t fid, const void *buf, size_tlen, const void *dest_addr, uint64_t tag, void *context); ssize_t (*sendmsg)(fid_t fid, conststructfi_msg_tagged *msg, uint64_t flags); }; www.openfabrics.org

  12. Atomic ops – part 1 structfi_ops_atomic { size_t size; int (*write)(fid_t fid, const void *buf, size_tlen, uint64_t desc, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*writev)(fid_t fid, const void *iov, size_t count, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*writeto)(fid_t fid, const void *buf, size_tlen, uint64_t desc, const void *dest_addr, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*writemsg)(fid_t fid, conststructfi_msg_atomic *msg, uint64_t flags); www.openfabrics.org

  13. Atomic ops – part 2 int (*readwrite)(fid_t fid, const void *buf, size_tlen, uint64_t desc, void *result, uint64_t result_mem_desc, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*readwritev)(fid_t fid, const void *iov, size_t count, void *resultv, size_tresult_count, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*readwriteto)(fid_t fid, const void *buf, size_tlen, uint64_t desc, void *result, uint64_t result_mem_desc, const void *dest_addr, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*readwritemsg)(fid_t fid, conststructfi_msg_atomic *msg, void *resultv, size_tresult_count, uint64_t flags); www.openfabrics.org

  14. Atomic ops – part 3 int (*compwrite)(fid_t fid, const void *buf, size_tlen, uint64_t desc, const void *compare, uint64_t compare_desc, void *result, uint64_t result_mem_desc, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*compwritev)(fid_t fid, const void *iov, size_t count, const void *comparev, size_tcompare_count, void *resultv, size_tresult_count, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*compwriteto)(fid_t fid, const void *buf, size_tlen, uint64_t desc, const void *compare, uint64_t compare_desc, void *result, uint64_t result_mem_desc, const void *dest_addr, uint64_t addr, uint64_t key, intdatatype, int op, void *context); int (*compwritemsg)(fid_t fid, conststructfi_msg_atomic *msg, const void *comparev, size_tcompare_count, void *resultv, size_tresult_count, uint64_t flags); www.openfabrics.org

  15. Atomic ops – part 4 int (*writevalid)(fid_t fid, intdatatype, int op, size_t *count); int (*readwritevalid)(fid_t fid, intdatatype, int op, size_t *count); int (*compwritevalid)(fid_t fid, intdatatype, int op, size_t *count); }; www.openfabrics.org

  16. CM structfi_ops_cm { size_t size; int (*getname)(fid_t fid, void *addr, size_t *addrlen); int (*getpeer)(fid_t fid, void *addr, size_t *addrlen); int (*connect)(fid_t fid, const void *addr, const void *param, size_tparamlen); int (*listen)(fid_t fid); int (*accept)(fid_t fid, const void *param, size_tparamlen); int (*reject)(fid_t fid, structfi_info *info, const void *param, size_tparamlen); int (*shutdown)(fid_t fid, uint64_t flags); int (*join)(fid_t fid, void *addr, void **fi_addr, uint64_t flags); int (*leave)(fid_t fid, void *addr, void *fi_addr, uint64_t flags); }; www.openfabrics.org

More Related