برنامه نویسی موازی شبکه روی سیستم GPU چندهستهای شتابیافته با بهینه سازی
چکیده
واضح است که کدگذاری شبکه به عنوان روشی امیدوارکننده برای بهبود بازده شبکه و پهنای باند موجود پدید آمده است. اما، با توجه به پیچیدگی محاسباتی بالا، قابلیت پیادهسازی کدگذاری شبکه هنوز هم به عنوان یک چالش بر جای مانده است. همچنین، کاربردهای شتابیافته با GPU محدود به روشهای سنتی هستند، که در آن GPU بعنوان یک کوپروسسور[1] برای مصرف مجموعهدادههای انتقالی از CPU استفاده میشود. بنابراین، یک چارچوب کدگذاری شبکه موازی مهاجم با بهینهسازی برای GPU سفارشی شده است، که در آن یک گرنیولاریتی[2] مناسب موازیشدگی برای کدگذاری شبکه ارائه شده است، و GPU نه تنها میتواند به عنوان مصرفکننده داده، بلکه تولیدکننده داده نیز عمل کند. علاوه بر این، کدگذاری شبکه خطی تصادفی، در GPU فعال شده با CUDA موازی و بهینهسازی شده است تا به اعتباربخشی روش ارائه شده بپردازد. نتایج عملی [آزمایشگاهی] نشان میدهد که موازی کردن کدگذاری شبکه در سیستم چندهسته شتابیافته با GPU استفاده از روشهای پیشنهادی بسیار موثر است.
کلمات کلیدی: GPU، کدگذاری شبکه، موازیسازی، CUDA، بهینهسازی.
1. مقدمه
کدگذاری شبکه، یکپارچهسازی کدگذاری اطلاعات و مسیریابی شبکه، تکنیکی برای تبادل اطلاعات است، که در آن بستههای اطلاعاتی قبل از ارسال کدبندی [کدگذاری] میشوند.
با توجه به مزایایی از قبیل بهبود بازده شبکه، متعادل کردن بارها، کاهش تاخیر انتقال و مصرف انرژی گره، و افزایش استحکام شبکه [1]، کدگذاری شبکه به طور گستردهای در ذخیرهسازی فایلهای توزیعی [2] در شبکههای بیسیم استفاده شده است [3]. با این حال، واقعیت وجود محیط شبکه غیرقطعی [4]، پیچیدگی محاسباتی بالای کدگذاری شبکه [5] به عملکرد سیستمهای کدگذاری شبکه [5] آسیب میرساند، لذا قابلیت پیادهسازی آن هنوز هم یک چالش است. بنابراین، بهینهسازی کدگذاری شبکه [6] کاربردی است، و بهینهسازی به نفع کاهش محاسبات و هزینه کدگذاری شبکه از جمله الگوریتم بهبود کدگذاری شبکه [7] و شتاب کدگذاری شبکه مبتنی بر سخت افزار یا معماری [5] [8-9] است.
کدگذاری شبکه شتابیافته با معماری GPU به نتایج قابلتوجهی دست یافته است و هنوز هم در حال پیشرفت است. با این حال، کار قبلی برای به حداکثر رساندن مصرف منابع محاسباتی GPU برای بازده سیستم کدگذاری شبکه موازی اختصاص داده شده است اما هنوز هم مطلوب نیست. همچنین، کار کمی بر روی بهینهسازی سلسله مراتب حافظه برای سیستم کدگذاری شبکه وجود دارد. بنابراین، یک چارچوب کدگذاری موثر شبکه موازی از جمله بهینهسازی حافظه برای بهبود بهرهبرداری علاوه بر مصرف منابع محاسباتی GPU ارائه شده لازم است.
2. معماری و مدل برنامه نویسی CUDA
شکل 1، نمایی کلی از معماری سیستم مشترک متشکل از GPU و CPU را نشان میدهد، که در آن دادهها بین CPU و GPU با کانال PCIe مورد تقاضا انتقال مییابند. معماریGPU شامل تعدادی از مولتیپروسسورهای مقیاسپذیر (SMها) است که هر کدام شامل هشت هسته جریان پردازنده (SP) است و هر سه SM تشکیل یک شاخه مولتی پروسسور ریسهای (TPC) در NVidia GTX 280، حافظه پنهان[3] ثابت خواندنی، و حافظه پنهان بافت[4] خواندنی است. علاوه بر این، هر SM دارای16KB حافظه داخلی خواندنی و نوشتنی است که وجه مشترک همه SP های 8 بیتی است.
...