تسریع ضرب ماتریس و درس‌های کلیدی فصل سوم

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

کارایی ضرب ماتریسمغالطات محاسباتیجمع‌بندی فصل سوم

~3 min read · Updated Sep 6, 2026

چرا ضرب ماتریس تناسب طبیعی با موازی‌سازی دارد

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

به‌کارگیری موازی‌سازی زیرکلمه‌ای برای ضرب ماتریس

به‌جای محاسبه هر ضرب و جمع در یک ماتریس یکی‌یکی، یک پردازنده با استفاده از 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 کند.

دام‌های رایج در کد سنگین از نظر محاسباتی

فراتر از سوءتفاهم‌های صریح، برخی الگوهای کدنویسی معمولاً مشکلات ظریفی ایجاد می‌کنند.

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

جمع‌بندی فصل: از بیت‌ها تا اعداد دنیای واقعی

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

Written & researched by Dr. Shahin Siami

Related Articles

تصورات غلط رایج درباره محاسبات موازی و درس‌های نهایی کتاب

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

Continue

واقعیت‌های عملی: بنچمارک CPU در مقابل GPU و ضرب ماتریس چندپردازنده‌ای

مقایسه منصفانه یک CPU و یک GPU نیازمند مدلی است که هم توان عملیاتی محاسباتی و هم محدودیت‌های پهنای باند حافظه را با هم در نظر بگیرد. این مقاله مدل roofline مورد استفاده برای مقایسه سخت‌افزار واقعی مانند Intel Core i7 و NVIDIA Tesla GPU را معرفی می‌کند، سپس نشان می‌دهد ضرب ماتریس چگونه در سراسر چند پردازنده تسریع می‌شود، به‌عنوان کاربرد عملی نهایی مفاهیم موازی این فصل.

Continue

بنچمارک کردن چندپردازنده‌ها و مدل‌سازی کارایی موازی

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

Continue

شبکه‌سازی کلاستر: ارتباط با دنیای بیرون

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

Continue

کلاسترها، کامپیوترهای در مقیاس انبار، و توپولوژی‌های شبکه

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

Continue

مقدمه‌ای بر GPU: موازی‌سازی عظیم برای بارهای کاری سنگین از نظر داده

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

Continue