چرا ضرب ماتریس تناسب طبیعی با موازیسازی دارد
ضرب ماتریس شامل محاسبه بسیاری از مجموعهای حاصلضرب مستقل است، جایی که هر عنصر خروجی از یک ردیف از یک ماتریس و یک ستون از ماتریس دیگر محاسبه میشود. از آنجا که این محاسبات فردی به یکدیگر وابسته نیستند، این عملیات کاندیدای ایدهآلی برای نوع موازیسازی سطح دادهای است که پیشتر در این مجموعه بحث شد.
بهکارگیری موازیسازی زیرکلمهای برای ضرب ماتریس
بهجای محاسبه هر ضرب و جمع در یک ماتریس یکییکی، یک پردازنده با استفاده از Subword Parallelism میتواند چند مقدار از یک ردیف و یک ستون را در یک رجیستر پهن واحد بستهبندی کند و چندین عملیات ضرب-و-جمع را بهطور همزمان درون یک دستور انجام دهد.
بهجای:
result += a[0]*b[0]
result += a[1]*b[1]
result += a[2]*b[2]
result += a[3]*b[3]
(4 گام جداگانه ضرب-جمع)
با استفاده از موازیسازی زیرکلمهای:
یک دستور همه 4 جفت را
بهطور همزمان ضرب و جمع میکنداین کار بهطور قابلتوجهی تعداد دستورات مورد نیاز برای محاسبهای که تعداد عظیمی بار در بارهای کاری مانند آموزش شبکه عصبی، شبیهسازیهای فیزیکی، و رندر گرافیک تکرار میشود را کاهش میدهد، و آن را به یکی از کاربردیترین کاربردهای ایدههای پوششدادهشده در سراسر این فصل تبدیل میکند.
مغالطات رایج درباره محاسبات کامپیوتری
چند سوءتفاهم پایدار درباره سختافزار محاسباتی ارزش پرداختن مستقیم دارند.
- فرض اینکه اعداد ممیز شناور میتوانند هر عدد حقیقی را دقیقاً نمایش دهند — همانطور که پیشتر پوشش داده شد، بیشتر مقادیر اعشاری به نزدیکترین تقریب قابلنمایش گرد میشوند.
- فرض اینکه ضرب و تقسیم همیشه همان زمان جمع را میگیرند — در واقعیت، این عملیاتها به گامهای سختافزاری قابلتوجهی بیشتری نیاز دارند، همانطور که پیشتر در این مجموعه شرح داده شد.
- فرض اینکه سرریز در همه موارد بهطور خودکار توسط سختافزار تشخیص داده و گزارش میشود — RISC-V، همانطور که بحث شد، تشخیص سرریز علامتدار را عمدتاً به نرمافزار واگذار میکند نه اینکه بهطور خودکار trap کند.
دامهای رایج در کد سنگین از نظر محاسباتی
فراتر از سوءتفاهمهای صریح، برخی الگوهای کدنویسی معمولاً مشکلات ظریفی ایجاد میکنند.
- مقایسه مقادیر ممیز شناور برای برابری دقیق بهجای بررسی اینکه آیا درون یک تلورانس قابلقبول کوچک نسبت به هم قرار دارند.
- ترکیب مقادیر علامتدار و بدونعلامت در همان مقایسه یا محاسبه بدون در نظر گرفتن اینکه چقدر متفاوت همان الگوی بیتی را تفسیر میکنند.
- نادیده گرفتن هزینه کارایی تقسیم غیرضروری درون حلقههایی که تعداد بسیار زیادی بار اجرا میشوند.
جمعبندی فصل: از بیتها تا اعداد دنیای واقعی
این فصل سختافزار محاسباتی را از سادهترین شکل تا سختگیرانهترین آن دنبال کرد: جمع و تفریق که یک مدار واحد را از طریق نمایش مکمل دو به اشتراک میگذارند، ضرب و تقسیم ساختهشده از گامهای سادهتر تکراری، ممیز شناور که بازه عظیمی از اعداد حقیقی را در تعداد ثابتی بیت کدگذاری میکند، و موازیسازی زیرکلمهای که همان عملیات را روی مقادیر زیادی بهطور همزمان برای بهرههای کارایی عملی اعمال میکند. با هم، این مکانیزمها اجازه میدهند مجموعه کوچک عملیاتهای سختافزاری پوششدادهشده در فصل قبل، از شمارش پایه تا شبیهسازی علمی و یادگیری ماشین را پشتیبانی کنند.