hasti-m
05-20-2009, 01:23 PM
«برنامه جامع محاسبه با واحد های پردازش گرافیکی» یا GPGPU* چیزی است که سعی دارد *GPU های تند و تیز بازی ها را با استفاده از قابلیت های جدید ویندوز 7 و مکینتاش لئوپارد اسنو، به مسیر اصلی پردازش های کامپیوتری وارد کند.
یک حرف کم و زیاد چه فرقی دارد؟
GPU در ظاهر نوشتاری و تلفظ شباهت زیادی به CPU دارد، اما این دو کاملا متفاوتند. GPU به واحد پردازش گرافیک اطلاق می شود، ولی CPU مخفف عبارت واحد پردازنده مرکزی است. اگر یک بار دیگر این دو کلمه را هجی کنید* تفاوت زیاد میان آنها را درمی یابید؛ اما برای درک اینکه ماهیت واقعی اختلاف این دو نیاز به تخصصی در حد مهندسین Nvidia و AMD/ATI دارید!
برای خواندن داستان این دو دوست به ادامه مطلب بروید.
در گذشته GPU عموما تنها یک کار را انجام می داد، سرعت بخشیدن به پردازش اطلاعات تصویری که شما نتیجه آن را بر روی صفحه نمایشتان می بیند. پاتریشیا هارل، مدیر واحد پردازش همزمان AMD می گوید GPUها در حقیقت سخت افزارهایی با طراحی ویژه هستند که وظیفه شتاب دهی مراحل مهندسی کانال های اطلاعاتی را بر عهده دارند. یعنی پردازش تطبیق اطلاعات تصویری و یا مدل های کامپیوتری و تبدیل آنها به پیکسل های روی صفحه نمایش از این طریق صورت می گیرد.
GPUها داستانی بس طولانی دارند و اگر بخواهید به صفحه اول این داستان برگردید، به کمودور آمیگا (http://pnu-club.com/redirector.php?url=http%3A%2F%2Fen.wikipedia.org%2 Fwiki%2FCommodore_Amiga)می رسید. اما بگذارید به همین زمان حال خودمان بچسبیم و داستان را دنبال کنیم. تازه ده سال پیش بود که Nvidia اعلام کرد که شروع به افزایش هسته های GPU کرده است تا حجم کار را بین این هسته های چندگانه تقسیم کند. و حال می بینید که محاسبات گرافیکی به شکل مناسبی به صورت موازی مدیریت می شوند. (هنگامی که شما از پشت مخفیگاه تان در Team Fortress 2 به کله دشمن شلیک می کنید، به حجم بالایی از محاسبات گرافیکی برای نشان دادن این اتفاق بر روی صفحه مانیتورتان نیاز است)
مثالی که استفورد راشل از Nvidia برای درک بهتر تفاوت CPU و GPU مطرح می کند بدین صورت است: "اگر شما به دنبال کلمه ای در یک کتاب می گردید، و این کار را بر عهده یک CPU بگذارید، این ابزار برای پیدا کردن این کلمه کتاب را از صفحه یک تا انتها می خواند؛ زیرا CPU یک پردازنده سریال یا ردیفی است. این ممکن است سریع باشد، اما به هرحال برای انجام چنین کاری به کمی وقت نیاز دارد، چون کارها را به ترتیب انجام می دهد. یک GPU- که پردازنده موازی یا پارالل است- کتاب را به هزار بخش تقسیم می کند و همه آن را بطور همزمان می خواند. حتی اگر هر کلمه را کندتر هم بخواند؛ اما کل کتاب در زمان کمتری خوانده می شود، چون همه کلمه ها هم زمان خوانده می شوند.
تمام هسته های GPU(رادئون 4870 دارای 800 پردازنده مستقل است)، آن را در پردازش چندین باره مجموعه ای از داده ها به خوبی توانمند می سازند. توان یک GPU به طور معمول با flops یا تعداد عملیات ریاضی انجام شده روی ممیزهای شناور در ثانیه بیان می شود. قدرت GPU های امروزی به شکل گیگا فلاپ و ترا فلاپ خوانده می شود. البته در انجام کارهای عادی CPU بهتر عمل می کند. همانگونه که هارل از AMD می گوید: "برنامه نویسی عادی، دستیابی تصادفی به حافظه، اجرای دستورات مرحله ای و کارهای روزمره را بهتر است به CPU بسپارید." کریج بارت، رئیس قبلی اینتل نیز عقیده دارد هسته های CPU هم در حال جوانه زدن هستند تا این ابزار بتواند از عهده پردازش های همزمان همانند GPU برآید.
چیزی که در خصوص پردازش موازی (استفاده از صدها هسته برای خرد کردن وظایف و انجام یکباره آنها) باید گفته شود این است که همه نرم افزارها برای استفاده از این امتیاز باید دوباره برنامه نویسی شوند. شاید سختی انجام چنین پروسه ای باعث شده است که تعداد مهندسین نرم افزار شرکت اینتل بیشتر از مهندسین سخت افزار آن است. بنابراین حتی اگر چنین سخت افزارهایی هم تولید شود، شما هنوز به نرم افزارهای ویژه ای برای کار با آنها نیاز دارید و این خود یک نوع برنامه نویسی کاملا متفاوت است.
که این، مارا به OpenCL (زبان محاسباتی باز) و در رتبه بعدی به CUDA می رساند. این ها چهارچوبی هستند که راه استفاده از کارت های گرافیک را برای محاسباتی که ربطی به نمایش صحنه های جنگ شما با زامبی ها در Left 4 Dead ندارند، هموار می سازد. OpenCL، یک استاندارد باز برای برنامه نویسی موازی (parallel) در سیستم های ناهمگن است. این استاندارد توسط گروهی از اسطوره ها (AMD، اپل، IBM، اینتل، سامسونگ و و بسیاری شرکت های دیگر) مورد تایید قرار گرفته است. بطور نیمه رسمی، این پلتفرم یک استاندارد قطعی برنامه نویسی موازی برای سخت افزارهای گوناگون است، که همه می توانند به رایگان از آن استفاده کنند. CUDA هم ساختار معماری ویژه Nvidia است که برای برنامه نویسی موازی کارت های گرافیکش مورد استفاده قرار می گیرد.
OpenCL بخش بزرگی از لئوپارد مک است. ویندوز 7 هم از برخی شتاب دهنده های کارت های گرافیک استفاده می کند. ( باید منتظر پیشرفت چشم گیر DirectX 11 در این خصوص باشیم) بنابراین استفاده از سرعت کارت های گرافیک بخش بزرگی از آینده سیستم عامل ها خواهد بود.
خب، این به چه درد من می خورد؟
پردازش موازی برای دانشمندان بسیار مهم است. اما برای مردم عادی چه کاربردی دارد؟ آیا کارشان را سریعتر انجام می دهد؟ نه هر کاری را، و در شروع شامل چیزی بیشتر از گرافیک نیست؛ چون هنوز ساده ترین بخش برای موازی سازی است. اما به زودی تبدیل، رمزگشایی و تولید ویدئوها (چیزی که هم اکنون بیش از هر زمانی استفاده می کنید) و همینطور ویرایش عکس ها به شکل باورنکردنی بهبود می یابد. در آینده برای کار بر روی عکس های بسیار بزرگ به زمان انتظار کمتری نیاز خواهید داشت (البته فتوشاپ CS4 اکنون از شتاب GPU هم بهره می برد.) همینطور شاهد بهبود کاملا مشخصی در گرافیک بازی های کامپیوتری خواهیم بود و موتورهای فیزیکی بازی ها می توانند بسیار پیچیده تر و واقع گرایانه تر عمل کنند.
البته اگر کار شما با کامپیوتر فقط تویيت کردن و خواندن نامه هایتان است، به زندگی تان برسید و زیاد ذهن تان را مشغول این بحث ها نکنید :)
یک حرف کم و زیاد چه فرقی دارد؟
GPU در ظاهر نوشتاری و تلفظ شباهت زیادی به CPU دارد، اما این دو کاملا متفاوتند. GPU به واحد پردازش گرافیک اطلاق می شود، ولی CPU مخفف عبارت واحد پردازنده مرکزی است. اگر یک بار دیگر این دو کلمه را هجی کنید* تفاوت زیاد میان آنها را درمی یابید؛ اما برای درک اینکه ماهیت واقعی اختلاف این دو نیاز به تخصصی در حد مهندسین Nvidia و AMD/ATI دارید!
برای خواندن داستان این دو دوست به ادامه مطلب بروید.
در گذشته GPU عموما تنها یک کار را انجام می داد، سرعت بخشیدن به پردازش اطلاعات تصویری که شما نتیجه آن را بر روی صفحه نمایشتان می بیند. پاتریشیا هارل، مدیر واحد پردازش همزمان AMD می گوید GPUها در حقیقت سخت افزارهایی با طراحی ویژه هستند که وظیفه شتاب دهی مراحل مهندسی کانال های اطلاعاتی را بر عهده دارند. یعنی پردازش تطبیق اطلاعات تصویری و یا مدل های کامپیوتری و تبدیل آنها به پیکسل های روی صفحه نمایش از این طریق صورت می گیرد.
GPUها داستانی بس طولانی دارند و اگر بخواهید به صفحه اول این داستان برگردید، به کمودور آمیگا (http://pnu-club.com/redirector.php?url=http%3A%2F%2Fen.wikipedia.org%2 Fwiki%2FCommodore_Amiga)می رسید. اما بگذارید به همین زمان حال خودمان بچسبیم و داستان را دنبال کنیم. تازه ده سال پیش بود که Nvidia اعلام کرد که شروع به افزایش هسته های GPU کرده است تا حجم کار را بین این هسته های چندگانه تقسیم کند. و حال می بینید که محاسبات گرافیکی به شکل مناسبی به صورت موازی مدیریت می شوند. (هنگامی که شما از پشت مخفیگاه تان در Team Fortress 2 به کله دشمن شلیک می کنید، به حجم بالایی از محاسبات گرافیکی برای نشان دادن این اتفاق بر روی صفحه مانیتورتان نیاز است)
مثالی که استفورد راشل از Nvidia برای درک بهتر تفاوت CPU و GPU مطرح می کند بدین صورت است: "اگر شما به دنبال کلمه ای در یک کتاب می گردید، و این کار را بر عهده یک CPU بگذارید، این ابزار برای پیدا کردن این کلمه کتاب را از صفحه یک تا انتها می خواند؛ زیرا CPU یک پردازنده سریال یا ردیفی است. این ممکن است سریع باشد، اما به هرحال برای انجام چنین کاری به کمی وقت نیاز دارد، چون کارها را به ترتیب انجام می دهد. یک GPU- که پردازنده موازی یا پارالل است- کتاب را به هزار بخش تقسیم می کند و همه آن را بطور همزمان می خواند. حتی اگر هر کلمه را کندتر هم بخواند؛ اما کل کتاب در زمان کمتری خوانده می شود، چون همه کلمه ها هم زمان خوانده می شوند.
تمام هسته های GPU(رادئون 4870 دارای 800 پردازنده مستقل است)، آن را در پردازش چندین باره مجموعه ای از داده ها به خوبی توانمند می سازند. توان یک GPU به طور معمول با flops یا تعداد عملیات ریاضی انجام شده روی ممیزهای شناور در ثانیه بیان می شود. قدرت GPU های امروزی به شکل گیگا فلاپ و ترا فلاپ خوانده می شود. البته در انجام کارهای عادی CPU بهتر عمل می کند. همانگونه که هارل از AMD می گوید: "برنامه نویسی عادی، دستیابی تصادفی به حافظه، اجرای دستورات مرحله ای و کارهای روزمره را بهتر است به CPU بسپارید." کریج بارت، رئیس قبلی اینتل نیز عقیده دارد هسته های CPU هم در حال جوانه زدن هستند تا این ابزار بتواند از عهده پردازش های همزمان همانند GPU برآید.
چیزی که در خصوص پردازش موازی (استفاده از صدها هسته برای خرد کردن وظایف و انجام یکباره آنها) باید گفته شود این است که همه نرم افزارها برای استفاده از این امتیاز باید دوباره برنامه نویسی شوند. شاید سختی انجام چنین پروسه ای باعث شده است که تعداد مهندسین نرم افزار شرکت اینتل بیشتر از مهندسین سخت افزار آن است. بنابراین حتی اگر چنین سخت افزارهایی هم تولید شود، شما هنوز به نرم افزارهای ویژه ای برای کار با آنها نیاز دارید و این خود یک نوع برنامه نویسی کاملا متفاوت است.
که این، مارا به OpenCL (زبان محاسباتی باز) و در رتبه بعدی به CUDA می رساند. این ها چهارچوبی هستند که راه استفاده از کارت های گرافیک را برای محاسباتی که ربطی به نمایش صحنه های جنگ شما با زامبی ها در Left 4 Dead ندارند، هموار می سازد. OpenCL، یک استاندارد باز برای برنامه نویسی موازی (parallel) در سیستم های ناهمگن است. این استاندارد توسط گروهی از اسطوره ها (AMD، اپل، IBM، اینتل، سامسونگ و و بسیاری شرکت های دیگر) مورد تایید قرار گرفته است. بطور نیمه رسمی، این پلتفرم یک استاندارد قطعی برنامه نویسی موازی برای سخت افزارهای گوناگون است، که همه می توانند به رایگان از آن استفاده کنند. CUDA هم ساختار معماری ویژه Nvidia است که برای برنامه نویسی موازی کارت های گرافیکش مورد استفاده قرار می گیرد.
OpenCL بخش بزرگی از لئوپارد مک است. ویندوز 7 هم از برخی شتاب دهنده های کارت های گرافیک استفاده می کند. ( باید منتظر پیشرفت چشم گیر DirectX 11 در این خصوص باشیم) بنابراین استفاده از سرعت کارت های گرافیک بخش بزرگی از آینده سیستم عامل ها خواهد بود.
خب، این به چه درد من می خورد؟
پردازش موازی برای دانشمندان بسیار مهم است. اما برای مردم عادی چه کاربردی دارد؟ آیا کارشان را سریعتر انجام می دهد؟ نه هر کاری را، و در شروع شامل چیزی بیشتر از گرافیک نیست؛ چون هنوز ساده ترین بخش برای موازی سازی است. اما به زودی تبدیل، رمزگشایی و تولید ویدئوها (چیزی که هم اکنون بیش از هر زمانی استفاده می کنید) و همینطور ویرایش عکس ها به شکل باورنکردنی بهبود می یابد. در آینده برای کار بر روی عکس های بسیار بزرگ به زمان انتظار کمتری نیاز خواهید داشت (البته فتوشاپ CS4 اکنون از شتاب GPU هم بهره می برد.) همینطور شاهد بهبود کاملا مشخصی در گرافیک بازی های کامپیوتری خواهیم بود و موتورهای فیزیکی بازی ها می توانند بسیار پیچیده تر و واقع گرایانه تر عمل کنند.
البته اگر کار شما با کامپیوتر فقط تویيت کردن و خواندن نامه هایتان است، به زندگی تان برسید و زیاد ذهن تان را مشغول این بحث ها نکنید :)