برنامه نویسی موازی شبکه روی سیستم 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 بیتی است.
...
بررسی انواع میکروسنسور شتاب
میکرو شتاب سنج ها یکی دیگر از ادوات مهم MEMS هستند. همه سنسورهای شتاب دارای یک جسم سنگین هستند که تقریباً معلق است و از یک یا چند طرف با میله هایی به یک قاب وصل شده است. تحت تأثیر شتاب، اینرسی جسم باعث می شود که نیرویی به آن وارد شود و کمی جابجا شود. شتاب با خواندن تنش وارده شده به میله ها که روی آنها piezo-resistor ها هستند، اندازه گیری می شود، اولین میکرو شتاب سنج ها 1970 ساخته شدند و از همان آغاز برای اندازه گیری استرس وارد شده به پایه های جسم معلق، از مقاومت پیزو استفاده شد. برای جلوگیری از انحراف بیش از حد جسم معلق می توان صفحات محفظه را با فاصله کمی از جسم ساخت یا این که جسم معلق را در محفظه ای پر از روغن قرار داد.
شتاب سنج ها دو دسته هستند. یک دسته حساسیت کمی دارند و شتاب های زیاد را اندازه می گیرند. از این شتاب سنج ها در سیتم ترمز ( Antilok Brake System )، سیستم تعلیق ( Automatic Balance Control ) و سیستم کیسه هوایی خودروها می توان استفاده کرد. نوع دیگر حساسیت زیادی دارند و می توان از آنها در ربات ها، سیستم هدایت اتومبیل و نیز ناوبری هواپیما و فضا پیما و زیر دریایی ها استفاده کرد. لازم به ذکر است که هر شتاب سنج، شتاب را فقط در یک جهت اندازه می گیرد و برای اندازه گیری شتاب در دستگاه مختصات سه بعدی باید از سه شتاب سنج عمود بر هم استفاده کرد.
علاوه بر شتاب سنج های ساخته شده با میکروماشینینگ توده ای که در دهه 1980 به بازار آمدند( از طرف IC Sensor, Lucas Nova Sensor )، شتاب سنج های ساخته شده با میکروماشینینگ سطحی نیز اخیراً برای کاربرد سیستم کیسه هوایی خودروها وارده بازار شده اند.( ADXL50 از Analog Devices، MMAS40G از Motorolla ) سیستم باز کردن کیسه هوایی، یکی از کاربردهای نسبتاً جدید میکرو شتاب سنج ها ست. در این سیستم ها هنگامی که خودرو، شتاب منفی زیادی پیدا می کند، به کیسه هوایی فرمان باز شدن داده می شود. سنسورهای بکار رفته در این سیستم ها باید دارای اندازه کوچک، کیفیت بالا و قیمیت کم باشند. قیمت هر یک از این سنسورها در سال 97 حدود 4 دلار بوده که در سال 2000 به 2 دلار رسید.
این نسل های جدید شتاب سنج ها برای کارایی بیشتر، شامل یک مدار مجتمع پیچیده نیز هستند. سنسورهای بر مبنای اینرسی شامل سنسورهای شتاب و ژیروسکوپ های ناوبری در سال 2000 بازاری حدود 7/2 میلیارد دلار داشتند.
سنسور شتاب مبتنی بر مقاومت پیزو
طرز کار این سنسورها قبلاً توضیح داده شد و ساختار و روش ساخت آن نیز شبیه سنسورهای فشار مبتنی بر مقاومت پیزو است. طرح ساده یک نمونه آن که دارای 4 پایه است در شکل زیر دیده می شود.
سنسور شتاب تشدیدی
در این سنسور از خاصیت تغییر فرکانس تشدید یک جسم تقریباً معلق بر اثر استرس برای اندازه گیری شتاب استفاده می شود. معمولاً برای اندازه گیری تغییر فرکانس، از حالت خازنی استفاده می شود نه مقاومت پیزو.
در ساخت این سنسورها نیز ایده های مختلفی وجود دارد. از جمله این که دو نوسانگر مکانیکی باشند که بر اثر شتاب فقط فرکانس یکی از آنها تغییر کند. مثلاً به یکی از آنها وزنه ای وصل با شد. در این حالت با اندازه گیری اختلاف فرکانس تشدید آنها می توان مقدار شتاب را تعیین کرد. شتاب در جهت های دیگر نیز، از آنجا که بر هر دوی آنها تاثیر یکسان می گذارد، در اختلاف فرکانس آنها تأثیر نمی گذارند. General Motors سنسوری از این نوع ساخته که حساسیتش 160Hz/g است.
سنسور شتاب تونلی
در این سنسورها از پدیده تونل زنی الکترون ها بین دو جسم نزدیک به هم و وابستگی مقدار آن به فاصله هر دو جسم، استفاده شده است. این سنسورها حساسیت خیلی بالایی دارند و در فرکانس های تا چند کیلو هرتز هم می توانند کار کنند. پدیده تونل زنی بین یک جسم معلق خیلی کوچک و تیز است که با طلا پوشانده شده است. از آنجا که پدیده تونل زنی در محدوده خیلی کوچک و محدودی رخ می دهد، بهتر است سنسور را در یک سیستم فیدبک دار قرار داد که سعی کند فاصله بین دو الکترود را ثابت نگه دارد. مقدار نیروی لازم برای ثابت نگه داشتن جسم معلق نشان دهنده مقدار شتاب است. اعمال نیرو به جسم معلق را می توان توسط یک محرک پیزو الکتریک انجام داد.