آشنایی با پردازش موازی و پردازش در GPU ها
اگر به چند سال پیش برگردیم هیچ بحثی مربوط به پردازش موازی در رابطه با کامپیوترهای شخصی نبود. در صورتی که ابر رایانه ها به صورت عادی از این تکنولوژی بهره میبردند. در واقع با پیشرفت سریع پردازنده ها هیچ نیازی برای اینکار احساس نمیشد. سرعت پردازنده ها آنقدر رو به افزایش بود که هیچ کس نمیتوانست تصور کند که به همان سرعتی که این پیشرفت صورت میگرفت به همان سرعت هم روزی متوقف خواهد شد و تنها دلیل آن هم یک چیز بود : حرارت. حرارتی باعث ظهور فن هایی که شما روی CPU تون دارین شدند!* پس شرکت ها مجبور شدند روی به راه حل های دیگری بیاورند و دلیل اصلی آن هم یک چیز بود : رقابت! پس درواقع پردازش موازی یک توفیق اجباری در دنیای کامپیوترهای شخصی به حساب می آید. اما این حرکت که فقط از روی نا امیدی انجام شد به سرعت جایگاه خودش رو پیدا کرد. ایده ی ساده ای بود. برنامتون رو به دو یا چهار یا ... قسمت تقسیم کنید و سرعتتون چند برابر میشه! اما آیا واقعا این پردازش به معنای واقعی موازی است؟! CPU ها ساخته شده اند که عملیات بسیار پیچیده را در زمانی بسیار کم انجام دهند. عملیات پیچیده! آیا یک عملیات پیچیده رو همیشه میشه به دو قسمت یا بیشتر تقسیم کرد؟ زمانی میتوانید از این نوع پردازش استفاده کنید که بخواهید چند پردازش پیچیده یا یک پردازش پیچیده را چند بار به طور مستقل انجام بدید. این مسئله آنقدر آزار دهنده است که هنوز هم پس از سالها بسیاری از برنامه ها نمیتوانند از این نوع پردازش استفاده کنند! پس همچنان هم این نوع پردازش موازی یک نوع اقدام از روی نا امیدی به حساب می آید اما باز هم این اقدام راه جدیدی رو باز کرد این دید که پردازش موازی فقط مال کامپیوترهای غول آسا نیست!
پردازش موازی به معنای واقعی یعنی اینکه شما بتونید تعداد زیادی از محاسبات رو همزمان انجام بدید. دقیقا همونطور که ابر رایانه ها برای سالیان دراز انجام می دادند. این رویه برای پردازش های موازی در رایانه های شخصی ،در کارت گرافیکی صورت می گیرد. اما چرا کارت گرافیکی به چنین چیزی احتیاج دارد؟ خب در واقع جواب این سوال در صفحه ی نمایشگر شما نهفته است! اگر کمی از نزدیکتر به صفحه ی نمایشگر خودتون نگاه کنید اون تصویر واضحی که از دور برای شما نمایان بود از بین خواهد رفت و یک تصویر نقطه نقطه ظاهر خواهد شد.(این رو روی iPhone 4 به بالا امتحان نکنید!) خب همونطور که حتما میدونید به این نقاط میگن : pixel . این پیکسل ها از چند پیکسل کوچکتر به نام sub pixel تشکیل شده اند که هر کدام از این پیکسل های کوچک قابلیت نمایش یک رنگ را دارند. وظیفه ی کارت گرافیکی شما محاسبه ی شدت رنگ تک تک این ریز پیکسل هاست. میبینید که ما با پردازش های بسیار ساده اما بسیار زیاد سر و کار داریم. اگر بخواهیم این عملیات را با CPU انجام دهیم باید به ترتیب از یک نقطه شروع کنیم و تمام نقاط را پردازش کنیم. مشابه این حالت رو میتونید زمانی که درایور کارت گرافیک خود را نصب نکرده اید مشاهده کنید. صفحه ی نمایشگر شما برای نشان دادن تصاویر ثابت هیچگونه لرزشی نخواهد داشت اما حتی اگر بخواهید یک پنجره ی ساده را جابه جا کنید CPU ی شما از پس این کار ساده بر نخواهد آمد! پس اینجاست که بحث پردازنده ای مطرح می شود که بتواند تعداد زیادی از داده ها ی بسیار ساده را پردازش کند که خب ما رو میرسونه به GPU ها.
GPU ها از تعداد نسبتا زیادی پردازنده ی بسیار ساده و کوچک که به اصطلاح به اونا thread میگیم ساخته میشوند. هر کدام از این thread ها میتونن یک ریز پیکسل رو در یک پالس ساعت پردازش کنند. اما آیا GPU ها از لحاظ سخت افزاری طراحی شده اند تا فقط رنگ ها را محاسبه کنند؟! مسلما نه! یک GPU از تعداد زیادی پردازنده ساخته شده که فقط جمع و تفریق بلدند! اما اینکه برای سالها پتانسیل نهفته ی این نوع پردازنده ها شناخته نشده بود تماما به دلیل مشکلات نرم افزاری بود. قبل از معرفی CUDA ، تعداد کمی از محققین به این پتانسیل روی آوردند اما به دلیل مشکلات بسیار زیاد راه به جایی نبردند. مهمترین مشکل پیش روی این افراد این بود که تنها راه برقراری ارتباط با کارت گرافیک از طریق نرم افزارهای خاصی مثل DirectX و OpenGL بود و این واسطه ها فقط و فقط مخصوص پیکسل ها ساخته شده بودند. پس شما اگر میخواستید دو عدد را با هم جمع کنید باید ابتدا اون هارو به دو رنگ تبدیل میکردید. سپس نتیجه ی تلاقی این دو رنگ را بدست می آوردید و اون رو دوباره به عدد برمیگردوندید. اما با معرفی CUDA اکثر مشکلات برطرف شد. CUDA یا Compute Unified Device Architecture یک تکنولوژی بسیار جدید است که در سال 2006 توسط شرکت nvidia به بازار عرضه شد. هدف اصلی این تکنولوژی این بود که تمامی مشکلات پیش روی برنامه نویسان را بردارد که تا حد بسیار زیادی باعث پیشرفت این عرصه شده است.
برای اطلاعات بیشتر رجوع کنید به :
en.wikipedia.org/wiki/GPU_computing
* در واقع این حرارت ناشی از نوع ساخت CPU ها و یا هر پردازنده ی دیگری می باشد برای اطلاعات بیشتر رجوع شود به en.wikipedia.org/wiki/Computer_cooling
Xgrid : اپل همراه Tiger Server نرمافزار 1.0 Xgrid را نيز عرضه ميكند. نرمافزار رايانش توزيعي اپل، كار ساخت ابررايانههاي موردنياز مراكز علمي و تحقيقاتي را بسيار سادهتر و كم هزينهتر از قبل خواهد ساخت. Xgrid 1.0 براي انجام پردازشهاي توزيعي از ده هزار كار در انتظار پردازش، ده هزار وظيفه در هر كار در انتظار پردازش، دو گيگابايت داده در هر كار منتظر پردازش، يك گيگابايت داده در هر وظيفه و مجموعاً ده گيگابايت نتيجه مرجوعي پشتيباني ميكند.