/ / Infiniband के साथ GPUDirect RDMA का उपयोग कैसे करें - cuda, openmpi, infiniband, gpudirect

Infiniband के साथ GPUDirect RDMA का उपयोग कैसे करें - cuda, openmpi, infiniband, gpudirect

मेरे पास दो मशीनें हैं। प्रत्येक मशीन पर कई टेस्ला कार्ड हैं। प्रत्येक मशीन पर एक InfiniBand कार्ड भी है। मैं InfiniBand के माध्यम से विभिन्न मशीनों पर GPU कार्ड के बीच संवाद करना चाहता हूं। बस यूनिकस्ट को इंगित करना ठीक रहेगा। मैं निश्चित रूप से GPUDirect RDMA का उपयोग करना चाहता हूं ताकि मैं खुद को अतिरिक्त कॉपी संचालन से दूर कर सकूं।

मुझे पता है कि एक है चालक अपने InfiniBand के लिए मेलानॉक्स से अब उपलब्धपत्ते। लेकिन यह एक विस्तृत विकास गाइड की पेशकश नहीं करता है। मैं यह भी जानता हूं कि OpenMPI के पास उस सुविधा के लिए समर्थन है जो मैं पूछ रहा हूं। लेकिन इस सरल कार्य के लिए OpenMPI बहुत भारी है और यह एक प्रक्रिया में कई GPU का समर्थन नहीं करता है।

मुझे आश्चर्य है कि अगर मुझे सीधे मदद मिल सकती हैसंचार करने के लिए ड्राइवर का उपयोग करना। कोड नमूना, ट्यूटोरियल, कुछ भी अच्छा होगा। इसके अलावा, अगर कोई मुझे OpenMPI में इससे निपटने में कोड खोजने में मदद कर सकता है तो मैं इसकी सराहना करूंगा।

उत्तर:

उत्तर № 1 के लिए 6

GPUDirect RDMA को काम करने के लिए, आपको निम्नलिखित स्थापित करने की आवश्यकता है:

  • Mellanox OFED स्थापित (से) http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers )

  • हाल ही में NVIDIA CUDA सुइट स्थापित किया गया

  • मेलानॉक्स-एनवीआईडीआईए GPUDirect प्लगइन (ऊपर दिए गए लिंक से - अतिथि के रूप में पोस्टिंग मुझे लिंक पोस्ट करने से रोकता है :()

उपरोक्त सभी को (द्वारा) स्थापित किया जाना चाहिएऊपर सूचीबद्ध आदेश), और संबंधित मॉड्यूल लोड किए गए। उसके बाद, आपको आरडीएमए लेनदेन के लिए GPU वीडियो मेमोरी पर आवंटित मेमोरी को पंजीकृत करने में सक्षम होना चाहिए। नमूना कोड की तरह दिखेगा:

void * gpu_buffer;
struct ibv_mr *mr;
const int size = 64*1024;
cudaMalloc(&gpu_buffer,size); // TODO: Check errors
mr = ibv_reg_mr(pd,gpu_buffer,size,IBV_ACCESS_LOCAL_WRITE|IBV_ACCESS_REMOTE_WRITE|IBV_ACCESS_REMOTE_READ);

यह एक मेमोरी क्षेत्र बना देगा (एक GPUDirect RDMA सक्षम सिस्टम पर) एक वैध मेमोरी कुंजी के साथ जो आप हमारे HCA के साथ RDMA लेनदेन के लिए उपयोग कर सकते हैं।

अपने कोड में RDMA और InfiniBand क्रियाओं का उपयोग करने के बारे में अधिक जानकारी के लिए, आप इसका उल्लेख कर सकते हैं दस्तावेज़.