مغالطه: هستههای بیشتر همیشه یعنی کارایی متناسب بیشتر
همانطور که پیشتر در این مجموعه از طریق قانون آمدال ثابت شد، بخشی از یک برنامه که نمیتواند موازی شود، یک سقف سخت روی بهره کارایی قابلدستیابی میگذارد، صرفنظر از اینکه چند هسته اضافه شود. دو برابر کردن تعداد هسته، کارایی واقعی اپلیکیشن را دو برابر نمیکند مگر اینکه بخش قابلموازیسازی بار کاری بسیار بالا باشد و سربار ارتباطی پایین بماند.
مغالطه: یک GPU همیشه برای کار موازی سریعتر از CPU است
همانطور که پیشتر در این مجموعه از طریق مقایسه مدل roofline نشان داده شد، مزیت یک GPU بهشدت به شدت محاسباتی یک بار کاری و تحمل آن برای اجرای lockstep در سراسر گروههای رشته بستگی دارد. بارهای کاریای با divergence شاخهای قابلتوجه، که پیشتر درباره معماری GPU بحث شد، یا شدت محاسباتی پایین که با دسترسی حافظه سلطه یافته، میتوانند روی GPU بدتر از یک پیادهسازی CPU خوببهینهشده عمل کنند.
مغالطه: برنامهنویسی حافظه مشترک در هر مقیاسی ذاتاً سادهتر است
در حالی که حافظه مشترک، که پیشتر در این مجموعه بحث شد، برنامهنویسی را برای تعداد متوسطی هسته ساده میکند، بهطور نامحدود مقیاس نمییابد. فراتر از یک نقطه مشخص، سربار حفظ انسجام کش، که پیشتر در این مجموعه بحث شد، و رقابت حافظه، رویکردهای message-passing، مورد استفاده در کلاسترها و کامپیوترهای در مقیاس انبار که بعداً در این مجموعه بحث شد، را برای مقیاسپذیری مداوم ضروری میکنند.
دام: نادیده گرفتن عدمتعادل بار
حتی وقتی یک بار کاری از نظر تئوری برای موازیسازی مناسب است، توزیع ناهموار کار در سراسر پردازندهها، که پیشتر درباره سنجش بهره کارایی دنیای واقعی بحث شد، یعنی برخی پردازندهها زود تمام میکنند و بیکار میمانند در حالی که دیگران مشغول باقی میمانند، و ظرفیت موازی موجودی که متعادلسازی بار دقیق میتوانست بازیابی کند را هدر میدهد.
دام: دستکمگرفتن سربار ارتباطی
وقتی یک سیستم از یک تراشه واحد به یک کلاستر به یک کامپیوتر در مقیاس انبار مقیاس مییابد، که در سراسر بخشهای بعدی این فصل بحث شد، هزینههای ارتباطی بهطور فزاینده معنادار میشوند. نرمافزاری که بدون در نظر گرفتن تأخیر شبکه و محدودیتهای پهنای باند، که پیشتر درباره شبکهسازی کلاستر بحث شد، طراحی شده، میتواند حتی روی سختافزاری با ظرفیت موازی خام فراوان، نتواند به بهرههای کارایی مورد انتظار دست یابد.
جمعبندی فصل: موازیسازی در هر مقیاس
این فصل موازیسازی را در سراسر طیف عظیمی از مقیاسها دنبال کرد: hardware multithreading که تأخیر را درون یک هسته واحد پنهان میکند، چندپردازندههای حافظه مشترک چندهستهای که از طریق انسجام کش هماهنگ میشوند، GPU هایی که موازیسازی عظیم داده را روی بارهای کاری مستقل اعمال میکنند، و کلاسترها و کامپیوترهای در مقیاس انبار که همین اصول هماهنگی را به کل ساختمانهای ماشینهای متصلشده توسط شبکههای با دقت طراحیشده گسترش میدهند. در هر مقیاسی، همان تنش بنیادین دوباره ظاهر میشود: بهره کارایی بالقوه تقسیم کار باید در برابر هزینه واقعی هماهنگسازی درست آن کار تقسیمشده سنجیده شود.
فکر پایانی: این مجموعه کامل چگونه در کنار هم قرار میگیرد
در سراسر هر مقاله در این مجموعه، یک موضوع فراگیر واحد هر موضوعی را به هم متصل کرده است: سختافزار سرعت و توانایی را نه از طریق یک پیشرفت چشمگیر منفرد، بلکه از طریق ترکیب دقیق بلوکهای سازنده ساده و بهخوبیدرکشده — دستورات، مدارهای محاسباتی، پایپلاینها، کشها، و مکانیزمهای هماهنگی موازی — به دست میآورد، که هرکدام یک مسئله مشخص و بهخوبیتعریفشده را حل میکنند، و همه با هم کار میکنند تا نرمافزار نوشتهشده توسط انسان بتواند بهدرستی و کارآمد روی سیلیکون فیزیکی اجرا شود.