وزارت آموزش و پرورش و علوم فدراسیون روسیه

آژانس فدرال اطلاعات

دانشگاه فنی دولتی پیودنو-روسیه

(موسسه پلی تکنیک نووچرکاسک)

موسسه شاختی (شعبه) YURDTU (NPI)

سخنرانی های رشته ها

"گیاهان موازی HIV"

شاختی-2010

وارد

مفاهیم اساسی

1. Zagalni تغذیه vyrishennya “احکام بزرگ”;

1.1 دانش فعلی علم و فناوری که برای توسعه ابررایانه ها مورد نیاز است

1.2.2 مدل های انتزاعی محاسبات موازی

1.2.3 روش های پردازش و محاسبه موازی داده ها

1.3 درک فرآیند موازی جداسازی گرانول ها

1.4 تعامل فرآیندهای موازی، همگام سازی فرآیندها

1.5. تسریع موزلیو با محاسبات موازی (قانون امدال)

2. اصول ایجاد سیستم های محاسباتی چند پردازنده ای

2.1 معماری سیستم های محاسباتی چند پردازنده

2.2 تقسیم داده ها در سیستم های محاسباتی چند پردازنده با حافظه توزیع شده

2.3 طبقه بندی سیستم های محاسباتی موازی

2.4 سیستم های محاسباتی چند پردازنده ای با حافظه توزیع شده

2.4.1 ابرکامپیوترهای بسیار موازی سری Cry T3

2.4.2 کلاسترهای BEOWULF

ویسنووک

فهرست مراجع

وارد

حتی در طلوع عصر کامپیوتر، در حدود اواسط قرن گذشته، طراحان ماشین‌های محاسباتی الکترونیکی شروع به فکر کردن در مورد امکان راکد بودن محاسبات موازی روی رایانه‌ها کردند. حتی اگر کد سرعت خود را افزایش دهید، باید از یک روش گران قیمت استفاده کنید که مشمول محدودیت های اعمال شده توسط قوانین فیزیکی است. بنابراین، پردازش موازی داده ها و موازی سازی دستورات در طراحی رایانه ها وارد شد و در همان زمان، هر کاربر "تجهیزات شخصی" ممکن است بدون اطلاع از آن، روی یک کامپیوتر موازی کار کند.

یکی از روندهای قابل توجه در توسعه بشریت، نیاز به مدل سازی دقیق ترین فرآیندهای حداکثر ممکن است تا هم ذهن زندگی در دنیای امروز را غنی کند و هم آینده را با اطمینان منتقل کند. روش‌های ریاضی و تکنیک‌های مدل‌سازی دیجیتال می‌توانند مسائل مشابه را در بسیاری از موارد حل کنند، اما با گذشت زمان این موضوع به طور فزاینده‌ای روشن می‌شود و فناوری پیچیده‌تر به طور فزاینده‌ای تحت فشار قرار می‌گیرد. در بسیاری از موارد، کمبود قدرت محاسباتی ماشین‌های محاسبه الکترونیکی فعلی وجود دارد و اهمیت این پیشرفت‌ها منجر به منابع مالی قابل توجهی در زمینه ایجاد ماشین‌های محاسبات الکترونیکی فوق‌العاده شده است.

از زمان ظهور کد سرعت در کامپیوترها، معماری سنتی (به نام "فون نیومن") به دلیل پیچیدگی های تکنولوژیکی در توسعه پردازنده ها بسیار گران شده است، بنابراین سازندگان به روشی متفاوت احترام گذاشته اند. جنبش بهره وری - ادغام الکترونیک ماشین های محاسباتی در سیستم های محاسباتی چند پردازنده ای در این مورد، قطعات برنامه به طور همزمان (و به طور همزمان) بر روی پردازنده های مختلف کامپایل می شوند و با کمک شبکه های کامپیوتری داخلی، اطلاعات را مبادله می کنند.

ایده ادغام ماشین های محاسباتی الکترونیکی برای بهبود بهره وری و قابلیت اطمینان به اواخر دهه 1950 برمی گردد.

توانایی به دست آوردن حداکثر بهره وری برای حداقل تلاش منجر به توسعه مجتمع های پردازش غنی شده است. این نوع سیستمی است که تلاش محاسباتی هزاران پردازنده مجاور را ترکیب می کند. گام بعدی تلاش برای متحد کردن میلیون‌ها کامپیوتر مختلف روی کره زمین در یک مجتمع محاسباتی با بهره‌وری بالا از طریق اینترنت است. توسعه امروزی سیستم های محاسباتی موازی، توسعه مستقیم استراتژیک فناوری محاسبات است. Rosvitok ";zaliza"; لازم است از آن با اجزای الگوریتمی و نرم افزاری پیچیده - فناوری برنامه نویسی موازی پشتیبانی شود.

روش محاسبه موازی برای مدت طولانی وجود داشته است؛ سازماندهی عملکرد پیچیده بدون حضور پردازنده های مستقل مستلزم انجام تحقیقات نظری و عملی جدی است، بدون هیچ گونه پیچیده و آشکارا گران قیمت، نصب پردازنده بزرگ اغلب از بهره وری را فدای یک کامپیوتر سنتی می کند.

پتانسیل موازی سازی برای وظایف محاسباتی انواع مختلف یکسان نیست - برای برنامه های علمی که دارای چرخه های زیادی و محاسبات بی اهمیت هستند و برای کارهای مهندسی و برای برخی از وظایف مشخصه فرمول های تجربی بسیار مهم است.

بیایید به دو غذای اصلی نگاه کنیم:

1. سیستم های محاسباتی چند پردازنده - (سوپرکامپیوترهای موازی انبوه) Cray T3D(E) ​​با تعدادی پردازنده از 40 تا 2176. این ابررایانه ها با حافظه توزیع شده بر روی پردازنده های RISC مانند Alpha21164A، معیارهای ارتباطی برتر - و مترجم ها برای FORTRAN، HPF، C/C++. مدل های برنامه نویسی پشتیبانی شده: MPI، PVM، HPF.

2. خوشه های Beowulf ایستگاه های کاری. خوشه های ایستگاه های کاری مجموعه ای از ایستگاه های کاری هستند که به یک شبکه محلی متصل هستند. خوشه یک سیستم محاسباتی با حافظه توزیع شده و کنترل های توزیع شده است. یک سیستم خوشه ای می تواند به بهره وری برابر با ابررایانه ها دست یابد. خوشه های ایستگاه های کاری، خوشه های Beowulf (خوشه Beowulf - پشت همان پروژه) نامیده می شوند که به یک شبکه اترنت محلی و یک سیستم عامل لینوکس میزبان متصل هستند.

مفاهیم اساسی

پیشرفته ترین فناوری برنامه نویسی برای سیستم های خوشه ای و رایانه های موازی با حافظه مشترک در حال حاضر، فناوری MPI است. p align="justify"> راه اصلی تعامل بین فرآیندهای موازی در چنین سیستم هایی، انتقال اطلاعات از یکی به دیگری است. این با نام این فناوری - Message Passing Interface - نشان داده شده است. استاندارد MPI رابطی را تعریف می کند که باید توسط سیستم برنامه نویسی روی پلت فرم محاسبات پوست پردازش شود و همچنین هنگام ایجاد برنامه های خود از آن استفاده شود. MPI از کار با زبان های Fortran و C پشتیبانی می کند. نسخه جدید رابط شامل شرحی از 125 رویه و عملکرد است.

رابط MPI از ایجاد برنامه های موازی در سبک MIMD (Multiple Instruction Multiple Data) پشتیبانی می کند که فرآیندهای متصل را با متون خروجی مختلف منتقل می کند. با این حال، نوشتن و توسعه چنین برنامه هایی بسیار دشوار است، بنابراین در عمل، برنامه ها اغلب از مدل SPMD (Single Program Multiple Data) برنامه نویسی موازی استفاده می کنند که در آن کد یکسان برای همه فرآیندهای موازی استفاده می شود. امروزه، تعداد بیشتری از پیاده‌سازی‌های MPI از کار با اصطلاح «رشته‌ها» پشتیبانی می‌کنند.

از آنجایی که قطعات MPI دارای یک کتابخانه هستند، هنگام کامپایل برنامه ها لازم است ماژول های کتابخانه اضافی اضافه شوند.

پس از دانلود فایل، باید آن را روی تعداد مورد نیاز پردازنده اجرا کنید. پس از راه‌اندازی، خود برنامه توسط تمام فرآیندهای در حال اجرا خاتمه می‌یابد، نتیجه خاتمه در سیستم روی ترمینال نمایش داده می‌شود و در یک فایل نوشته می‌شود.

یک برنامه MPI بدون فرآیندهای موازی که تعامل دارند ساخته می شود. تمام فرآیندها یک بار تولید می شوند و یک قسمت موازی از برنامه ایجاد می شود. در طول توسعه برنامه های MPI، تولید فرآیندهای اضافی یا کاهش موارد موجود مجاز نیست (قبل از MPI، چنین امکانی ظاهر شد). هر فرآیند در فضای آدرس خود عمل می کند و MPI هیچ تغییر یا داده اضافی ندارد. راه اصلی تعامل بین فرآیندها یک پیام صریح است.

برای بومی سازی تعامل فرآیندهای موازی، برنامه ها می توانند گروه هایی از فرآیندها را ایجاد کنند و وسط فرآیند - ارتباط دهنده را به آنها اضافه کنند. انبار گروه های تایید شده کافی است. گروه‌ها می‌توانند کاملاً دور هم جمع شوند، بدون حرکت یا اغلب حرکت کنند، وارد یکدیگر شوند. فرآیندها فقط در وسط هر ارتباط دهنده ای می توانند تعامل داشته باشند، پیام هایی که از ارتباط دهنده های مختلف ارسال می شوند، تداخلی ندارند و با یکدیگر تعامل دارند. ارتباط دهنده ها در MOVI FORTRAN از نوع عدد صحیح هستند (در MOVI C از نوع بزرگنمایی MPI Comm هستند).

هنگام شروع یک برنامه، مهم است که اطمینان حاصل شود که تمام فرآیندهای تولید شده در چارچوب یک ارتباط دهنده همه جانبه عمل می کنند. این ارتباط دهنده به عنوان یک رابط بین تمام فرآیندهای در حال اجرا برنامه MPI عمل می کند. تمام فرآیندهای متقابل بین یک ارتباط دهنده واحد، اطلاعات، انتقال در ارتباط دهنده های مختلف صورت می گیرد و بر یکدیگر تأثیر نمی گذارد.

پردازشگرهای مجموعه دستورالعمل کاهش یافته (RISC). معماری RISC (RISC - Reduced Instruction Set Computer) پردازنده مبتنی بر ایده افزایش سرعت ربات برای مجموعه ای ساده تر از دستورالعمل ها است.

تحقیقات نشان داده است که 33 درصد از دستورات در برنامه های معمولی شامل پردازش داده ها، 20 درصد شامل پردازش ذهنی و 16 درصد دیگر شامل عملیات حسابی و منطقی است. مهمترین دستورات محاسبه آدرس را می توان به سرعت در یک چرخه محاسبه کرد. حالت های آدرس دهی بزرگتر در حدود 18 درصد موارد استفاده می شود. حدود 75 درصد از عملوندها اسکالر هستند، مانند عدد صحیح، گفتار، نوع کاراکتر و غیره و بقیه آرایه ها و ساختارها هستند. 80 درصد تغییرات اسکالر موضعی و 90 درصد تغییرات ساختاری سبک هستند. همچنین اکثر عملوندها عملوندهای محلی از انواع اسکالر هستند. بوی بد را می توان در رجیسترها ذخیره کرد.

بر اساس آمار، بیشتر ساعت صرف پردازش اپراتورهای "زیربرنامه کلیک" می شود. і "؛ روی آوردن به برنامه های فرعی"؛. هنگام کامپایل، این اپراتورها به دلیل هزینه های زیاد حافظه، دنباله های طولانی از دستورات ماشین را تولید می کنند، به طوری که برخی از این اپراتورها بیش از 15٪ را تشکیل می دهند، آنها در قسمت عمده ساعت پردازنده سهیم هستند. تنها حدود 1% از زیربرنامه ها دارای شش پارامتر و حدود 7% از زیربرنامه ها دارای 6 تغییر محلی هستند.

در نتیجه مطالعه این آمار، خلاصه ای در مورد مواردی که در یک برنامه معمولی تحت تسلط عملیات های ساده هستند جمع آوری شد: حسابی، منطقی و انتقال داده. سلطه و ساده ترین حالت های آدرس دهی. اکثر عملوندها متغیرهای محلی اسکالر هستند. یکی از مهمترین منابع برای افزایش بهره وری، بهینه سازی تخصیص اپراتورها است.

معماری RISC بر اساس همان اصول و ایده ها است. مجموعه دستورات باید مبادله شوند و فراتر از دستورات ساده باشند، زمان اجرای آنها پس از انتخاب و رمزگشایی یک سیکل ساعت یا کمی بیشتر است. خط مونتاژ در حال پردازش است. دستورات ساده RISC امکان اجرای کارآمد سخت افزار را فراهم می کند، در حالی که دستورات پیچیده را می توان با استفاده از روش های ریزبرنامه نویسی پیاده سازی کرد. طراحی واحد کنترل در معماری های RISC ساده شده است، اما به پردازنده اجازه می دهد تا در فرکانس های کلاک بالا کار کند. استفاده از دستورات ساده امکان اجرای کارآمد پردازش داده ها و اجرای دستورات را فراهم می کند.

دستورالعمل های تاشو برای یک پردازنده RISC تکمیل شدن زمان بیشتری می برد، اما تعداد آنها بسیار کم است. پردازنده های RISC تعداد کمی دستورالعمل خطاب به حافظه دارند. بازیابی اطلاعات از RAM بیش از یک چرخه طول می کشد. بیشتر دستورالعمل ها بر روی عملوندهای موجود در ثبات ها عمل می کنند. همه دستورات از یک فرمت یکپارچه و یک فرمت ثابت پیروی می کنند. این امر نیاز به دستورات رمزگشایی را ساده و سرعت می بخشد، به طوری که قطعات، به عنوان مثال، کد عملیات و فیلد آدرس همیشه در یک موقعیت قرار می گیرند. نتایج محاسبات متغیر و میانی را می توان در رجیسترها ذخیره کرد. به منظور اطمینان از آمار تغییرات مختلف، اکثر تغییرات محلی و پارامترهای رویه ها را می توان در رجیسترها قرار داد. هنگامی که یک رویه جدید فراخوانی می شود، به جای رجیسترها، آنها به RAM منتقل می شوند، اما از آنجایی که تعداد ثبات ها زیاد است، می توان بخش قابل توجهی از عملیات پیش پا افتاده مبادله حافظه از حافظه را حذف کرد و اقدامات عملگر آنها را از ثبات ها جایگزین کرد. . به دلیل معماری ساده‌تر پردازنده RISC، ریز مدار جایی است که مجموعه‌ای از ثبات‌ها در آن قرار دارند.

در حال حاضر، سیستم های محاسباتی با معماری RISC موقعیت های پیشرو را در بازار رایانه های سبک ایستگاه های کاری و سرورها اشغال می کنند. توسعه معماری RISC با توسعه کامپایلرهایی مرتبط است که وظیفه کامپایل موثر مزایای یک فایل رجیستری بزرگ، حمل و نقل و غیره را بر عهده دارند.

1. Zagalni تغذیه vyrishennya “احکام بزرگ”;

تحت عنوان "عجایب بزرگ"؛ تا آنجا که به محاسبات مربوط می شود، مشکلاتی را که اساساً از ایجاد مدل های پیچیده ریاضی و اجرای مرتبه های بزرگ و بزرگتر از آنچه که برای برنامه نویسی ماشین های محاسبه الکترونیکی معمول است، ناشی می شود، در نظر بگیرید. در اینجا به منابع ضروری ماشین محاسبات الکترونیکی می رسد - اندازه حافظه عملیاتی و خارجی، سرعت خط انتقال اطلاعات و غیره.

حد بالایی برای "احکام بزرگ" محاسبه می شود. با بهره وری سیستم های محاسباتی موجود نشان داده می شود. هنگامی که "; progontsi"; در ذهن واقعی، محاسبات مربوط به تغذیه نیست، "برای تعیین تکلیف در یک ساعت دلپذیر". (یک سال / ده ها سال).

1.1. دانش امروزی علم و فناوری که می توان به آن دست یافت

برای ابر رایانه های برتر

اغلب باید با چنین کارهایی دست و پنجه نرم کنید که برای ازدواج ارزش زیادی دارند، اما با کمک کامپیوترهای بزرگ اداری یا خانگی نمی توان به آنها دست یافت. تنها امید در این شرایط به رایانه هایی با کدهای سرعت عالی است که به آنها ابر رایانه می گویند. فقط خودروهای این کلاس به دلیل پردازش حجم زیاد اطلاعات می توانند تصادف کنند. این می تواند به عنوان مثال، داده های آماری و نتایج هشدارهای هواشناسی، اطلاعات مالی باشد. گاهی اوقات سرعت پردازش بیشترین اهمیت را دارد. شما می توانید پیش بینی آب و هوا ایجاد کنید و تغییرات آب و هوایی را مدل کنید. هرچه پیش از این تند تند خود به خودی بیشتری تجربه شده باشد، توانایی ما برای آماده شدن برای مورد بعدی بیشتر است. وظایف مهم شامل مدل سازی خواص دارویی، رمزگشایی ژنوم انسان، توموگرافی، از جمله پزشکی، اکتشاف ذخایر نفت و گاز است. باسن را می توان زیاد اشاره کرد.

الگوبرداری از فرآیندهای حداکثر فعالیت با روش غنی سازی ذهن زندگی در زمان حال و انتقال مطمئن آینده یکی از روندهای توسعه بشریت است. روش‌های ریاضی و تکنیک‌های مدل‌سازی دیجیتال می‌توانند مسائل مشابه را در بسیاری از موارد حل کنند و با گذشت زمان، فناوری‌های پیچیده‌تر مشکلات مشابه را حل می‌کنند. در بسیاری از موارد افسردگی، کمبود تلاش های محاسباتی ماشین های محاسبه الکترونیکی روزانه وجود دارد.

توانایی به دست آوردن حداکثر بهره وری برای حداقل تلاش منجر به توسعه مجتمع های پردازش غنی شده است. این نوع سیستمی است که تلاش محاسباتی هزاران پردازنده مجاور را ترکیب می کند.

در زیر دیدگاه‌هایی از فعالیت‌های انسانی وجود دارد که آنها برای رشد تلاش‌های ابررایانه‌ای خود به آن نیاز دارند، که محاسبات موازی هستند:

تغییرات آب و هوا، آب و هوا و تغییرات جهانی در جو

علم مواد

دستگاه های Pobudova napivdnikovyh

Superprovidnost

توزیع مواد دارویی

ژنتیک انسان

ستاره شناسی

امکانات حمل و نقل با اندازه بزرگ

دینامیک هیدرو و گاز

همجوشی گرما هسته ای Kerovanii

اکتشاف نفت و گاز

گروه محاسباتی علوم در مورد اقیانوس نور

تشخیص و ترکیب فیلم ها، تشخیص تصاویر

یکی از مهمترین وظایف مدلسازی سیستم اقلیمی و پیش بینی آب و هوا است. در این حالت برابری دینامیک محیط طبیعی و برابری ترمودینامیک به همان اندازه مهم مشاهده می شود. برای مدل سازی توسعه فرآیندهای جوی در یک دوره 100 ساله، تعداد عناصر گسسته 2.6 × 106 (یک مش با عرض 10 در عرض جغرافیایی و طول در کل سطح سیاره با 20 توپ در ارتفاع، به اندازه) است. عنصر پوست توصیف شده از 10 جزء تشکیل شده است) در هر زمان جو زمین با 2.6 107 عدد توصیف می شود. هنگام نمونه برداری 10 بار در ساعت در طول ساعتی که در حال مدل سازی است، باید 5 × 104 مجموعه (یعنی 1014 مقدار عددی مورد نیاز محاسبات میانی) محاسبه شود. تعداد تخمین زده شده لازم برای برداشتن نتیجه پرینه پوست از عملیات محاسباتی 102÷103.6÷1017 است.

یک ابررایانه با بهره وری 1012 op/sec در شرایط ایده آل (اهمیت و الگوریتم سازی موثر) منجر به چنین آزمایشی می شود که سال ها طول بکشد. برای تکمیل کل فرآیند مدل سازی، لازم است برنامه چندین بار (ده ها/صدها بار) اجرا شود.

مشکل محاسبات ابر رایانه از این جهت مهم است که بسیاری از کشورها در حال کار بر روی ربات ها در زمینه فناوری های ابر رایانه هستند.

حمایت های دولت ارتباط مستقیمی با این واقعیت دارد که استقلال تولید گالوسا و فناوری محاسباتی باکیفیت به منافع امنیت ملی کمک می کند و پتانسیل علمی منطقه ارتباط مستقیمی با این جهان دارد که با توسعه محاسباتی برابری می کند. فناوری و امنیت ریاضی

بنابراین، با بهره‌وری برابر ماشین‌های محاسباتی فوق‌الکترونیک، بیمه بر اساس داده‌های آزمایشی قبلی ("معیار"، در معیار انگلیسی) است. اوج بهره وری با حداکثر تعداد عملیاتی که می تواند در یک ساعت برای تعداد اتصالات بین دستگاه های کاربردی انجام شود، اندازه گیری می شود، ویژگی های بالقوه تجهیزات را مشخص می کند و در برنامه ما در مورد آن باقی نمی ماند.

روش‌های زیادی برای ارزیابی اوج بهره‌وری به‌عنوان تعداد دستورات اجرا شده توسط رایانه در یک ساعت (MIPS، میلیون دستورالعمل در ثانیه) فقط گزاره‌های محرمانه‌ای در مورد کد سرعت ارائه می‌کنند، زیرا آنها ویژگی‌های برنامه‌های خاص را در نظر نمی‌گیرند. مهم است که توجه داشته باشید که هر دو شماره و دستورالعمل های پردازنده برنامه koristuvacha نمایش داده می شود).

در اینجا نگاهی به استدلال‌ها علیه رکود عملی گسترده محاسبات موازی می‌اندازیم:

سیستم های محاسباتی موازی بسیار گران هستند. همانطور که توسط عمل تایید شده است، قانون گروش، بهره وری کامپیوتر به نسبت مربع بهره وری آن رشد می کند. در نتیجه، از بین بردن بار محاسباتی لازم برای اضافه کردن یک پردازنده مولد، بسیار راحت‌تر است، نه اینکه به هزینه بسیاری از پردازنده‌های پرسرعت کوچک‌تر بپردازیم.

ضد استدلال. رشد کد سرعت جدیدترین ماشین‌های محاسباتی الکترونیکی را نمی‌توان به طور نامحدود ادامه داد، رایانه‌ها تقریباً منسوخ شده‌اند و هزینه‌های مالی لازم برای خرید مدل‌های جدید صرف می‌شود. تمرین ایجاد سیستم های محاسباتی موازی کلاس Beowulf به وضوح اقتصاد این مسیر را نشان داد.

هنگام سازماندهی موازی، تلفات بهره وری به سرعت افزایش می یابد. طبق فرضیه ماروین مینسکی، سرعت محاسبه ای که می توان با سیستم موازی موازی به دست آورد، متناسب با لگاریتم دوتایی تعداد پردازنده ها است (با 1000 پردازنده، سرعت می تواند فقط 10 باشد).

ضد استدلال. ارزیابی تسریع شده ای انجام شده است که برای موازی سازی الگوریتم های آواز صحیح است. با این حال، تعداد وظایف آشکارا زیاد است، با پردازش موازی که نزدیک به 100٪ از تمام پردازنده های سیستم محاسبات موازی می رسد.

کامپیوترهای مدرن به تدریج در حال بهبود هستند. طبق قانون معروف مور، پیچیدگی جدیدترین ریزپردازنده‌ها هر 18 ماه افزایش می‌یابد، بنابراین می‌توان بهره‌وری لازم را روی ریزپردازنده‌های «اولیه» به دست آورد. کامپیوترهای سریال

ضد استدلال. توسعه مشابه قدرت و سیستم های موازی.

با این حال، رکود موازی این امکان را فراهم می کند که نیاز به محاسبه سریع بدون نیاز به توسعه پردازنده های جدید که سرعت بیشتری دارند، از بین برود. اثر بخشی موازی سازی در قدرت های مشخصه سیستم های موازی نهفته است. تمام ماشین‌های محاسباتی الکترونیکی مدرن مانند مدارهای فون نویمان کلاسیک عمل می‌کنند. سیستم‌های موازی تابع ابعاد معماری مناسبی هستند و حداکثر تأثیر موازی‌سازی را می‌توان با تغییر دائمی تمام ویژگی‌های تجهیزات (از جمله انتقال الگوریتم‌ها و برنامه‌های موازی بین برخی از انواع سیستم‌ها سخت‌تر، اما برخی دیگر، از بین برد. سخت تر).

ضد استدلال. با گسترش واقعا آشکار معماری سیستم های موازی، آهنگ "خسته" شروع به ظهور می کند. راه هایی برای اطمینان از موازی بودن تغییر ناپذیری نرم افزار ایجاد شده با استفاده از نرم افزار استاندارد اضافی برای پشتیبانی از محاسبات موازی (کتابخانه های نرم افزار PVM، MPI، DVM، و غیره) تضمین می شود. PVM و MPI بر روی ابررایانه های Cray-T3 آزمایش شده اند.

طی ده سال کارکرد جدیدترین ماشین‌های محاسباتی الکترونیکی، یک برنامه امنیتی بزرگ جمع‌آوری شده است که به سمت جدیدترین ماشین‌های محاسباتی الکترونیکی گرایش دارد. کار مجدد یوگو برای کامپیوترهای موازی احتمالا غیر واقعی است.

ضد استدلال. از آنجایی که این برنامه ها تضمین می کنند که وظایف مجموعه به درستی تکمیل می شوند، پردازش آنها مورد نیاز نیست. ONE Yakshcho postperses مجاز به محاسبه وظایف برای ساعت دریافت فراوانی غیر رئیس روسو، تازگی نویخ زاودان، سپس میله های فراموشی برنامه ای جدید من در ویوسوفوات خواهم بود. به صورت موازی ویکنانیا

انتظار محاسبه سریعتر در اجرای موازی الگوریتم، برابر با متوالی وجود دارد.

ضد استدلال. در واقع، الگوریتم‌ها بدون بخش (آواز خواندن) محاسبات بعدی سوختند. با این حال، این ماهیت قدرت الگوریتم است و به امکان اجرای موازی کار در دست ارتباطی ندارد. یادگیری توسعه الگوریتم‌های جدید که برای اجرای وظایف در سیستم‌های موازی مناسب‌تر هستند، ضروری است.

بنابراین، یک ضد استدلال کوچکتر برای نگرش انتقادی پوست در برابر ظهور فناوری های محاسباتی موازی وجود دارد.

1.2 پردازش موازی داده ها

1.2.1 اصل پردازش موازی

تقریباً تمام الگوریتم های توسعه یافته در این زمان متوالی هستند. به عنوان مثال، هنگام محاسبه ویروس a + b × c، لازم است ضرب را حذف کنید و تنها پس از آن جمع را حذف کنید. از آنجایی که در ماشین‌های محاسباتی الکترونیکی وجود گره‌ها تا می‌شود و چند برابر می‌شود که می‌توان آنها را یک شبه پردازش کرد، در این صورت گره اضافه شده در کار کامل گره ضرب قرار می‌گیرد. می توان نتیجه گرفت که رانندگی ماشین امکان پذیر است، زیرا وظایف الگوریتم را می توان به صورت موازی پردازش کرد.

شما می توانید m پردازنده داشته باشید که در یک ساعت کار، نتیجه مورد نیاز را در یک چرخه محاسبه ایجاد می کند.

چنین "؛ پردازنده های غنی"؛ ماشین‌ها می‌توانند از نظر تئوری برای یک الگوریتم پوست خاص استفاده شوند و می‌توان گفت، "بای پس"; ماهیت ترتیبی الگوریتم ها. با این حال، همه چیز به این سادگی نیست - تعداد نامحدودی الگوریتم خاص وجود دارد، به همین دلیل است که ادغام انتزاعی تر ممکن است به طور مستقیم با اهمیت عملی مرتبط نباشد. تحولات آنها امکان موازی سازی را تغییر داد، مبنایی برای مفهوم موازی گرایی بدون وقفه شد و امکان مشاهده اجرای میان افزارهای محاسباتی - سیستم های پردازشگر چندگانه را از موقعیت های پنهانی امکان پذیر کرد که به صورت پویا برای یک الگوریتم خاص پیکربندی شده اند.

قدرت پردازش غنی و انرژی هسته ای غنی مدت هاست که در بین برنامه نویسان کامپیوتر رایج شده است، که برای برنامه نویسان در تمام دنیا احترام قائل نیستند، یا درک نادرست توانایی ذاتی در آنها به سادگی اشتباه است. فرض بر این نیست که پس از خواندن این مقاله به گورو محاسبات موازی Win تبدیل شوید، اما قطعاً تمام سخنرانی ها را درک خواهید کرد.

وارد

با نزدیک شدن به سنگ 32 بیتی، آشکار شد که نیاز به جلو بردن نه تنها قدرت، بلکه تخلیه نیز هست. توسعه دهندگان پردازنده با فرکانس های کلاک بالاتر با مشکلات کم مواجه شده اند: حذف گرمای مشاهده شده در کریستال غیرممکن است، تغییر اندازه ترانزیستورها غیرممکن است، اما مشکل اصلی این بوده است که با سرعت کلاک بالاتر، کد سرعت برنامه انجام نمی شود. پیشرفت. دلیل این امر، عملکرد موازی سیستم های رایانه ای فعلی بود و یک پردازنده، هر چقدر هم که سخت باشد، می تواند تنها در یک کار از کار بیفتد. به عنوان مثال، در سیستم ویندوز 7 من، در زمان نوشتن این مقاله، 119 فرآیند در حال اجرا هستند. اگرچه بوی تعفن همه در پس زمینه وجود ندارد، اما همه آنها به شدت بالایی نیاز ندارند. روی یک سنگ، بسیاری از فرآیندها/رشته ها می توانند همزمان باشند. سپس کار آنها در حال انجام است: پس از اینکه جریان جریان کوانتوم ساعت خود را مصرف کرد، در طی آن یکی انتخاب می شود، جریان آن در حافظه ذخیره می شود و با پیشروی از پردازنده حذف می شود و جایگزین می شود. نهر، آنچه در رودخانه است ظاهر می شود و زمینه را تغییر می دهد که ساعت ارزشمندی هدر می رود. در این بین، داده ها بین پردازنده و RAM رد و بدل می شود، از طریق پهنای باند گذرگاه سیستم متصل به هم، ریزپردازنده عصبی بامبو دود می کند، از سوی دیگر، داده ها را بررسی می کند. برنامه ریزان سخت افزار و نرم افزار (به عنوان مثال، از سیستم عامل) می توانند برای افزودن داده ها به حافظه پنهان به کمک بیایند. با این حال، هر چقدر هم که پول گرفته شود، چنین راه حلی نمی تواند نوشدارویی باشد. راه حل، پردازش موازی بود، زیرا تعدادی از فرآیندها در زمان واقعی در حال اجرا هستند. و برای درک این امر، لازم است که سنگ را به طور اساسی طراحی و دوباره طراحی کنیم - دو کریستال شکل یا بیشتر را در یک مورد قرار دهیم.

برنامه ریزی

هنگام توسعه برنامه های موازی، مرحله طراحی مهم تر از توسعه افزونه های تک رشته ای می شود. و قطعات برنامه نویسی موازی واقعی در دانشگاه برای دهه ها مورد مطالعه قرار گرفته است و چندین مفهوم شناسایی شده است که خود را ثابت کرده است. مهمترین چیز این است که از پیشرفت به روشی متفاوت شگفت زده شوید، نه به صورت متوالی، برای دیدن یک تکه کار، برای تجزیه کار. سه روش وجود دارد: تجزیه توسط وظایف، تجزیه توسط داده ها، تجزیه توسط جریان اطلاعات. اولین روش تجزیه ساده ترین است: ما به سادگی تابع را به یک رشته متصل می کنیم و آن را روی نخ اجرا می کنیم. پردازش موازی آماده است. با این حال، ممکن است مشکلات وجود داشته باشد - رقابت، به عنوان در یک چیز، که در حال هماهنگ است، vikoriyutsya زیرزمینی داده های جهانی. اجازه دهید در مورد این بعد صحبت کنیم. راه دیگری را می توان با روش هوشمندانه موازی سازی به دست آورد: به عنوان مثال، آرایه بزرگی از داده ها توسط تعدادی جریان تشکیل می شود که پوسته های آنها بر روی بخشی که با مرزهای نازکی احاطه شده است، جریان می یابد. اگر کار یک جریان در نتیجه تجزیه جریان دیگر باشد، تجزیه جریان های اطلاعاتی به این هدف عمل می کند. به عنوان مثال، در حالی که فایل در حال خواندن است، تا زمانی که جریان خوان داده ها را ذخیره نکند، نمی توان جریان خوان را روی ربات چاپ کرد.

راه حل های سخت افزاری


اول از همه، ما باید به سراغ یک پردازنده چند هسته ای برویم، توسعه دهندگان پردازنده متوجه شده اند که هنگام نصب یک رشته، هسته پردازنده تحت تأثیر قرار نمی گیرد (من فکر می کنم، برای این کار نیازی نیست که بیننده باشید). و قطعات برای ایجاد یک رشته برنامه دیگر همه منابع ریزپردازنده نیستند (قطعات سخت افزاری - دستگاه های سخت افزاری، حافظه نهان - می توانند در یک نمونه ذخیره شوند)، سپس تکرار نیاز به منطقه بیشتری از معماری نرم افزار دارد (منطق قطع می شود ). این فناوری hyper-threading نام داشت. Hyperthreading یک مکانیسم سخت افزاری است که در آن تعدادی از رشته های سخت افزاری مستقل در یک سیکل ساعت بر روی یک هسته پردازشگر فوق اسکالر پردازش می شوند. با در نظر گرفتن این موضوع، یک پردازنده فیزیکی مانند دو گزینه منطقی برای اجرای سیستم عامل به نظر می رسد، زیرا طراحی و توسعه، در اصل شامل تقسیم به دو هسته است. این بدان معنی است که همیشه یک جریان مداوم از دستورات وجود دارد که در نصب نهایی نهایی می شوند. این فناوری به معماری NetBurst که در پردازنده‌های پنتیوم 4 پیاده‌سازی شده بود، تعمیم داده شد.بنابراین در نسخه‌های دیگر پنتیوم 4 نیز hyperthreading پیاده‌سازی شد، اما یکسان نبود. اکنون می توانم آن را در پردازنده Atom نصب شده در نت بوک اجرا کنم. کدام سنگ علاوه بر هایپر نخ، هسته غنی (حداقل دو تکه) دارد، پس در سیستم عامل من مراقب این سنگ ها هستم. اما، به عنوان مثال، Core 2 Duo هر روز مانند Core i5 دارای hyperthreading است. با کمک hyper-threading، سرعت برنامه های بهینه سازی شده برای رشته های بالا تا 30 درصد افزایش یافت. من می خواهم به این نکته اشاره کنم که افزایش بهره وری در این زمینه نتیجه مکمل های مخصوص تهیه شده نیست.

در همان زمان، از hyperthreading تا معماری superscalar، یک معماری EPIC جدید ایجاد شد که در پردازنده‌های Itanium پیاده‌سازی شد، اما این موضوع دیگر نمی‌تواند در آمار امروزی جای بگیرد.

سپس پردازنده‌های هسته‌ای غنی آمدند که در همه جا مورد استفاده قرار می‌گیرند. پردازنده های چند هسته ای از پردازش تراشه های چند پردازنده ای پشتیبانی می کنند. در این معماری دو یا چند هسته در یک پردازنده پیاده سازی می شود که در یک سوکت نصب می شود. این هسته ها با توجه به طراحی خود به راحتی می توانند کش ها و کریستال های بزرگ را استخراج کنند. پردازنده های چند هسته ای نیز به چیپست عظیمی نیاز دارند. از آنجایی که هسته پوستی یک ماژول سیال مستقل است، پردازنده‌های چند هسته‌ای موازی‌سازی مناسب را تضمین می‌کنند - گردش جریان پوست به درون هسته مایع. هنگامی که چندین هسته وجود دارد، ممکن است راهی برای تبادل اطلاعات بین آنها وجود داشته باشد که بدون آن ایجاد یک سیستم موازی به سادگی غیرممکن است و به یک منبع خاص نیاز است. برای این منظور می توانید برنامه نویسی پیشرفته تری را با استفاده از کنترلر (APIC) پیدا کنید. تبادل اطلاعات بین پردازنده ها/هسته ها را با استفاده از مکانیسم Interprocessor Interrupt حذف می کند. بقیه برنامه مجهز به یک سیستم عامل برای زمان بندی/زمان بندی موضوعات است.

مصرف انرژی نیز در اولویت قرار دارد. و نه تنها پلتفرم های مختلف تلفن همراه که با باتری کار می کنند، بلکه سیستم های سرور و دسکتاپ نیز وجود دارند. اولین پردازنده‌های x86 می‌توانند بخش‌هایی از وات را تحمل کنند، در حالی که مدل‌های با کارایی بالا امروزی می‌توانند 130 وات یا بیشتر را تحمل کنند. امروزه، پردازنده های چند هسته ای امکان صرفه جویی در انرژی را فراهم می کنند، به طوری که افزایش بهره وری از طریق موازی سازی به جای افزایش سرعت ساعت به دست می آید.

راه حل های نرم افزاری

راه حل های برنامه نویسی نقش زیادی در کدهای موازی Wicon دارند. هم محصولات نرم افزاری سیستم (سیستم عامل ها، کامپایلرها) و هم برنامه های علوم کامپیوتر وارد صحنه می شوند. از دیدگاه یک برنامه نویس کاربردی، می توانیم به سرعت از زیر مجموعه دیگری استفاده کنیم. در واقع، تا زمانی که سیستم عامل قابل اعتماد باشد، این کاملاً کافی است. توسعه‌های بیشتر به Windows NT 6.1 گسترش می‌یابد مگر اینکه خلاف آن ذکر شده باشد. همانطور که می دانید ویندوز NT دارای یک مدل threading غنی است که در حال تغییر است. هنگامی که یک برنامه شروع می شود، یک فرآیند شروع می شود، می تواند یک یا چند رشته در حال اجرا داشته باشد که همه آنها یک حافظه خصوصی و یک فضای آدرس مشترک مشترک دارند. جریان، به روش خود، این است که توالی دستورات تقویت می شود، و به طور مستقل کامپایل می شود. سه نوع جریان وجود دارد:

  • Koristuvach Rivna - ایجاد شده در برنامه Koristuvach (در Koristuvach Rivna). این رشته‌ها در ویندوز NT روی رشته‌های سطح هسته پیش‌بینی می‌شوند، بنابراین روی پردازنده اجرا می‌شوند.
  • رشته هسته - توسط هسته سیستم عامل انجام می شود.
  • رشته سخت افزار - واحدی که روی پردازنده ذخیره می شود.

جریان خلقت در سه مرحله صورت می گیرد. در ابتدا توضیحات آن با استفاده از استریم API جستجو می شود، سپس در مرحله پایانی، این فراخوانی به شکل یک فراخوانی هسته در می آید، در نتیجه یک نخ ایجاد می شود، سپس در وسط فرآیند آن به پایان می رسد. اگر برنامه به طور همزمان چندین بار از کار بیفتد، ممکن است با مشکلات زیادی روبرو شوید. آنها را می توان به راحتی به انواع مختلف طبقه بندی کرد. مشکل همگام سازی زمانی رخ می دهد که یک رشته اتصال رشته دیگری را بررسی می کند، اما به دلایلی نمی تواند اتصال را کامل کند. اگر مشکلی در تعامل وجود داشته باشد، یک رشته نمی تواند بلافاصله اطلاعات را به دیگری منتقل کند، مثلاً از طریق درهای پشتی. اگر یک جریان تحت فشار و دیگری سرد باشد، مشکل تعادل ایجاد می شود. از آنجایی که در لحظه ای که برنامه ها به رایانه قدیمی منتقل می شوند، کد سرعت حرکت نمی کند، پس ما در مورد مشکل مقیاس پذیری صحبت می کنیم. برای غلبه بر همه این مشکلات، مزایای کار در یک محیط جریان غنی شناخته شده است. بیایید نگاهی دقیق تر به آنها از لحاظ سینمایی بیندازیم.

کدهای اولیه موازی

بخش هایی از کد که می توانند به طور همزمان توسط تعدادی رشته مختل شوند و تغییرات پنهان را جایگزین کنند، بخش های بحرانی نامیده می شوند. مقادیر خواندن-نوشتن تحت جریان دو یا چند رشته را می توان به صورت ناهمزمان پردازش کرد. این کمپ کمپ تقطیر نامیده می شود. بنابراین در فاصله یک ساعت پوست در وسط مقطع بحرانی ممکن است تنها یک جریان رخ دهد. که برای آن از اصول اولیه همگام سازی استفاده می شود - مسدود کردن. Semaphore از نظر تاریخی مکانیسم اولیه برای همگام سازی است که توسط Dykbud در سال 1968 توسعه یافت. به تعدادی از جریان‌ها اجازه می‌دهد تا وارد بخش بحرانی شوند؛ وقتی جریان قبل از آن وارد می‌شود، مقدار آن تغییر می‌کند و هنگام خروج افزایش می‌یابد. تفکر آشکار یک عملیات مشتق شده اتمی برای معکوس کردن مقدار سمافور + افزایش مقدار و همچنین معکوس کردن مقدار + تغییر مقدار است. یک mutex به عنوان شاخه ای از سمافور عمل می کند که یک سمافور دوتایی است و تنها به یک رشته اجازه می دهد تا در بخش بحرانی متصل شود. مسدود کردن خواندن و نوشتن به چندین رشته اجازه می‌دهد تا مقادیر بخش بحرانی را بخواند و فقط در یکی بنویسد. در ساعت بازیابی، بلوک چرخش مسدود نمی شود، اما همچنان به مصرف فعال منبع مسدود شده ادامه می دهد. مسدود کردن چرخش یک مشکل اصلی هماهنگ سازی برای یک پردازنده تک هسته ای است و تمام منابع محاسباتی را اشغال می کند.

مکانیسم تغییرات ذهنی، مشابه سمافورها، از جایگزینی سمافورها (و mutexes) جلوگیری می کند، جایگزین ارزش های واقعی نمی شود. بوی تعفن شرارت اذهان بیگانه.

زبان‌های امروزی با مکانیسم‌های سطح بالا برنامه‌ریزی شده‌اند که امکان مسدود کردن ساده متغیرهای ذهنی ("مانیتور") را فراهم می‌کند. به جای نوشتن صریح عملیات مسدودسازی و رفع انسداد در کد، توسعه‌دهنده فقط باید بخش مهم را به‌عنوان همگام‌سازی شده اعلام کند.

برای تبادل اطلاعات بین فرآیندها/رشته‌ها، پیام‌هایی ایجاد می‌شوند که به سه گروه تقسیم می‌شوند: فرآیند داخلی (برای انتقال بین رشته‌ها در یک فرآیند)، بین پردازش (برای انتقال اطلاعات بین خود فرآیندها - از ذخیره‌سازی در نخ‌ها) و فرآیند - فرآیند. (انتقال اطلاعات مستقل از رشته بین فرآیندها)).
در عین حال، اگر مسدود کردن متفاوت باشد، مسدود کردن ممکن است مرده (قفل مرده) یا زنده (قفل زنده) باشد. بن بست زمانی اتفاق می افتد که یک رشته در منبعی از رشته دیگر مسدود می شود و نمی توان آن را تاریخ گذاری کرد (به عنوان مثال، به نتیجه اول نگاه می کند). انسداد مرده می تواند با مرگ چهار ذهن خوب و مهم رخ دهد (ما نمی توانیم بین این ذهن ها در این statti تمایز قائل شویم). بنابراین، هنگام نوشتن یک کد رشته ای غنی، برنامه ممکن است بتواند در بن بست گیر کند، اما در عمل بسیار پیچیده تر به نظر می رسد. انسداد شهر برای مردگان زنده است زیرا در قسمت اول جریان ها مسدود می شود و در قسمت بعدی بوی تعفن دائماً درگیر است.

به نظر می رسد که رابط های نرم افزار استریم برنامه با یکدیگر ناسازگار هستند. آگاهی از ویژگی های جدید که اهمیت آن به سیستم عامل بستگی دارد برای همه آنها مهم است. در بخش‌های بعدی، به روش‌های کار در یک محیط غنی از نخ و مشکلات فزاینده کدهای موازی با رابط‌های مختلف خواهیم پرداخت.


موضوعات Win32

پس از ظهور اولین نسخه ویندوز NT، برنامه نویسی غنی از جریان در آن از نسخه ای به نسخه دیگر کاهش یافت و اتصالات با رشته های API به طور همزمان کاهش یافت. بنابراین، هنگامی که یک فرآیند در پشت تابع اضافی CreateProcess شروع می شود، یک رشته از دستورات وجود دارد. جریان از دو شی تشکیل شده است: شی هسته (که سیستم از طریق آن جریان را حمل می کند) و پشته که در آن پارامترها، توابع و جریان های متغیر ذخیره می شوند. برای ایجاد یک رشته اضافی، باید تابع CreateThread را فراخوانی کنید. در نتیجه، یک شی هسته ایجاد می شود - یک ساختار داده فشرده، که توسط یک سیستم کنترل جریان پشتیبانی می شود. این شی در واقع یک جریان نیست. همچنین، از فضای آدرس پذیر فرآیند پدر، نخ حافظه را می بیند. و تمام رشته های یک فرآیند در فضای آدرس آن متراکم می شوند و داده های جهانی آن را از هم جدا می کنند. بیایید به تابع CreateThread برگردیم و به پارامترهای آن نگاهی بیندازیم. پارامتر اول نشانگر ساختار PSECURITY است ATTRIBUTES که نشان دهنده ویژگی های حفاظت و قدرت کاهش است، برای تعیین مقدار مقادیر کافی است NULL را پاس کنید. پارامتر دیگری از نوع DW0RD نشان می دهد که چه مقدار از فضای آدرس را می توان به یک رشته در زیر پشته آن اختصاص داد. پارامتر سوم PTHREAD START_ROUTIME pfnStartAddr - نشانگر تابعی که باید به رشته متصل شود و غیرفعال نشود. این تابع مسئول فرم مادر DWORD WINAPI ThreadFunc (PVOID pvParam) است، می تواند هر عملیاتی را لغو کند. اگر تمام شود، کنترل معکوس می شود و شفادهنده جسم اصلی نخ به 1 تغییر می کند، در صورتی که هیلر برابر با 0 باشد، این شی کاهش می یابد. چهارمین پارامتر تابع CreateThread یک اشاره گر به ساختار PVOID برای قرار دادن پارامتری برای مقداردهی اولیه تابع پیچیده شده در thread است (توضیحات پارامتر سوم را ببینید). پارامتر پنجم (DWORD) ترتیب است که نشان دهنده فعالیت نخ پس از ایجاد است. پارامتر ششم باقیمانده (PDWORD) آدرس تغییری است که در آن شناسه در thread قرار می گیرد تا NULL ارسال شود و بدین ترتیب نشان می دهد که ما به آن نیاز نداریم. در صورت موفقیت آمیز بودن، این تابع دسته را به سمت نخ می چرخاند، که اجازه می دهد تا نخ دستکاری شود. اگر خراب شود، تابع 0 می چرخد.


سه راه برای خاتمه دادن به یک نخ وجود دارد، اما سه اشکال وجود دارد: خاتمه یک نخ از طریق فراخوانی تابع ExitThread، یا فراخوانی TerminateThread زمانی که فرآیند پدر بدون پایان دادن به نخ، تکمیل شود. بیش از 1 مسیر خود تکمیل جریانی است که در معانی شیطانی زندگی شما یافت می شود و دوستانه است. زیرا تنها در این صورت تضمین می شود که تمام منابع سیستم عامل ذخیره می شوند و تمام اشیاء C/C++ به تخریبگرها کاهش می یابند.

فقط چند بار ریزش دیگر اجازه می دهد تا جریان جریان یابد. تابع CreateThread در API Win32 یافت می شود و در کتابخانه Visual C++ معادل _beginthreadex وجود دارد که تقریباً فهرستی از پارامترها را دارد. توصیه می شود که موضوعات را به تنهایی ایجاد کنید، زیرا نه تنها CreateThread، بلکه ایجاد عملیات اضافی نیز می باشد. علاوه بر این، از آنجایی که جریان خلاقیت‌ها به دنبال بقیه است، پس از خالی بودن، _endthreadex فراخوانی می‌شود که بلوک داده‌های اشغال شده توسط ساختاری که جریان را توصیف می‌کند پاک می‌کند.

استریم ها قرار است با اولویت پخش شوند. اگر همه نخ ها اولویت پایینی داشتند، برای کنترل پوست (WinNT) 20 میلی ثانیه خواهد بود. اینطوری نیست. WinNT دارای اولویت پخش 31 (صفر) است. وقتی 31 مهمترین است، فقط برنامه های حیاتی - درایورهای دستگاه - می توانند روی آن نصب شوند. 0، کمترین، رزرو برای رشته ویسکونی از صفر کردن صفحات. Tim یک منش نیست، خرده‌فروش نمی‌تواند به صراحت شماره اولویت را برای viconn جریان خود نشان دهد. در ویندوز، جدول اولویت ها وجود دارد که نمادهای گروه بندی اعداد اولویت را نشان می دهد. که در انتهای آن عدد به عنوان اساس این جدول و با مقادیر اولویت داده شده به فرآیند پدر تشکیل می شود. مقادیر از طریق آنهایی که مایکروسافت حق تغییر آنها را برای خود محفوظ می دارد و از نسخه ای به نسخه دیگر سیستم عامل خود با آنها مطابقت دارد به ثابت های نمادین متصل می شوند. وقتی فعال باشد، جریان اولویت عادی را از بین می برد. این را می توان با استفاده از تابع SetThreadPriority تغییر داد، که دو پارامتر را می گیرد: HANDLE hThread - یک توصیف کننده برای رشته ای که در حال تغییر است، int nPriority - سطح اولویت (از جدول). تابع اضافی GetThreadPriority می تواند برای حذف اولویت موضوع با عبور دادن توصیفگر رشته مورد نیاز قبل از آن استفاده شود. قبل از تغییر اولویت موضوع، باید با استفاده از تابع SuspendThread سرعت آن را کاهش دهید. پس از تغییر اولویت موضوع، باید تابع ResumeThread را به زمانبند بدهید تا آن را زمان بندی کند. هر دو عملکرد یک دسته را به رشته ای که روی آن کار می کنند حفظ می کنند. کلیه توضیحات عملیات از جمله درخواست و تجدید وضعیت و قبل از فرآیندها. بوی بد قابل اعمال/به‌روزرسانی نیست، قطعات یک ساعت پردازنده را تلف نمی‌کنند، این برنامه‌ریزی نشده است.

منحصر به فرد بودن مسابقه در Win32

در کاربردهای چند رشته ای، لازم است تا حد امکان انجام عملیات اتمی-انفرادی که نمی تواند با نخ دیگری تداخل داشته باشد، اجتناب شود. چنین توابع Win32 API از پیشوند Interlocked استفاده می کنند، برای مثال، برای افزایش ارزش مبادله i++، از InterlockedExchangeAdd(&i, 1) استفاده کنید. علاوه بر عملیات افزایش/تغییر، عملیات تراز اتمی نیز وجود دارد و همچنین به عنوان تکلیف شما غیر ضروری هستند.

با این حال، توابع اتمی حتی در مقادیر زیاد نیز می توانند متفاوت باشند. بخش های حیاتی به کمک می آیند. Win32 دارای توابعی برای علامت گذاری صریح چنین قطعاتی از کد است که به صورت اتمی به هم متصل می شوند. ابتدا باید یک نمونه از ساختار بخش بحرانی ایجاد کنید، سپس عملگرهایی را برای ورود و خروج از بخش بحرانی بنویسید:

CRITICAL_SECTION g_cs; DWORD WINAPI ThreadRun (PVOID pvParam) (EnterCriticalSection(&g_cs)؛ // اکنون قابل اندازه‌گیری LeaveCriticalSection(&g_cs؛ بازگشت 0;)

بخش‌های حیاتی Win32 فقط کدی نیستند که می‌توانند توسط چندین رشته پردازش شوند، بلکه یک مکانیسم همگام‌سازی کامل داده‌ها هستند. بخش های بحرانی کمترین مسئولیت را خواهند داشت، بنابراین کمترین محاسبه را شامل می شوند.
برای اینکه مقادیر چندین رشته خوانده شوند و به یک تغییر داده شوند، می‌توانید ساختار مسدودکننده نازک SRWLock را تنظیم کنید. ابتدا باید ساختار را با کلیک بر روی InitializeSRWLock و ارسال نشانگر به آن مقداردهی اولیه کنیم. سپس، در ساعت ضبط، منبع با دسترسی انحصاری ارائه می شود:

AcquireSRWLockExclusive(PSRWLOCK SRWLock); // مقدار ReleaseSRWLockExclusive را بنویسید(PSRWLOCK SRWLock);

از طرف دیگر، در ساعت مطالعه، می توانید دسترسی را به اشتراک بگذارید:

AcquireSRWLockShared(PSRWLOCK SRWLock); // مقدار ReleaseSRWLockShared را بخوانید(PSRWLOCK SRWLock);

Revert: همه توابع ساختار تعریف شده SRWLock را به عنوان یک پارامتر می پذیرند.
با کمک تغییرات ذهنی، لازم است به صورت دستی دنباله "مقیم - ساکن" (تجزیه تجزیه جریان اطلاعات) سازماندهی شود، به طوری که چنین مفهومی می تواند از قبل توسعه یابد. این مکانیسم دارای عملکردهای SleepConditionVariableCS و SleepConditionVariableSRW است که برای مسدود کردن بخش بحرانی یا ساختار انسداد خوب عمل می کند. آنها سه پارامتر را می پذیرند و یکسان هستند: نشانگر تغییر هوشمند، جریان، نشانگر بخش بحرانی و SRWLock، توقف دسترسی همگام سازی. پارامتر شروع، ساعت (بر حسب میلی ثانیه) برای جریان شستشوی مغزی است، اگر شستشوی مغزی وجود نداشته باشد، تابع روی False تنظیم می شود. پارامتر باقی مانده از تابع دیگر نوع مسدود کردن است. برای بیدار کردن رشته های مسدود شده، باید تابع WakeConditionVariable یا WakeAllConditionVariable را از یک رشته دیگر فراخوانی کنید. اگر نتیجه کلیک روی این توابع تایید خروجی ذهن باشد که در هنگام بیدار شدن جریان به عنوان پارامتر به این توابع ارسال می شود.

در این توضیحات با مکانیسم های پنهان سمافور و موتکس آشنا شدیم. از اینکه چقدر چیزها در Win32 متفاوت هستند شگفت زده خواهید شد. می توانید با استفاده از تابع اضافی CreateSemaphore یک سمافور ایجاد کنید. پارامترهای زیر به آن ارسال می شود: نشانگر ساختار PSECURITY_ATTRIBUTES که شامل پارامترهای امنیتی است. حداکثر تعداد منابع قابل تکمیل؛ تعداد منابع در دسترس کاربر؛ نشانگر روی ردیف که به معنای سمافور است. اگر نخی که سمافور را نگه می‌دارد بخواهد دسترسی به منبعی را که توسط سمافور محافظت می‌شود رد کند، تابع انتظار برای نخ به سمافور اختصاص داده می‌شود. اگر مقدار آن بزرگتر از 0 باشد، سمافور قوی است و مقدار آن به 1 تغییر می کند و جریان برنامه ریزی می شود که ادامه یابد. اگر هنگام استفاده از سمافور مشاغل، مقدار آن برابر با 0 باشد، جریان کلیک به یک ایستگاه طراوت تبدیل می شود. در لحظه ای که یک نخ یک سمافور را آزاد می کند، تابع ReleaseSemaphore فراخوانی می شود و مقدار سمافور 1 افزایش می یابد. Mutexe ها نیز مانند سمافورها، اشیاء هسته هستند. عملکرد mutexe ها مشابه بخش های حیاتی Win32 است، با این تفاوت که بقیه در حالت Back-end پیکربندی می شوند. در هر زمان معین، یک mutex فقط به یک رشته اجازه اتصال می دهد و به حداکثر یک منبع دسترسی می دهد. در این حالت، به شما امکان می‌دهد تعدادی از جریان‌ها را همگام‌سازی کنید، شناسه جریانی که منبع را ذخیره کرده و تعداد عکس‌ها را ذخیره کنید. برای ایجاد یک mutex، می‌توانید به سرعت از تابع CreateMutex استفاده کنید، که پارامترهای آن مشابه پارامترهایی است که در زیر به آنها خواهیم پرداخت. هنگامی که موضوع mutex با موفقیت کامل شد، به رشته باقی مانده دسترسی انحصاری به منبع سرقت شده داده می شود. جریان های رشتا که در تلاش برای رسیدن به این منبع هستند به ایستگاه بازیابی می روند. اگر رشته ای که در حال قرض گرفتن یک منبع است، استفاده از آن را به پایان برساند، باید تابع ReleaseMutex را فراخوانی کند. این تابع آشکارساز بازگشتی در mutex را به 1 تغییر می‌دهد. مکانیسم همگام‌سازی را که برای تعیین کد شناسایی استفاده می‌شود، انتخاب کنید.

علاوه بر این، ویندوز NT، با شروع نسخه چهارم، دارای سطح دیگری از جزئیات است - فیبرها (و رشته ها). در همان زمان، شی هسته thread را می توان به تعدادی نخ تقسیم کرد. و در این شرایط، سیستم عامل چیزی در مورد آنها نمی داند، همه کارها از برنامه ریزی و مدیریت موضوعات بر دوش توسعه دهنده برنامه می افتد.

ویسنووک

ایجاد نرم افزارهای مدرن مستعد موازی سازی زیاد است و در آینده، سازندگان پردازنده تهدید می کنند که تعداد هسته های یک پردازنده را افزایش دهند. با این حال، برنامه نویسی بسیار دقیق شامل تعدادی مسائل دشوار است: سازماندهی برنده شدن هماهنگ تیم ها، حذف مسابقات و هدف قرار دادن بهینه شکاف به منظور دستیابی به افزایش بهره وری همزمان با موازی سازی.

در این مقاله، ابتدا با مفاهیم اولیه کدگذاری موازی - مفاهیم رمزآلود آشنا شدیم، سپس یاد گرفتیم که چگونه آنها با یک API خاص - Win 32 Threads بوی بد می دهند. چارچوب‌های آماری به ما اجازه نمی‌دهند که به APIهای دیگر برای کدنویسی با جریان غنی نگاه کنیم. ما مطمئن هستیم که اگر به بحث در مورد مسائل ضروری ادامه دهیم، هنوز فرصت داریم.

برای شما آرزوی موفقیت دارم، به زودی شما را می بینم!

به عنوان یک قاعده، الگوریتم برنامه موازی از دنباله ای از نمودارهای موازی و بعدی تشکیل شده است. بخش موازی برنامه شامل توزیع داده ها و تبادل داده ها، در پشت مدارهایی است که توسط الگوریتم برنامه موازی تولید می شوند. آخرین بخش برنامه، به عنوان یک قاعده، به معنای پردازش حسابی داده ها در تمام فرآیندهای دیگر است.

قانون امدال- افزایش بهره وری سیستم حسابداری را به دلیل افزایش تعداد کارگران نشان می دهد.

هرگاه گنجی به چند قسمت تقسیم شود، کل ساعت کشف در یک سیستم موازی نمی تواند کمتر از ساعت کشف قطعه یافت شده باشد. مطابق با این قانون، اجرای سریع برنامه ها برای rahunok roseparaleluvannyaاین دستورالعمل ها در مورد غیرشخصی بودن حسابداران با یک ساعت از هم فاصله دارند که مستلزم رعایت دستورالعمل های بعدی است.

لطفاً به ما اطلاع دهید که در فرآیند محاسبه چه کاری باید انجام دهید. قابل قبول است که الگوریتم به گونه ای باشد که بخشی از فرآیند کلی محاسبات را تنها با مراحل بعدی بتوان جدا کرد و بدیهی است که می توان بخشی را کاملاً موازی کرد (در این صورت زمان محاسبه متناسب با تعداد وظایف گره ها خواهد بود. ). سرعتی که می‌توان روی سیستم محاسباتی از روی پردازنده‌ها محاسبه کرد، برابر است با راه‌حل‌های تک پردازنده‌ای که مقداری بیش از حد ندارد.

بگذارید پردازنده ها برای بهره وری یکسان باشند. تی 0 – قسمت پایانی الگوریتم موازی، به عنوان مثال، تولید داده های اولیه و پردازش قسمت نهایی نتیجه نهایی. تی 1 ، تی 2 ، ... تی پ- یک ساعت کار متوالی که توسط پردازشگر پوست بدون تعامل با یکدیگر تکمیل می شود. امروز زمان جنگ است پپردازنده ها ناهموار نشان داده می شوند:

de i = 1، 2، ... ص. غیرت بیرون آمدن کیتی برابر یکدیگر. ستاره ها، جایگزین ها
T seq - T 0, د تی دنباله * ساعت تولید ویدئو روی یک پردازنده، قابل حذف تی همتراز ≥ T 0
.

تقسیم بر T seq i که با f = نشان داده می شود تی 0 / T seq - کسری (کسری) یک نمودار متوالی در نمودار نهایی محاسبه می شود، کسر می شود:
.(1.1)

پریسکورنیا (سرعت دادن) - این برای تنظیم ساعتی در حالت ترتیبی (روی 1 پردازنده)، در ساعت برای تنظیم در حالت موازی (روی پردازنده های p) اعمال می شود.

، vikorista و نابرابری (1.1)، رد شد
(1.2)

مشاهده می شود که با f = 0 و برابری T i حذف می شود S = p، با f > 0 i p → ∞، حذف می شود.
. این تابع به طور یکنواخت در حال رشد است و با این حال، در موارد نادر به حداکثر می رسد. خوب، نه در هر تعداد پردازنده رشد شتابان را نمی توان با اندازه تبدیل شده بخش از طرح متوالی جابجا کرد.

با توجه به قانون امدهل، ما برخی از آخرین تحولات را فرض کردیم fمقدار ثابت است و در پارامتر قرار ندارد n پیچیدگی محاسباتی اولیه کار درگیر. با این حال، برای یک سری عالی، قسمت داده شده f=f(n) یک تابع واپاشی است nو در این صورت می توان با تغییر بخشی از کار متوالی که توسط پوسته پردازشگر پردازش می شود، شتاب تعداد ثابت پردازنده ها را افزایش داد. در غیر این صورت، شتاب Sp = Sp(n) تابع افزایشی پارامتر n است (به این زنجیره اغلب اثر Amdahl گفته می شود).

کارایی موازی سازیاین بدان معناست که الگوریتم از قدرت 100 درصدی در تمام پردازنده هایی که با رایانه کار می کنند استفاده می کند. فرمول محاسبه بازده:


(1.2)

توبتو. از آنجایی که شتاب S = p (حداکثر ممکن در یک ماشین پردازشگر p)، بازده موازی سازی 100٪ است. بر اساس قانون امدال، می‌توانیم تخمین بالایی از بازده را حذف کنیم:

E≤ 100%
(1.3)

به عنوان مثال، E ≤ 52.25% برای p=100 و f=0.01 و E ≤ 9.1% برای p=1000 و f=0.01.

ویسنووک . با تعداد کمی از کارهای متوالی، تعداد فرآیندها را افزایش دهید تا کارایی موازی بهبود یابد (دلیل آن این است که با افزایش فرآیندها، تعداد مبادلات افزایش می یابد). به عنوان مثال، اگر f = 0.01 (1%)، آنگاه E<100 и использовать для решения параллельной задачи более 100 процессоров нецелесообразно. برای بهبود کاراییبه عنوان یک قاعده، بخش های مختلف برنامه را موازی نکنید یا قطعات کوچک را محاسبه نکنید، که نیاز به همگام سازی فشرده فرآیندها دارد.

برای ارزیابی سریع یک ویژگی دیگر، آنچه نامیده می شود پوسته پوسته شدن سریع(افزایش سرعت در مقیاس). این ارزیابی می تواند نشان دهد که چگونه محاسبات موازی را می توان به دلیل افزایش پیچیدگی وظایف محول شده سازماندهی کرد.

مقیاس بندی(مقیاس پذیر) - هدف از ایجاد یک الگوریتم موازی برای استفاده موثر از پردازنده ها در پیچیدگی محاسباتی مختلف. مقیاس کار به گونه‌ای است که با افزایش تعداد پردازنده‌ها، الگوریتم شتاب بیشتری را در عین حفظ سطح کارایی ثابت برای هر پردازنده فراهم می‌کند.

مقیاس پذیری- به دلیل افزایش تعداد پردازنده هایی که برای موفقیت آن استفاده می شود، این وظیفه به طور متناسب افزایش یافته است. واضح بودن مقیاس کار به دلیل قدرت مهم سیستم های آزمایشی برای ارزیابی بهره وری سیستم های محاسباتی موازی است.

مقیاس پذیری افزونه موازی در سیستم MPP ممکن است به پیامدهای زیر منجر شود: الف) افزایش هزینه برای ارتباطات با افزایش تعداد پردازنده‌های ویکوریزه. ب) ناهمواری تقسیم بهره محاسباتی بین پردازنده ها.

با افزایش تعداد پردازنده ها و صرفه جویی در اندازه کار، تعداد تماس ها با عملکردهای MPI در برنامه افزایش می یابد. با این هزینه، هزینه قالب گیری و پردازش افزایش می یابد و هزینه پردازش به ازای هر پردازنده کاهش می یابد که نتیجه آن کاهش راندمان موازی سازی است. هجوم منفی روزافزون در ذهن به دلیل تأخیر فعلی آستانه در حال افزایش است. برای خوشه‌ها، از جمله گره‌هایی با چند پردازنده متقارن، می‌توانید سعی کنید تنوع ارتباط را با جایگزین کردن یک واحد پردازش رشته‌ای بالا در وسط یک گره پوستی کاهش دهید.

کل سربار تخمینی که با قطع الگوریتم موازی ظاهر می شود تی 0 = پ*Tp - T 1 ، د تی 1 - ساعت الگوریتم ترتیبی مسئله، تی پ- یک ساعت برای پیاده سازی الگوریتم بر روی پردازنده های P.

هزینه ها به دلیل نیاز به سازماندهی تعامل پردازنده ها، همگام سازی محاسبات موازی و غیره ایجاد می شود.

پس از وارد شدن تنظیمات، می توانید عبارات جدیدی را برای اجرای موازی کار و شتاب خاص انتخاب کنید:

Tp = (T 1 + تی 0 )/P، Sp = T 1 / Tp = (P * T 1 )/(T 1 + تی 0 )

بنابراین، کارایی پردازنده های محلی را می توان به شرح زیر توسعه داد:

E پ = Sp/P = T 1 / (تی 1 + تی 0 ) = 1/(1+ T 1 / تی 0 )

بنابراین، از آنجایی که پیچیدگی مشکل حل شده است ( تی 1 =const، با افزایش تعداد پردازنده ها، به عنوان یک قاعده، کارایی به دلیل افزایش هزینه های سربار کاهش می یابد. تی 0 . با تعداد ثابتی از پردازنده ها، کارایی را می توان با افزایش پیچیدگی کار درگیر افزایش داد. تی 1 قطعات منتقل می شوند و با افزایش قابلیت تاشو فاکتور هدر می رود تی 0 بیشتر رشد کن کمتر بپرداز تی 1 .

به این ترتیب، با تعداد پردازنده های بیشتر در تعداد خروجی های بیشتر، می توان با کمک افزایش قابل توجه پیچیدگی وظایف درگیر، بالاترین سطح کارایی را تضمین کرد. در ارتباط با این مشخصه مهم محاسبات موازی، ارتباط بین نرخ رشد لازم در پیچیدگی طرح‌بندی‌ها و تعداد پردازنده‌های مورد استفاده وجود دارد.

همچنین یک ویژگی مهم الگوریتم هایی که تقسیم می شوند تنوع (هزینه ) محاسبه می شود که به عنوان یک ساعت اضافی از اجرای موازی کار و تعداد پردازنده های مورد استفاده محاسبه می شود.

2. توپولوژی شبکه انتقال. نمونه ای از توپولوژی های ابتدایی، ویژگی های اصلی. الگوریتم های مسیریابی و روش های انتقال داده

    هنگام سازماندهی محاسبات موازی در چند رایانه برای سازماندهی ارتباطات متقابل، هماهنگ سازی و اتصال فرآیندهایی که به طور موازی در حال پردازش هستند، انتقال داده ها بین پردازنده های هسته محاسباتی انجام می شود. تاخیرهای زمانی در هنگام انتقال داده ها از طریق خطوط ارتباطی ممکن است به صورت غیرمستقیم ظاهر شوند (به دلیل کد سرعت پردازنده ها) و در نتیجه پیچیدگی ارتباطی الگوریتم تا حد زیادی به انتخاب روش های موازی کمک می کند. این روز عالی است.

    1. برنامه های توپولوژی برای انتقال داده ها

توپولوژی شبکه انتقال ساختار کموتاسیون خط بین پردازنده های سیستم محاسباتی است. توپولوژی یک نمودار کامل است که در آن انتقال داده ها را می توان بین دو راس سازماندهی کرد (پردازنده های ادغام). توپولوژی بر اساس احتمالات اجرای فنی موثر و تجزیه و تحلیل شدت انتقال جریان اطلاعات تعیین می شود. توپولوژی های معمولی شامل طرح های ارتباطی زیر برای پردازنده ها (ماوریک) است.

تعداد پوونی(گراف یا دسته کاملاً متصل) - سیستمی که در آن یک اتصال خط مستقیم بین هر جفت پردازنده وجود دارد، این توپولوژی حداقل ضایعات را هنگام انتقال داده تضمین می کند، اما پیاده سازی با تعداد زیادی پردازنده دشوار است.

خط(آرایه خطی یا مزرعه) - سیستمی که در آن همه پردازنده ها به ترتیب شماره گذاری می شوند و هر پردازنده به جز اولی و باقی مانده، با دو پردازنده همسایه (با جلو و بعدی) ارتباط خطی دارد. این طرح، از یک طرف، به سادگی اجرا می شود، از سوی دیگر، ساختار انتقال را با تعداد زیادی از وظایف محاسباتی (به عنوان مثال، با سازماندهی محاسبات نوار نقاله) نشان می دهد.

کیلچه(حلقه) - توپولوژی برای خروج از خط پردازنده ها به اتصالات اولین و پردازنده های باقی مانده خط داده می شود.

زیرکا(ستاره) - سیستمی که در آن همه پردازنده ها دارای خطوطی هستند که به پردازنده واقعی که آن را کنترل می کند متصل می شوند. این توپولوژی، برای مثال، هنگام سازماندهی طرح‌های محاسباتی موازی متمرکز مؤثر است.

رایگان(مش) - سیستمی که در آن یک نمودار اتصال خطی یک مش مستطیل شکل (به نام دو یا سه بعدی) ایجاد می کند. چنین توپولوژی را می توان به راحتی پیاده سازی کرد و علاوه بر این، می تواند به طور موثر در اجرای موازی الگوریتم های عددی غنی استفاده شود (به عنوان مثال، هنگام اجرای روش هایی برای تجزیه و تحلیل مدل های ریاضی که توسط پرستاران دیفرانسیل مسافران خصوصی توصیف می شوند).

هایپر مکعب(hypercube) - این توپولوژی نسل بعدی ساختار شبکه را نشان می دهد، زیرا تنها دو پردازنده از اندازه پوسته مش وجود دارد. این گزینه برای سازماندهی انتقال در عمل دارای دامنه گسترده ای است و با مجموعه ای از علائم قابل توجه زیر مشخص می شود:

الف) دو پردازنده متصل هستند، زیرا اعداد دوتایی اعداد آنها نمایش داده می شود

تنها یک موقعیت در معرض تغییر است.

ب) یک ابرمکعب N بعدی را می توان به دو ابرمکعب (N-1) بعدی (هر N تقسیم بندی مختلف ممکن) تقسیم کرد.

ج) کوتاه ترین مسیر بین هر دو پردازنده برابر است که به تعدادی از مقادیر بیتی می رسد که در اعداد پردازنده متفاوت هستند (این مقدار بر اساس واحد Hamming است).

زیرا اگر پردازنده بتواند فقط در یک عملیات دریافت و ارسال داده شرکت کند، به موازات آن عملیات ارتباطی می تواند انجام شود که در آن جفت های متقابل پردازنده ها با یکدیگر تعامل ندارند.

راه های مختلفی برای اجرای محاسبات موازی پیدا کنید. به عنوان مثال، یک فرآیند محاسباتی را می توان در فرآیند سیستم عامل پیاده سازی کرد، یا فرآیندهای محاسباتی می توانند مجموعه ای از رشته هایی باشند که در وسط یک فرآیند سیستم عامل اجرا می شوند. برنامه های موازی می توانند به صورت فیزیکی یا به صورت متوالی بر روی یک پردازنده واحد اجرا شوند - به طور متناوب در چرخه های فرآیند محاسباتی پوست اجرا شوند، یا به طور موازی - با مشاهده فرآیند محاسبات پوستی یک یا چند پردازنده (که شناخته شده است هر دو بخش به یک شبکه کامپیوتری واگذار می شوند).

چالش اصلی در طراحی برنامه‌های موازی، اطمینان از توالی صحیح تعامل بین فرآیندهای محاسباتی مختلف و هماهنگ کردن منابع مشترک بین فرآیندها است.

روش های همگام سازی ارتباطات موازی

در برخی از سیستم های موازی، انتقال برنامه ریزی شده داده ها بین اجزا توسط برنامه نویس کنترل می شود (به عنوان مثال، در پشت مکانیزم گرمایش اضافی)، در حالی که در برخی دیگر لازم است به صراحت نشان داده شود. تعاملات صریح را می توان به دو نوع تقسیم کرد:

سیستم‌های موازی مبتنی بر تبادل اطلاعات اغلب ساده‌تر برای درک هستند، اما سیستم‌هایی با حافظه مشترک هستند و بنابراین به عنوان یک روش کامل‌تر برای برنامه‌نویسی موازی دیده می‌شوند. مجموعه‌ای از نظریه‌های ریاضی برای توسعه و تحلیل سیستم‌های ارتباطی، از جمله مدل بازیگر و انواع مختلف فرآیندهای محاسباتی وجود دارد. تبادل ارتباطی را می توان به طور موثر بر روی چند پردازنده های متقارن با یا بدون حافظه منسجم که مشترک است پیاده سازی کرد.

موازی سازی با حافظه و انتقال توزیع شده اطلاعاتی را در مورد ویژگی های مختلف بهره وری فراهم می کند. در نظر بگیرید (یا دوباره نه)، هزینه اضافی هدر دادن حافظه در فرآیند و یک ساعت برای مخلوط کردن مجدد کار برای سیستم ها با انتقال اطلاعات زیر، انتقال خود اطلاعات بیشتر سربار است، پایین رویه ها. ارزش‌های مهم اغلب توسط مقامات دیگر تحت الشعاع قرار می‌گیرند، زیرا بهره‌وری کاهش می‌یابد.

بدیهی است که با چنین سیستمی می توان از روش انتقال اطلاعات نیز استفاده کرد تا فرآیندی جداگانه بر روی پردازشگر پوست گره پوست آغاز شود. این سری به اندازه تعداد پردازشگرها در تمام گره ها تعداد پردازش ها (و رشته ها) دارد. این روش ساده‌تر است (برنامه‌های موازی فقط به تعداد بیشتری فرآیند نیاز دارند)، اما همچنین مؤثرتر است؛ قطعاتی از پردازنده‌های همان گره یکی را با پیام یکسان مبادله می‌کنند، هیچ تفاوتی در نتیجه آنها وجود ندارد.

موارد معمولی که امکان محاسبات موازی را فراهم می کند

  • نقشه - اعمال یک تابع و یکسان بر روی یک عنصر پوست به آرایه ای از داده های ورودی، با مقدار برابر آرایه از نتایج محاسبه
  • کاهش - یکی از عملکردهای مشابه برای افزودن داده های ورودی به سهم عنصر پوست در یک مقدار کیسه فرعی

ابزارهای نرم افزاری موازی سازی

  • OpenMP استانداردی برای رابط افزودنی برای سیستم های موازی با حافظه خارجی است.
  • POSIX Threads استانداردی برای پیاده سازی رشته های ویکی است.
  • Windows API – طیف وسیعی از برنامه های رشته ای برای C++.
  • PVM (ماشین مجازی موازی) به شما امکان می دهد مجموعه ای متنوع (یا به هم پیوسته) از رایانه ها را با یک منبع محاسباتی جداگانه ترکیب کنید.
  • MPI (Message Passing Interface) استانداردی برای سیستم های انتقال ارتباط بین فرآیندهای موازی است.

بخش همچنین

نظر خود را در مورد مقاله ” محاسبات موازی ” بنویسید

ادبیات

  • فرهنگ لغت سایبرنتیک / ویرایش شده توسط آکادمیک V. S. Mikhalevich. - دوم – کیف: دفتر تحریریه اصلی دایره المعارف رادیان اوکراین به نام M. P. Bazhan، 1989. – 751 p. - (C48). - 50000 واحد - شابک 5-88500-008-5.
  • . – IBM RedBook, 1999. – 238 p.(انگلیسی)
  • خیابان Vojvodin، Vojvodin Vl. هنرمحاسبات موازی – سن پترزبورگ: BHV-Petersburg, 2002. – 608 p. - شابک 5-94157-160-7.
  • اولنف N. N.. – M.: Computer Center RAS, 2005. – 80 p. - شابک 5201098320 .

یادداشت

پوسیلانیا

  • (انگلیسی)
  • (انگلیسی)

درسی که محاسبات موازی را مشخص می کند

روحیه ارتش یک افزایش دهنده برای توده است که باعث افزایش قدرت می شود. اهمیت روح جهان، کثرت نامرئی آن، گنجینه علم است.
این کار تنها در صورتی امکان پذیر است که از جایگزین کردن کافی معنای تمام X ناشناخته آن دسته از اذهانی که قدرت برای آنها متجلی است، دست برداریم، مانند: دستور فرمانده، ارتش و غیره، آنها را به معنای مضاعف در نظر بگیریم. و برای همگان درستکاری شناخته شده و ناشناخته هستی تا کم و بیش مبارزه کنی و خود را در معرض ناامنی قرار دهی. بنابراین، تنها با واقعیات تاریخی بیان شده است، سطح اهمیت ظاهری این مجهول را می توان در اهمیت خود ناشناخته ردیابی کرد.
ده نفر، گردان و لشکر، با پانزده نفر، گردان و لشکر جنگیدند، بر پانزده نفر غلبه کردند، سپس کشتند و بدون زیاده روی به کمال بردند و خود بسیار خرج کردند. خوب، یک طرف چهارصد نفر بودند، یک طرف دیگر پانزده نفر. اوز که به پانزده رسیدند و اوز 4a:=15u. اوزه، w: g/==15:4. رقابت معنای مجهول را نمی دهد، اما رابطه ای بین دو مجهول نمی دهد. و از جمع بندی چنین مقایسه ای از واحدهای تاریخی (نبردها، لشکرکشی ها، دوره های جنگ) یک سری اعداد مجرم و ممکن است ناقض قوانین باشند.
قاعده زیرکانه در مورد نیاز به عمل دسته جمعی هنگام حمله و جدا شدن در هنگام نزدیک شدن، همیشه تنها این حقیقت را تأیید می کند که قدرت روح در روح فرد نهفته است. برای هدایت مردم به هسته اصلی، نظم و انضباط بیشتری لازم است، تا جایی که به دست توده ها برسد، نه برای مبارزه با مهاجمان. با این حال، این قاعده که در آن روحیه نظامی از بین می رود، کاملاً نادرست است و به ویژه با تعریف عمل در جایی که اوج و فرود شدید روحیه نظامی - در همه جنگ های مردمی - وجود دارد، مخالف است.
فرانسوی‌ها که در سال 1812 وارد ارتش شدند، می‌خواستند و باید از نزدیک از خود محافظت می‌کردند، پشت تاکتیک‌ها، به میان جمعیت فشار بیاورند، به‌طوری که روحیه ارتش چنان فرو رفته بود که فقط تعداد زیادی توده به یکباره جریان داشت. با این حال، روس ها ترجیح می دهند پشت تاکتیک ها به طور دسته جمعی حمله کنند، اما در واقع جزئیات بیشتری خواهند داشت، زیرا روحیه آنقدر بالاست که در خارج از افراد بدون دستور فرانسوی ها خواهند بود و برای این کار نیازی به اجاق گاز پریموس ندارند. خود را در معرض ناامنی قرار دهند.

به اصطلاح جنگ پارتیزانی با ورود دشمن به اسمولنسک آغاز شد.
اولین جنگ پارتیزانی رسماً توسط صفوف ما پذیرفته شد و هزاران نفر در ارتش دشمن - غارتگران، جویندگان - به گردن قزاق ها افتادند و مردانی که این مردم را ناآگاهانه کتک زدند، همانطور که سگ ها ناآگاهانه می کشند، یک سگ دیوانه است. دنیس داویدوف، در حواس روسی خود، اولین کسی بود که اهمیت آن گرز وحشتناک را درک کرد، که بدون تغذیه قواعد عرفان نظامی، فرانسوی ها را ویران کرد، و افتخار اولین پادشاه برای مشروعیت بخشیدن به پذیرش اوست. جنگ.
در 24 سپتامبر، اولین حمله پارتیزانی داویدوف آغاز شد و پس از آن، سایرین شروع به تأسیس کردند. با فروپاشی کمپین، تعداد این آزار و اذیت افزایش یافت.
پارتیزان ها ارتش بزرگ را تکه تکه کردند. آنها برگهای در حال سقوط را که به طور طبیعی از درخت پژمرده - ارتش فرانسه می افتاد، برداشتند و گاهی درخت را تکان دادند. حتی زمانی که فرانسوی ها به اسمولنسک فرار کردند، صدها نفر از آنها در مهمانی هایی با اندازه ها و ویژگی های مختلف حضور داشتند. احزاب بودند که تمام تجهیزات ارتش را با پیاده نظام، توپخانه، مقر، با منافع زندگی به دست گرفتند. فقط قزاق ها و سواره نظام بودند. دوستان، گردهمایی ها، دهقانان و زمین دارانی بودند که هیچکس آنها را نمی شناخت. یک نفر رئیس حزب بود که یک ماه صد نفر را اسیر کرد. واسیلینا بزرگ آنجا بود که صدها فرانسوی را کشت.
باقیمانده سال شاهد وقوع جنگ پارتیزانی بود. آن دوره اول این جنگ، که طی آن پارتیزان ها، که از خودستایی خود شگفت زده شده بودند، می ترسیدند توسط فرانسوی های ترسیده گرفتار شوند و، حل نشدن و شاید از اسب های خود نپرند، به جنگل ها می بالیدند، تعقیب و گریز هویلینی را بررسی می کردند - قبلاً گذشت. حالا که جنگ تمام شده بود، برای همه روشن شد که با فرانسوی ها چه کاری می توان کرد و چه کاری را نمی توان کرد. اکنون فقط سران قلم ها و همچنین مقر فرماندهی، قوانین را بسیار فراتر از فرانسوی ها رعایت می کردند و حتی غیرممکن تر به آنها احترام می گذاشتند. هم پارتیزان ها که از مدت ها قبل حق خود را آغاز کرده بودند و فرانسوی ها را از نزدیک زیر نظر داشتند، به توانایی های کسانی که رهبران قلم های بزرگ جرأت فکر کردن به آنها را نداشتند، احترام گذاشتند. قزاق ها و مردانی که با فرانسوی ها مداخله می کردند، معتقد بودند که اکنون همه چیز ممکن است.
22 سال پیش دنیسوف که یکی از پارتیزان ها بود، در بحبوحه شیوع تعصبات پارتیزانی با حزب خود بود. صبح با مهمانی خودم در حرکت بودم. تمام روز در میان جنگل‌هایی که در مجاورت جاده بزرگ بودند، به دنبال حمل‌ونقل بزرگ فرانسوی‌ها از سواره نظام و نیروهای روسی، که از ارتش‌های دیگر و در زیر پوشش قوی تقویت شده بودند، زیرا ظاهراً جاسوس‌ها و نیروهای کامل بودند که مستقیماً به اسمولنسک رفتند. این حمل و نقل نه تنها برای دنیسوف و دولوخوف (همچنین یک پارتیزان با یک حزب کوچک) که نزدیک دنیسوف قدم می زدند، بلکه برای سران قلم ها و ستادهای بزرگ شناخته شده بود: همه در مورد این حمل و نقل می دانستند و همانطور که دنیسوف گفت، آنها را تیز کردند. دندان روی آن دو نفر از این رؤسای بزرگ مرجانی - یکی لهستانی و دیگری آلمانی - فوراً درخواستی برای دنیسوف فرستادند که به سراغ قلم او بیاید تا به حمل و نقل حمله کند.
دنیسوف پس از خواندن این مقالات و نامه نگاری به آلمانی ها گفت: "نه، خدایا، من یک مو دارم." این خوشحالی را به خود داد، زیرا قبلاً تحت فرماندهی یک ژنرال قطبی قرار گرفته بود و به ژنرال قطبی نامه نوشت و به او اطلاع داد که قبلاً تحت فرماندهی یک آلمانی قرار گرفته است.
پس از تنظیم این دستور، دنیسوف تصمیم گرفت، بدون اطلاع مافوق خود، حمله کند و حمل و نقل را با نیروهای کوچک خود همراه با دولوخوف انجام دهد. حمل و نقل 22 از روستای مایکولینوگو به روستای شمشوه. از سمت چپ جاده از میکولینو به شمشوو جنگل های بزرگی وجود داشت، در بعضی جاها به خود جاده نزدیک می شدند، در بعضی جاها یک مایل یا بیشتر از جاده دور می شدند. تمام روز در میان این جنگل‌ها، اکنون در وسط آنها مدفون شده‌اند، اکنون در تقاطع نگاه می‌کنند، با مهمانی دنیسوف رانندگی می‌کنند و احترام فرانسوی‌هایی را که در حال فروپاشی بودند، رها نمی‌کنند. از صبح، نه چندان دور از میکولینا، آنجا، جایی که جنگل نزدیک جاده بود، قزاق های حزب دنیسوف دو واگن فرانسوی را که در یک بچه پارک شده بودند، با زین های سواره نظام دفن کردند و آنها را به جنگل بردند. از آن ساعت تا غروب مهمانی بدون حمله به دنبال ارتش فرانسه رفت. لازم بود، بدون اینکه از دست آنها عصبانی باشم، با آرامش به سمت شمشف برویم و سپس با ملاقات با دولوخوف، که عصر روز بعد قبل از پختن غذا در جنگل (نزدیک نقطه شمشف) می رسید، سوتانکا را از هر دو طرف بچرخانیم. با وارونه و کتک خورده و همه را یکباره بگیر.
پشت سر، دو مایلی از Mikulino، آنجا، جایی که جنگل به خود جاده نزدیک شد، شش قزاق اسیر شدند، که مسئول بودند بلافاصله اطلاع دهند که مستعمرات جدید فرانسه ظاهر می شوند.
پیش از شمشوا، خود دولوخوف جاده را دنبال کرد تا بداند در کدام نقطه دیگر نیروهای فرانسوی حضور دارند. در حین حمل و نقل، 1500 نفر منتقل شدند. دنیسوف ممکن است دو نفر باشد، دولوخوف صد مرد خواهد بود. افسوس که برتری اعداد دنیسوف را آزار نداد. فقط چیزهایی هست که اشراف من هنوز باید بدانند، اینها کسانی هستند که خودشان در این دنیا بودند. و برای این منظور، دنیسوف نیاز به گرفتن مووی (یعنی مردم از مستعمره دشمن) داشت. حمله درجه‌ای به خشمگین‌ها در سمت راست با چنان شتابی پیش رفت که فرانسوی‌ها که همراه واگن‌ها بودند، همه آنها را کشتند و تنها پسر طبل‌زن را زنده به گور کردند که بازنشسته بود و نمی‌توانست در مورد کسانی که در ستون بودند چیز مثبتی بگوید. من.
دفعه بعد دنیسوف مراقب بود که حمله نکند تا کل ستون مزاحم نشود، و به همین دلیل تعداد زیادی از افراد حزب خود، تیخون شچرباتی را به شمشوو فرستاد تا در صورت امکان یکی از چندین فرانسوی را بخواهند. محله های پیشرفته وجود دارد.

ارسال پول خود به ربات به پایگاه آسان است. فرم زیر را Vikorist کنید

دانشجویان، دانشجویان فوق لیسانس، جوانانی که در شغل جدید خود دارای دانش قوی هستند، از شما سپاسگزارتر خواهند بود.

نوشته شده در http://www.allbest.ru/

نوشته شده در http://www.allbest.ru/

  • وارد
  • 1. مرتبط بودن موضوعات
  • 2. افزایش تعداد هسته ها
  • 3. فناوری NVIDIA CUDA
  • 4. تفاوت بین CPU و GPU
  • ویسنووک
  • وارد
  • Rozparaleluvannya محاسبه می شود - از تقسیم وظایف بزرگ تا کارهای بزرگتر که می توان یک شبه نتیجه گرفت. فراخوان برای محاسبات موازی فعالیت های هماهنگی مورد نیاز. محاسبات موازی به اشکال مختلف (از جمله دستورالعمل ها، نبردها، داده ها، دستورات) انجام می شود. محاسبات موازی مدت‌هاست که رکود خود را به ویژه در محاسبات بسیار پربازده می‌دانند. اما وضعیت یک ساعت بعد تغییر کرد. پس از ظهور، چنین محاسباتی از طریق محدودیت های فیزیکی افزایش فرکانس ساعت پردازنده رخ می دهد. محاسبات موازی به یک ایده غالب در معماری کامپیوتر تبدیل شده است. اشکال در حال ظهور پردازنده های چند هسته ای وجود دارد.
  • توسعه سیستم های محاسباتی موازی به دلیل توسعه مستقیم استراتژیک در صنعت کامپیوتر است. ایده اصلی ترکیب قابلیت‌های ماشین‌های کد سرعت بر اساس منطق ترتیبی و همچنین قابلیت مشاهده کار بود که در آن در دسترس بودن فناوری محاسبات هنوز کافی است. قبل از تعیین این دسته، می توانید مدل سازی فرآیندهای پویا را اضافه کنید.
  • ظهور پردازنده‌هایی با هسته‌های متعدد، توسعه سیستم‌های ابر محاسباتی مؤثر را تحریک کرده است، که می‌توانند شاخص‌های بهره‌وری/عملکرد بیشتر، قابل مقایسه با سیستم‌های مبتنی بر super EOM را داشته باشند. انتخاب پردازنده‌های چند هسته‌ای، بسته به گزینه‌های پیکربندی، قدرت زیادی را فراهم می‌کند و اجازه می‌دهد تا قدرت را در سیستم‌های محاسباتی - از رایانه‌های شخصی، سرورها، ایستگاه‌های کاری و در نهایت سیستم‌های خوشه‌ای، مقیاس‌بندی کنیم.
  • 1. مرتبط بودن موضوعات
  • اخیراً تعداد زیادی از سیستم‌های محاسباتی موازی خوشه‌ای ارزان ظاهر شده‌اند که منجر به توسعه سریع فناوری‌های محاسباتی موازی از جمله سیستم‌های محاسباتی بسیار پربازده شده است. اکثر تولید کنندگان ریزپردازنده بزرگ شروع به تغییر معماری های هسته غنی کردند که باعث تغییر وضعیت در زمینه فناوری های محاسباتی موازی شد. تغییر پایه سخت افزاری باعث تغییر در فرآیندهای الگوریتم های موازی می شود. برای پیاده سازی نیازهای محاسباتی در معماری های چند هسته ای، الگوریتم های موازی جدید برای ترکیب فناوری های جدید مورد نیاز است. کارایی منابع محاسباتی زیربنایی در زمینه برنامه های موازی و کتابخانه های تخصصی مبتنی بر معماری های هسته غنی.
  • استفاده از فناوری بسیار مولد در مدل‌سازی فرآیندهای فنی، اقتصادی و سایر فرآیندهای واقعی که توسط سیستم‌هایی با سطوح افراطی افراطی با ابعاد بزرگ، اثبات شده و ضروری توصیف می‌شوند. موازی سازی را می توان در ساختارهای چند پردازنده ای و موازی به عنوان روشی موثر برای افزایش بهره وری محاسبه کرد. همچنین، رکود سیستم های محاسباتی موازی به طور مستقیم به توسعه فناوری محاسبات کمک خواهد کرد.

2. افزایش تعداد هسته ها

اولین پردازنده برای تولید انبوه، POWER4 با دو هسته PowerPC روی یک تراشه بود. در سال 2001 توسط IBM منتشر شد.

توسعه دهندگان پردازنده های Intel، AMD، IBM، ARM افزایش تعداد هسته ها را به عنوان یکی از اولویت های افزایش بهره وری تشخیص داده اند.

در سال 2011، این شرکت پردازنده های 8 هسته ای را برای رایانه های شخصی خانگی و پردازنده های 16 هسته ای را برای سیستم های سرور منتشر کرد.

Є توسعه پردازنده هایی با تعداد هسته های زیادی (بیش از 20)، که در دستگاه های خاص راکد بودند.

قبلاً از پردازنده های 2 هسته ای استفاده می شد، به عنوان مثال، IBM PowerPC-970MP (G5H). با این حال، چنین پردازنده هایی در تعداد زیادی از بخش های تخصصی نصب شدند.

در آوریل 2005، AMD یک پردازنده Opteron دو هسته ای را معرفی کرد. معماری AMD64 برای برنامه های کاربردی سرور. در آغاز سال 2005، اینتل پردازنده Pentium D. معماری x86-64 را معرفی کرد. تبدیل شدن به اولین پردازنده 2 هسته ای برای رایانه های شخصی خانگی.

در ابتدای سال 2010، AMD پردازنده های سرور سریال 12 هسته ای Opteron 6100 (معماری x86/x86-64) را معرفی کرد.

در ابتدای سال 2011، AMD پردازنده های سرور سریال 16 هسته ای Opteron 6200 را معرفی کرد. پردازنده Interlagos در یک بسته شامل دو تراشه 8 هسته ای (4 ماژول) است و با پلت فرم 0 سری Opteron 610 AMD (سوکت G34) ترکیب شده است. .

3. فناوری NVIDIA CUDA

تعداد زیادی از محاسبات موازی با بازی های بی اهمیت همراه است. محاسبات برداری موازی در دستگاه‌های جهانی با پردازنده‌های هسته‌ای غنی در گرافیک سه بعدی استفاده می‌شود و به حداکثر بهره‌وری دست می‌یابد. پردازنده های جهانی نمی توانند این کار را انجام دهند. حداکثر سیالیت تنها در انتهای پایین ترازوی به دلیل عرضه محدود به دست می آید. با این حال، چنین دستگاه هایی به طور گسترده ای در حوزه ها راکد هستند، اما در ابتدا به رسمیت شناخته نشدند. به عنوان مثال، پردازنده Cell که توسط اتحاد سونی-توشیبا-IBM در کنسول بازی سونی پلی استیشن 3 توسعه یافته است و کارت های ویدیویی فعلی NVIDIA و AMD.

به طور سرنوشت‌سازتر، فناوری‌های غیر گرافیکی با اهمیت جهانی GPGPU برای پردازنده‌های ویدیوی سه بعدی شروع به ظهور کردند. ویدیوهای امروزی حاوی صدها بلوک ریاضی و ریاضی است که می‌تواند به سرعت بخشیدن به عدم وجود اضافات محاسباتی فشرده کمک کند. آخرین نسل از پردازنده‌های گرافیکی دارای معماری‌های متفاوتی هستند که معماری‌های سخت‌افزاری و نرم‌افزاری و زبان‌های سطح بالا را با هم ترکیب می‌کنند تا به آن‌ها اجازه می‌دهد تا با غنای خود کار کنند.

ظهور برنامه‌های سایه‌زن انعطاف‌پذیر و انعطاف‌پذیر شروع شده است تا توسعه‌دهندگان را برای ایجاد GPGPU که برای تبدیل ویدیوهای روزانه استفاده می‌شوند، آسان‌تر کند. خرده فروشان می خواستند از GPU نه تنها برای توسعه تصاویر در بازی و برنامه های سه بعدی، بلکه برای استفاده از آنها در سایر زمینه های محاسبات موازی نیز استفاده کنند. برای این منظور از API کتابخانه های گرافیکی OpenGL و Direct3D استفاده شد. این داده های ویدئویی به صورت تکسچر منتقل می شد و برنامه های مختلف به صورت سایه زن قرار می گرفتند. عیب اصلی این روش پیچیدگی برنامه نویسی، تبادل اطلاعات کم بین GPU و CPU و سایر ارتباطات است.

پردازنده های ویدئویی سیمی NVIDIA و AMD پلتفرم هایی را برای محاسبات موازی ارائه کردند - البته CUDA و CTM. کارت‌های ویدئویی اکنون دارای پشتیبانی سخت‌افزاری برای دسترسی مستقیم به منابع محاسباتی هستند. CUDA توسعه برنامه نویسی زبان CTM است. CTM بیشتر شبیه ماشین مجازی است، زیرا فقط کد اسمبلی را کامپایل می کند. هر دو پلتفرم جدیدترین نسخه‌های GPGPU را که بر اساس خط لوله گرافیکی سنتی و کتابخانه‌های گرافیکی Direct3D و Open GL هستند، استفاده کرده‌اند.

OpenGL قابل حمل تر و همچنین جهانی به دلیل باز بودن آن به کد است. Ale اجازه نمی دهد ویکورها از همان کد روی تراشه های رایانه های مختلف سوء استفاده کنند. چنین روش هایی دارای کاستی های زیادی هستند، بوی بد آن قوی نیست و کمی چسبنده هستند. و همچنین آنها به شما اجازه نمی دهند که قابلیت های خاص کارت های ویدیویی خاص، به عنوان مثال، حافظه سوئدی را مشاهده کنید.

این همان کاری است که NVIDIA می‌خواست انجام دهد: انتشار پلتفرم CUDA - برنامه‌ای شبیه به C مجهز به کامپایلر خود و همچنین مجموعه‌ای از کتابخانه‌ها برای محاسبات روی GPU. نوشتن کد خوب برای کارت‌های ویدیویی دیگر فقط یک کار طاقت فرسا نیست، بلکه CUDA به شما کنترل بیشتری روی سخت‌افزار کارت ویدیو می‌دهد. CUDA با کارت‌های ویدیویی سری 8 ظاهر شد. CUDA نسخه 2.0 معرفی شد که از پیشرفت‌ها با افزایش دقت در سیستم‌عامل‌های 32 و 64 بیتی Windows، Linux، MacOS X پشتیبانی می‌کند.

4. تفاوت بین CPU و GPU

افزایش فرکانس ساعت به دلیل مصرف بالای انرژی به پایان رسید. افزایش بهره وری با افزایش تعداد هسته ها در هر تراشه حاصل می شود. در حال حاضر پردازنده هایی با حداکثر هشت هسته و حداکثر 16 رشته برای رایانه های خانگی به فروش می رسد.در این گونه پردازنده ها هسته پوسته به سختی کار می کند.

قابلیت‌های برداری ویژه (دستورالعمل‌های SSE) برای بردارهای 4 جزیی (مقطع شناور تک دقیق) و بردارهای 2 جزیی (با دقت بالا) در پردازنده‌های جهانی با معرفی افزونه‌های با دقت بالا با گرافیک چه کار کنیم، ظاهر شده‌اند. بنابراین، استفاده از یک GPU سودمند است، زیرا بوی تعفن از همان ابتدا در زیر چنین انتقامی زندانی است.

در تراشه های NVIDIA، بلوک اصلی یک چند پردازنده با 8-10 هسته و نزدیک به صدها ALU با هزاران رجیستر و مقدار زیادی حافظه است. کارت گرافیک دارای حافظه جهانی با دسترسی از همه چند پردازنده ها، حافظه محلی برای هر چند پردازنده و همچنین حافظه ثابت است.

هسته‌های GPU دارای هسته‌های SIMD (جریان فرمان یکسان، جریان داده یکسان) هستند. این کرنل ها با دستورالعمل های یکسانی در یک زمان کامپایل می شوند. این سبک برنامه نویسی الگوریتم های گرافیکی است. این خاص است، اما به شما امکان می دهد تعداد بلوک های محاسباتی را در سادگی آن افزایش دهید.

تفاوت های اصلی بین معماری ها (GPU و CPU): هسته های CPU یک رشته از دستورالعمل های بعدی را با حداکثر بهره وری تولید می کنند، GPU تعداد زیادی رشته از دستورالعمل ها را تولید می کند که به صورت موازی اجرا می شوند. هدف پردازنده های جهانی دستیابی به بهره وری بالا از یک رشته از دستورات است که اعداد را با و بدون ممیز شناور پردازش می کند. دسترسی به حافظه محدود است.

خط مشی فروشنده CPU: دستیابی به تعداد بیشتری دستورالعمل به موازات، افزایش بهره وری. بنابراین با شروع از پردازنده های پنتیوم اینتل، فناوری ویسکوزیته فوق اسکالر به معنای 2 دستورالعمل در هر سیکل ساعت معرفی شد و پردازنده پنتیوم پرو از دستورالعمل های تک به تک استفاده می کند.

با تراشه های ویدئویی، کار ساده تر و موازی تر با مغز است. تراشه گروهی از چند ضلعی ها، تمام عملیات های لازم را می پذیرد و پیکسل ها را نمایش می دهد. پردازش چند ضلعی ها و پیکسل ها یکسان نیست. به همین دلیل است که پردازنده های زیادی در GPU وجود دارد. همچنین، پردازنده‌های گرافیکی امروزی بیش از یک دستورالعمل در هر سیکل ساعت صادر می‌کنند.

تطبیق پذیری متفاوت CPU و GPU: اصل دسترسی به حافظه GPU دارای ویسکوزیته و انتقال است، زیرا اگر بافت ها وارداتی بودند، پس از حدود یک ساعت یک دسته بافت جدید می رسد. بنابراین، سازماندهی حافظه در کارت گرافیک و پردازنده مرکزی متفاوت است. و کارت گرافیک به حافظه کش زیادی نیاز ندارد، اما برای بافت ها تنها حدود 128-256 کیلوبایت مورد نیاز است.

کار با حافظه نیز متفاوت است. CPU ممکن است دارای کنترلرهای حافظه داخلی باشد، در حالی که GPU می تواند آنها را یک به یک تا 8 کانال 64 بیتی اختصاص دهد. علاوه بر این، حتی حافظه سوئدی راکد می شود و بنابراین پهنای باند حافظه بیشتر می شود، که یک امتیاز مثبت برای پیشرفت های موازی است که با جریان های داده بزرگ کار می کنند.

CPU دارای تعداد زیادی ترانزیستور است که برای بافرهای فرمان، انتقال سخت افزار و مقدار زیادی حافظه کش استفاده می شود. همه این بلوک ها برای سرعت بخشیدن به جریان های دستوری متعدد ضروری هستند. در یک GPU، ترانزیستورها به آرایه ای از بلوک های حافظه، حافظه با حجم کم تقسیم شده، بلوک هایی که از رشته ها پشتیبانی می کنند و کنترل کننده های حافظه می روند. همه چیز توسط جریان رودخانه های اطراف تسریع می شود، اما به آن اجازه می دهد یک شبه با سرعت زیادی جریان یابد.

کشووانیا حافظه پنهان CPU vikoryst تاخیر در دسترسی به حافظه را تغییر می دهد که منجر به افزایش بهره وری می شود. GPU از یک کش ویکوریستیک برای افزایش توان داده استفاده می کند. CPU هزینه های دسترسی به حافظه را برای ذخیره سازی کش بزرگ و انتقال کد کاهش می دهد. این قطعات سخت افزاری تراشه های بزرگی هستند و همچنین حاوی انرژی زیادی هستند. GPU از مشکل مسدود کردن دسترسی به حافظه به روش دیگری رنج می برد: اجرای هزاران رشته به طور همزمان. اگر یک رشته داده ها را بررسی کند، رشته دیگر بدون بررسی یا مسدود کردن، محاسبه را به پایان می رساند.

با کمک زاگالو می توانید یک خلاصه توهین آمیز ایجاد کنید: فیلم ها برای محاسبات موازی با تعداد زیادی داده و تعداد زیادی عملیات حسابی استفاده می شوند.

5. اول از همه، رکود روزراهونک در رفع سریع گرافیکی

تاریخچه رکود تراشه ها برای پیشرفت های ریاضی از مدت ها پیش آغاز شد. اولین آزمایش‌ها اولیه بودند و از توابع Z-buffering و rasterization استفاده می‌کردند. با ظاهر شدن سایه بان ها، عجله شروع شد. در سال 2003 SIGGRAPH بخش جدیدی را برای محاسبات و پردازش GPGPU اضافه کرده است.

BrookGPU. کامپایلر ویدیویی برای برنامه نویسی بروک. Є جریان. راه حل های ویژه ای برای محاسبه روی GPU وجود دارد. خرده فروشان از API استفاده می کنند: Direct3D و OpenGL. این به طور قابل توجهی رکود GPU را محدود کرد، زیرا سایه بان ها و بافت ها در گرافیک سه بعدی گیر کرده بودند و مهندسان برنامه نویسی موازی نیازی به دانستن چیزی نداشتند. Strum vikorist بدبو جریان و هسته. بروک توانست در محل خود کمی کمک کند. گسترش زبان C به برنامه نویسان اجازه می دهد تا از API بی اهمیت استفاده کنند و از پردازنده ویدئویی به عنوان یک پردازنده موازی استفاده کنند. کامپایلر کد را کامپایل می کند و آن را به کتابخانه های DirectX، OpenGL یا x86 پیوند می دهد.

6. مناطق رکود گسترش موازی در بست های گرافیکی

اجازه دهید میانگین ارقام افزایش بهره وری را که توسط جانشینان ما از جهان برداشته شده است محاسبه کنیم. هنگام تغییر به یک GPU، افزایش بهره وری به طور متوسط ​​5-30 برابر است و در برخی از برنامه ها می تواند تا 100 برابر (بسته به کد، که برای توسعه با استفاده از SEE قابل اجرا نیست) برسد.

محور را به سرعت اعمال کنید:

· میکروسکوپ فلورسنت - 12 بار.

· دینامیک مولکولی - در 8-16 مورد.

· الکترواستاتیک (مستقیم و غنی به کولن نسبت داده می شود) - برای 40-120 بار و 7 بار.

پردازنده گرافیکی اصلی

ویسنووک

چکیده محاسبات موازی را در پردازنده‌های چند هسته‌ای و فناوری‌های CUDA و CTM مورد بررسی قرار داد. تفاوت‌های بین CPU و GPU مورد بررسی قرار گرفت، مانند دشواری‌های ایستایی کارت‌های ویدئویی در محاسبات موازی بدون فناوری CUDA و زمینه‌های ایستایی مورد بررسی قرار گرفت.

این چکیده به اجرای محاسبات موازی در پردازنده های مرکزی با یک هسته ویدئویی یکپارچه می پردازد. اینها پردازنده های سری A AMD (AMD A10، AMD A8، AMD A6، AMD A4) و پردازنده های سری i3/i5/i7 اینتل با هسته ویدئویی HD Graphics یکپارچه هستند.

فهرست ویکی‌نویس‌ها

1. وب سایت ixbt.com, vlasnik Byrds Research and Publishing, Ltd

2. وب سایت wikipedia.org، vlasnik به بنیاد ویکی مدیا

3. وب سایت nvidia.ru، شرکت Vlasnik NVIDIA

ارسال شده در Allbest.ru

...

اسناد مشابه

    روش دسته ای روش اصلی انجام عملیات ارتباطی، جایگزینی و مزایای آن است. ارزیابی پیچیدگی یک عملیات انتقال بین دو گره خوشه. مراحل توسعه الگوریتم های موازی (توسعه الگوریتم های موازی).

    ارائه، اضافه شده در 02/10/2014

    آشنایی با تاریخچه توسعه مجتمع های پردازنده غنی و محاسبات موازی. رایانه های شخصی سیستم های تک پردازنده ای توسعه یافته بر روی پلت فرم اینتل یا AMD هستند که تحت تعدادی از سیستم عامل ها اجرا می شوند.

    ارائه، اضافه شده 2016/02/22

    طبقه بندی سیستم های محاسباتی موازی مفاهیم اساسی اجزای کامپیوترهای موازی و اجزای آنها هستند. ویژگی های طبقه بندی هندر، هاکنی، فلین، شور. سیستم هایی با حافظه مجزا و محلی. راه های به خاطر سپردن

    کار دوره، اضافه کردن 07/18/2012

    مبنای ریاضی محاسبات موازی. جعبه ابزار محاسبات موازی قدرت. توسعه پسوندهای موازی در Matlab. برنامه نویسی را برای دستورات موازی اعمال کنید. محاسبه انتگرال آواز. ضرب متوالی و موازی.

    کار دوره، اضافه کردن 12/15/2010

    توسعه مفاهیم و قابلیت های سیستم عامل. سیستم های کامپیوتری موازی و ویژگی های سیستم عامل آنها. سیستم های چند پردازنده ای متقارن و نامتقارن. انواع سرورها در سیستم های کلاینت-سرور. سیستم عامل برای افراد غمگین، حساب کنید. خوشه های سیستم های محاسباتی

    سخنرانی، اضافه شده 01/24/2014

    فناوری برای توسعه برنامه های موازی سیستم های محاسباتی چند پردازنده از حافظه. نحو، معناشناسی و ساختار مدل OpenMP: دستورالعمل ها، رویه ها و تغییرات موازی سازی این عملیات، همگام سازی.

    ارائه، اضافه شده در 02/10/2014

    سیستم های محاسباتی موازی، ویژگی های اساسی و ویژگی های عملکردی آنها، ارزیابی قابلیت ها، ساختار داخلی و اتصالات عناصر، انواع: یک پردازنده غنی. فرم موازی با الگوریتم است و پیاده سازی آن ارائه شده است.

    کنترل ربات، افزودن 06/02/2014

    مزایای سیستم های چند پردازنده ای ایجاد برنامه هایی که کار یک سیستم چند پردازنده ای را از حافظه برای پردازش تعداد متفاوتی از درخواست ها و همچنین تعداد متفاوتی از پردازنده ها پیاده سازی می کند. مدل ها بر روی EOM های برداری و ماتریسی محاسبه می شوند.

    کار دوره، اضافه کردن 06/21/2013

    مدل های انتزاعی و روش های پردازش موازی داده ها، خطاهای محاسباتی مجاز است. مفهوم فرآیند موازی مطابق قانون امدال، همگام سازی و جداسازی گرانول آن است. معماری سیستم های محاسباتی چند پردازنده ای

    کار دیپلم اضافه 09.09.2010

    سیستم‌های محاسباتی تک پردازنده‌ای نمی‌توانند با تصمیم‌گیری‌های وظایف نظامی در زمان واقعی کنار بیایند، بنابراین، سیستم‌های محاسباتی چند پردازنده (MCS) برای افزایش بهره‌وری سیستم‌های محاسباتی نظامی استفاده می‌شوند.