Advanced Software Solutions for Intel Corporation

Advanced Software Solutions for Intel Corporation
Slide Note
Embed
Share

Implementing a comprehensive approach to software development, merging open source and proprietary solutions for optimal performance in application-driven environments. Incorporating Fabric Interfaces, maintaining module semantics, and integrating Ibverbs/Rdmacm to enhance functionality and support diverse kernel interfaces. Streamlining the development process with libfabric and fabtests packages, ensuring compatibility and seamless integration. Exploring overlapping interfaces and migration paths for enhanced versatility. Proposing a structured MSG.ops struct for efficient operations.

  • Software Development
  • Open Source Solutions
  • Fabric Interfaces
  • Kernel Modules
  • Compatibility

Uploaded on Feb 23, 2025 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

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 2 www.openfabrics.org

  3. Target Software Verbs RDMA CM Can we do all? How? 1.x + extensions 2.0 1.x + extensions 2.0 Fabric Interfaces ULPs Consensus based on comments from WG participants on 4/8 rsockets ES-API 2.0 APIs 3 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 4 www.openfabrics.org

  5. libfabric Package 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 5 www.openfabrics.org

  6. fabtests Package Integrates libibverbs, librdmacm, perftest as sub- trees Tracks upstream development Builds and installs example programs Extended examples and tests for new APIs 6 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 7 www.openfabrics.org

  8. MSG ops struct fi_ops_msg { size_t ssize_t (*recv)(fid_t fid, void *buf, size_t len, 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_t len, uint64_t desc, const void *src_addr, void *context); ssize_t (*recvmsg)(fid_t fid, const struct fi_msg *msg, uint64_t flags); ssize_t (*send)(fid_t fid, const void *buf, size_t len, 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_t len, uint64_t desc, const void *dest_addr, void *context); ssize_t (*sendmsg)(fid_t fid, const struct fi_msg *msg, uint64_t flags); }; size; 8 www.openfabrics.org

  9. RMA ops struct fi_ops_rma { size_t int (*read)(fid_t fid, void *buf, size_t len, 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_t len, uint64_t desc, const void *src_addr, uint64_t addr, uint64_t key, void *context); int (*readmsg)(fid_t fid, const struct fi_msg_rma *msg, uint64_t flags); int (*write)(fid_t fid, const void *buf, size_t len, 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_t len, uint64_t desc, const void *dest_addr, uint64_t addr, uint64_t key, void *context); int (*writemsg)(fid_t fid, const struct fi_msg_rma *msg, uint64_t flags); }; size; 9 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 10 www.openfabrics.org

  11. Tagged ops struct fi_ops_tagged { size_t ssize_t (*recv)(fid_t fid, void *buf, size_t len, 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_t len, const void *src_addr, uint64_t tag, uint64_t ignore, void *context); ssize_t (*recvmsg)(fid_t fid, const struct fi_msg_tagged *msg, uint64_t flags); ssize_t (*send)(fid_t fid, const void *buf, size_t len, 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_t len, const void *dest_addr, uint64_t tag, void *context); ssize_t (*sendmsg)(fid_t fid, const struct fi_msg_tagged *msg, uint64_t flags); }; size; 11 www.openfabrics.org

  12. Atomic ops part 1 struct fi_ops_atomic { size_t int (*write)(fid_t fid, int (*writev)(fid_t fid, const void *iov, size_t count, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*writeto)(fid_t fid, const void *buf, size_t len, uint64_t desc, const void *dest_addr, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*writemsg)(fid_t fid, const struct fi_msg_atomic *msg, uint64_t flags); size; const void *buf, size_t len, uint64_t desc, uint64_t addr, uint64_t key, int datatype, int op, void *context); 12 www.openfabrics.org

  13. Atomic ops part 2 int (*readwrite)(fid_t fid, const void *buf, size_t len, uint64_t desc, void *result, uint64_t result_mem_desc, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*readwritev)(fid_t fid, const void *iov, size_t count, void *resultv, size_t result_count, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*readwriteto)(fid_t fid, const void *buf, size_t len, uint64_t desc, void *result, uint64_t result_mem_desc, const void *dest_addr, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*readwritemsg)(fid_t fid, const struct fi_msg_atomic *msg, void *resultv, size_t result_count, uint64_t flags); 13 www.openfabrics.org

  14. Atomic ops part 3 int (*compwrite)(fid_t fid, const void *buf, size_t len, uint64_t desc, const void *compare, uint64_t compare_desc, void *result, uint64_t result_mem_desc, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*compwritev)(fid_t fid, const void *iov, size_t count, const void *comparev, size_t compare_count, void *resultv, size_t result_count, uint64_t addr, uint64_t key, int datatype, int op, void *context); int (*compwriteto)(fid_t fid, const void *buf, size_t len, 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, int datatype, int op, void *context); int (*compwritemsg)(fid_t fid, const struct fi_msg_atomic *msg, const void *comparev, size_t compare_count, void *resultv, size_t result_count, uint64_t flags); 14 www.openfabrics.org

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

  16. CM struct fi_ops_cm { size_t 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_t paramlen); int (*listen)(fid_t fid); int (*accept)(fid_t fid, const void *param, size_t paramlen); int (*reject)(fid_t fid, struct fi_info *info, const void *param, size_t paramlen); 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); }; size; 16 www.openfabrics.org

Related


More Related Content