حدس و گمان برای شبیه سازی نوآوری در تأیید

حدس و گمان برای شبیه سازی نوآوری در تأیید

گره منبع: 2547459

این یک ایده جالب است، با استفاده از موازی سازی حدس و گمان سخت افزاری برای تسریع شبیه سازی، با پیچ و تاب که نیاز به سخت افزار سفارشی دارد. پل کانینگهام (معاون ارشد/معاون ارشد، تأیید در کادنس)، رائول کامپوسانو (کاتالیست سیلیکون، کارآفرین، مدیر ارشد فناوری سابق Synopsys و اکنون مدیر ارشد فناوری سیلواکو) و من مجموعه خود را در مورد ایده های تحقیقاتی ادامه می دهیم. مثل همیشه، بازخورد استقبال می شود.

حدس و گمان برای شبیه سازی

نوآوری

انتخاب این ماه است Chronos: موازی سازی گمانه زنی کارآمد برای شتاب دهنده ها. نویسندگان مقاله را در کنفرانس 2020 در مورد پشتیبانی معماری برای زبان‌های برنامه‌نویسی و سیستم‌های عامل ارائه کردند و از MIT هستند.

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

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

دیدگاه پل

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

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

وظایف موجود در صف به طور موازی به چندین عنصر پردازشی (PE) تقسیم می‌شوند - این بدان معناست که Chronos به صورت فرضی وظایف آینده را قبل از تکمیل کار فعلی انجام می‌دهد. اگر وظیفه فعلی هر یک از وظایف آینده را که به طور فرضی اجرا شده اند باطل کند، اقدامات آن وظایف آینده "لغو" می شوند و دوباره در صف قرار می گیرند. پیاده‌سازی صحیح این مفهوم در سخت‌افزار آسان نیست، اما برای کاربر خارجی زیباست: شما فقط الگوریتم خود را طوری کدگذاری می‌کنید که گویی صف کار به صورت سریال روی یک PE منفرد اجرا می‌شود. نیازی به کدنویسی mutexes یا نگرانی در مورد بن بست نیست.

نویسندگان Chronos را در SystemVerilog پیاده سازی کرده و آن را در یک FPGA کامپایل می کنند. بخش عمده ای از مقاله به توضیح نحوه اجرای صف وظایف و هرگونه بازگشایی سخت افزاری برای حداکثر کارایی اختصاص دارد. Chronos بر اساس چهار الگوریتم به خوبی برای یک معماری مبتنی بر صف وظایف محک زده شده است. هر الگوریتم به دو روش پیاده‌سازی می‌شود: اول با استفاده از یک PE اختصاصی الگوریتم، و دوم با استفاده از یک CPU منبع باز 32 بیتی RISC-V به عنوان PE. سپس عملکرد Chronos با پیاده‌سازی نرم‌افزارهای چند رشته‌ای الگوریتم‌های در حال اجرا بر روی سرور Intel Xeon با برچسب قیمتی مشابه با FPGA مورد استفاده برای Chronos مقایسه می‌شود. نتایج چشمگیر هستند - مقیاس Chronos 3 برابر تا 15 برابر بهتر از استفاده از سرور Xeon است. با این حال، مقایسه جدول 3 با شکل 14 من را کمی نگران می کند که بیشتر این دستاوردها از PE های خاص الگوریتم به جای خود معماری Chronos حاصل شده است.

با توجه به اینکه این یک وبلاگ تأیید است که من به طور طبیعی روی معیار شبیه سازی سطح دروازه بزرگنمایی کردم. صنعت EDA سرمایه گذاری زیادی را برای تلاش و موازی سازی شبیه سازی منطقی انجام داده است و ثابت شده است که دیدن دستاوردهای بزرگ فراتر از چند مورد استفاده خاص دشوار است. این عمدتاً به دلیل عملکرد بیشتر شبیه‌سازی‌های دنیای واقعی است که توسط دستورالعمل‌های بارگذاری/ذخیره‌ای که در حافظه نهان L3 وجود ندارد و به DRAM منتقل می‌شوند، تسلط دارند. تنها یک مورد آزمایشی در این مقاله محک زده شده است و آن یک جمع کننده ذخیره کوچک 32 بیتی است. اگر در حال خواندن این وبلاگ هستید و می‌خواهید معیارهای دقیق‌تری انجام دهید، لطفاً به من اطلاع دهید - اگر Chronos واقعاً بتواند به خوبی در شبیه‌سازی‌های دنیای واقعی مقیاس‌بندی کند، ارزش تجاری زیادی خواهد داشت!

دیدگاه رائول

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

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

La کرونوس این سیستم در چارچوب AWS FPGA به عنوان یک سیستم با 16 کاشی، هر کدام با 4 عنصر پردازش ویژه برنامه (PE) اجرا شد که با فرکانس 125 مگاهرتز اجرا می‌شود. این سیستم با یک خط پایه شامل 20 هسته / 40 رشته 2.4 گیگاهرتز Intel Xeon E5-2676v3 مقایسه می شود، که به طور خاص انتخاب شده است زیرا قیمت آن با FPGA قابل مقایسه است (تقریباً 2 دلار در ساعت). Chronos با اجرای یک کار روی یک PE، 2.45 برابر سریعتر از خط پایه است. با افزایش تعداد وظایف همزمان، پیاده‌سازی Chronos به سرعت نسبی 44.9 برابر در 8 کاشی، که مربوط به افزایش سرعت 15.3 برابری نسبت به اجرای CPU است، می‌رسد. آنها همچنین پیاده سازی مبتنی بر هدف کلی RISC-V را به جای PE های خاص برنامه مقایسه کردند. PE ها 5 برابر سریعتر از RISC-V بودند.

به نظر من مقاله قابل توجه بود زیرا همه چیز را از یک مفهوم گرفته تا تعریف مدل اجرای SLOT تا اجرای سخت افزار و مقایسه دقیق با یک CPU سنتی Xeon برای 4 برنامه را پوشش می دهد. تلاش قابل توجهی است، Chronos بیش از 20,000 خط SystemVerilog است. نتیجه یک میانگین 5.4 برابری (از 4 برنامه) افزایش سرعت نسبت به نسخه های موازی نرم افزار است، به دلیل موازی بودن بیشتر و استفاده بیشتر از اجرای حدس و گمان. مقاله همچنین برای کاربرد در کارهای غیر شبیه سازی ارزش خواندن دارد. مقاله شامل سه مثال است.

اشتراک گذاری این پست از طریق:

تمبر زمان:

بیشتر از نیمه ویکی