Unified Communication X (UCX) هو إطار عمل محسّن للإنتاج ومثبت الاتصال حائز على جوائز للشبكات الحديثة ذات النطاق الترددي العالي والشبكات ذات زمن الوصول المنخفض.
يعرض UCX مجموعة من أساسيات الاتصالات المجردة التي تستخدم أفضل موارد الأجهزة المتاحة وعمليات التفريغ. يتضمن ذلك RDMA (InfiniBand وRoCE)، وTCP، ووحدات معالجة الرسومات، والذاكرة المشتركة، والعمليات الذرية للشبكة.
يرجى زيارة موقع التوثيق الخاص بنا لمزيد من التفاصيل.
يرجى مراجعة سياسات "معيار الإجماع الطوعي للعضوية" و"تصدير تقديمات المساهمة المتوافقة".
عادةً ما يكون بناء UCX مزيجًا من تشغيل "التكوين" و"الإنشاء". في حالة استخدام إصدار tarball، قم بتنفيذ الأوامر التالية لتثبيت نظام UCX من داخل الدليل الموجود أعلى الشجرة:
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
في حالة استنساخ مستودع git مباشرة، استخدم:
$ ./autogen.sh
$ ./contrib/configure-release --prefix=/where/to/install
$ make -j8
$ make install
ملاحظة: قد يتطلب تجميع الدعم لشبكات مختلفة أو أجهزة محددة أخرى علامات سطر أوامر إضافية عند تشغيل التكوين.
$ ./autogen.sh
$ ./contrib/configure-devel --prefix= $PWD /install-debug
*** ملاحظة: تشتمل إصدارات المطورين لـ UCX عادةً على عقوبة أداء كبيرة في وقت التشغيل بسبب تعليمات برمجية إضافية لتصحيح الأخطاء.
$ contrib/buildrpm.sh -s -b
$ dpkg-buildpackage -us -uc
$ make docs
صفحة ويكي
صفحة ويكي
بدء الخادم:
$ ./src/tools/perf/ucx_perftest -c 0
ربط العميل:
$ ./src/tools/perf/ucx_perftest < server-hostname > -t tag_lat -c 1
ملاحظة: تقوم العلامة
-c
بتعيين تقارب وحدة المعالجة المركزية. في حالة تشغيل كلا الأمرين > على نفس المضيف، تأكد من ضبط التقارب على مراكز مختلفة لوحدة المعالجة المركزية.
$ make -C test/gtest test
يحتوي الإصدار 1.8.0 من UCX على خطأ قد يتسبب في تلف البيانات عند استخدام نقل TCP بالتزامن مع نقل الذاكرة المشتركة. يُنصح بالترقية إلى إصدار UCX 1.9.0 وما فوق. إصدارات UCX التي تم إصدارها قبل 1.8.0 لا تحتوي على هذا الخطأ.
قد يتعطل UCX مع إصدارات glibc 2.25-2.29 بسبب الأخطاء المعروفة في وظائف pthread_rwlock. عند حدوث مثل هذه حالات التوقف، يتعطل أحد مؤشرات ترابط UCX في pthread_rwlock_rdlock (الذي يتم استدعاؤه بواسطة ucs_rcache_get)، على الرغم من عدم وجود مؤشر ترابط آخر يحمل القفل. تم الإبلاغ عن مشكلة ذات صلة في glibc Bug 23844. في حالة حدوث هذه المشكلة، يُنصح باستخدام إصدار glibc المتوفر مع توزيع نظام التشغيل لديك أو إنشاء glibc من المصدر باستخدام إصدارات أقل من 2.25 أو أكبر من 2.29.
نظرًا لوجود خلل في التوافق عند استخدام UCX مع إعداد rdma-core v22، فإن UCX_DC_MLX5_RX_INLINE=0 غير مدعوم وسيجعل النقل DC غير متاح. تم إصلاح هذه المشكلة في الإصدار 24 من rdma-core وتم نقلها إلى rdma-core-22.4-2.el7 rpm. راجع إصدار ucx رقم 5749 لمزيد من التفاصيل.
عنصر | دور | وصف |
---|---|---|
الأعراف والممارسات الموحدة | بروتوكول | ينفذ تجريدات عالية المستوى مثل مطابقة العلامات، والتدفقات، والتفاوض على الاتصال وإنشاءه، والسكك الحديدية المتعددة، والتعامل مع أنواع الذاكرة المختلفة |
UCT | ينقل | ينفذ أساسيات الاتصال ذات المستوى المنخفض مثل الرسائل النشطة والوصول إلى الذاكرة عن بعد والعمليات الذرية |
يو سي إس | خدمات | مجموعة من هياكل البيانات والخوارزميات وأدوات النظام المساعدة للاستخدام الشائع |
UCM | ذاكرة | يعترض تخصيص الذاكرة وأحداث التحرير المستخدمة من قبل ذاكرة التخزين المؤقت لتسجيل الذاكرة |
ملحوظة: UCX >= 1.12.0 يتطلب rdma-core >= 28.0 أو MLNX_OFED >= 5.0 لدعم النقل Infiniband وRoCE.
UCX مرخص على النحو التالي:
من أجل المساهمة في UCX، يرجى التسجيل باستخدام اتفاقية المساهمة المناسبة.
يجب على جميع المساهمين الالتزام بسياسات "معيار الإجماع الطوعي للعضوية" و"تصدير تقديمات المساهمة المتوافقة".
اتبع هذه التعليمات عند تقديم المساهمات والتغييرات.
للإشارة إلى UCX في أحد المنشورات، يرجى استخدام الإدخال التالي:
@inproceedings { shamis2015ucx ,
title = { UCX: an open source framework for HPC network APIs and beyond } ,
author = { Shamis, Pavel and Venkata, Manjunath Gorentla and Lopez, M Graham and Baker, Matthew B and Hernandez, Oscar and Itigin, Yossi and Dubman, Mike and Shainer, Gilad and Graham, Richard L and Liss, Liran and others } ,
booktitle = { 2015 IEEE 23rd Annual Symposium on High-Performance Interconnects } ,
pages = { 40--43 } ,
year = { 2015 } ,
organization = { IEEE }
}
للرجوع إلى موقع UCX:
@misc { openucx-website ,
title = { {The Unified Communication X Library} } ,
key = { {{The Unified Communication X Library}},
howpublished = {{url{http://www.openucx.org}}}
}