کتاب برنامه نویسی موازی با کودا
این کتاب در سال 1397 توسط آقایان علی اکبر اله دانه و پیام کیافر در 994 صفحه نگارش شده است و در انتشارات ناقوس به چاپ رسیده است. این کتاب شامل دوازده فصل و دو پیوست الف و ب می باشد. در هر فصل از این کتاب علاوه بر پرداختن به مفاهیم فصل مربوطه به منظور تفهیم مفاهیم هر فصل چندین مثال عملی نیز راجع به برنامه نویسی کوائی آن آورده شده است. در این کتاب برای برنامه نویسی برای محاسبات موازی با GPU از پلتفرم کودا سی و سی پلاس پلاس استفاده شده است.
استفاده از توان محاسباتی رایانهها در تحقیقات علمی و فعالیتهای دانشگاهی، مراکز تحقیقاتی و شرکتهای تجاری، کاربرد روزافزونی پیدا نموده است؛ ازاینرو نیاز به پردازش سریعتر افزایش یافته و به یک نیاز اساسی تبدیل شده است. سرعت کامپیوترهای شخصی کنونی نسبت به اجداد خود بهطور سرسامآوری افزایش یافته است اما علیرغم وجود این موضوع باز جوابگوی نیازهای مطرحشده نیست. ازجمله عرصههایی که احتیاج به کامپیوترهایی با سرعت پردازش بسیار بالا دارند میتوان به برنامههای شبیهسازی در تحقیقات هستهای، نانو فناوری محاسباتی، برنامههای پیشبینی وضعیت هوا، برنامههای فیلمسازی کامپیوتری، برنامههای ساخت انیمیشن حرفهای و بسیاری از زمینههای مختلف دیگر که همگی بهسرعت پردازش بسیار زیاد نیاز دارند تا در یک زمان مناسب به نتیجه برسند اشاره کرد. یک راهحل برای این معضل، استفاده از سوپرکامپیوترها است. درست است که سرعت پردازش سوپرکامپیوترها بسیار بالاتر از کامپیوترهای شخصی است اما استفاده از آنها در همه موارد مقرونبهصرفه نیست؛ ضمن آنکه این فناوری در انحصار بعضی از کشورهای توسعهیافته است و سایر کشورها از دسترسی به این تجهیزات استراتژیک محروم هستند. راهحل دیگر در دستیابی به سرعت پردازش بسیار بالا، استفاده از روش پردازش موازی است. به بیان ساده در این روش چند پردازنده (در اینجا منظور پردازندههای گرافیکی) معمولی با همکاری یکدیگر به اجرای یک برنامه میپردازند که طی این همکاری، برنامه با سرعت بالاتری اجرا میشود. به عبارت دیگر، پردازش یا محاسبهی موازی، شکلی از پردازش است که در آن دستورالعملهای بسیاری در یک زمان و به صورت همزمان انجام میشوند و بر اساس این اصل اجرا میشوند که مسائل بزرگ را اغلب میتوان به مسائل کوچکتر تقسیم نمود که سپس باهم و بهصورت موازی اجرا شوند. کودا در نوامبر 2006 توسط انویدیا معرفی گردید، کودا یک پلتفرم محاسبات موازی همهمنظوره و مدل برنامهنویسی است که رابطهای برنامهنویسی را در اختیار برنامهنویسان قرار میدهد و به طراحان نرمافزار اجازه میدهد تا از تواناییهای جیپییو (GPU سرواژه Graphics Processing Unit بوده و به معنای واحد پردازش گرافیکی است) در جهت محاسبات همهمنظوره روی واحد پردازش گرافیکی استفاده کنند. پلتفرم کودا یک لایه نرمافزاری است که دسترسی مستقیم به مجموعه دستورالعملهای مجازی جیپییو و عناصر محاسبات موازی را میدهد. این پلتفرم به گونهای طراحی شده است که با زبانهای برنامهنویسی سی، سیپلاسپلاس، فرترن و متلب کار میکند. این قابلیت دسترسی، کار را برای متخصصان برنامهنویسی موازی به منظور استفاده از منابع جیپییو به همان شکلی که از دایرکتایکس (DirectX) یا اپنجیال (OpenGL) استفاده میکنند، هموار کرده است. با استفاده از این معماری میتوان برنامه خود را به زبان سی یا سیپلاسپلاس نوشته و سپس بر روی پردازنده گرافیکی اجرا کرده و از سرعت آن لذت برد.
همچنین مورد مهم دیگر وجود پلتفرمی است که بتواند بر روی دستگاههای مختلف اجرا شود، کودا با این شعار که میتواند برای شما سطح قابل قبولی از کارایی و مقیاسپذیری را در یک زمان به ارمغان آورد، وارد بازار برنامهنویسی شده است. درباره معماری کودا گفته میشود که کودا معماریای است که به جای محدود کردن شما، توسط کارایی یکسری کتابخانه، اجازه میدهد که کار موردنظرتان را انجام دهید. در گذشته نوشتن نرمافزار برای جیپییو به این معنی بود که برای جیپییو باید برنامه نوشته میشد، در مقابل همانطور که عنوان شد، کودا به شما اجازه میدهد با زبانهای معمول برنامهای بنویسید که بر روی جیپییو نیز اجرا شود. در ادامه عناوین هر فصل آورده شده است:
فصل اول: مبانی و مفاهیم اولیه در محاسبات موازی
فصل دوم: مدل برنامه نویسی مبتنی بر واحد پردازش گرافیکی
فصل سوم: معرفی کودا سی و کلیات مفاهیم آن
فصل چهارم: نصب و راه اندازی کودا در ویندوز
فصل پنجم: مروری بر مباحث زبان سی و شروع کدنویسی با کودا
فصل ششم: ساختار و اصول برنامه نویسی با کودا
فصل هفتم: مدیریت خطا و تولید اعداد تصادفی در کودا
فصل هشتم: مدیریت انواع حافظه در کودا
فصل نهم: عملیات اتمیک
فصل دهم: رخدادها و جریان ها
فصل یازدهم: کتابخانه های کودا و استفاده از کتابخانه Thrust
فصل دوازدهم: استفاده از کودا در مثال هایی عملی
پیوست الف: متعلقات کودا سی و سی پلاس پلاس
پیوست ب: نصب و راه اندازی کودا در لینوکس (اوبونتو)
منابع:
[1]. کتاب برنامه نویسی موازی با کودا، علی اکبر اله دانه، پیام کیافر، انتشارات ناقوس،1397.