Skip to main content
SUPERVISOR
عبدالرضا میرزایی دمابی (استاد راهنما) علی جان نثاری (استاد راهنما)
 
STUDENT
Arya Mazaheri
آریا مظاهری

FACULTY - DEPARTMENT

دانشکده مهندسی برق و کامپیوتر
DEGREE
Master of Science (MSc)
YEAR
1391

TITLE

Detecting Parallel Patterns in Shared Memory Applications
With the increasing use of multi-core systems, utilizing the maximum capability of these processors seems very critical. In order to exploit maximum power from the processing cores, having insight about the bottlenecks of the parallel program is required. Fortunately, these bottlenecks and also relevant performance parameters could be identified by the inherent communication and computation patterns of the program under test. There are various methods currently available to detect communication patterns inside a parallel program. Runtime simulation, code instrumentation and hardware counter analysis are some of these techniques. However, the majority of them are focused on HPC applications developed on distributed-memory platforms. They also neglect the unique communication characteristics of shared-memory systems and impose a great deal of overhead (both memory and runtime) with average accuracy while analyzing the application. The main purpose of this thesis is to propose a novel method to automatically detect parallel patterns inside the shared-memory applications. First, the application's inter-thread communication information will be collected using LLVM instrumentation. In order to find dependencies among thread efficiently, a new data structure named "Asymmetric Signature Memory" is proposed which requires less than 200MB of memory in order to be used in the analysis. Having predictable memory footprint and low runtime overhead are the main advantages. In addition, by discerning loops inside the target program and producing multi-layer communication matrix, multiple patterns could be identified in the target program. By using supervised learning با تشکر
با افزایش روز افزون نیاز پردازشی برنامه ها و استفاده از سیستم های چند پردازنده ای، به کارگیری حداکثری توانایی این پردازنده ها بسیار حیاتی به نظر می‌رسد. بدین منظور لازم است اطلاعاتی در مورد ساختار برنامه موازی و گلوگاه های راندمان کارکرد آن بدست آورده شود. خوشبختانه این گلوگاه ها و همچنین بقیه پارامترهای موثر در راندمان برنامه را می توان توسط الگوهای پردازشی و ارتباطی موجود در بطن برنامه موازی تحت بررسی و تشخیص داد. در حال حاضر تلاش‌های متعددی برای تشخیص الگو و ساختار ارتباطی برنامه‌های موازی صورت گرفته است. شبیه سازی اجرا، پایش کد و تحلیل شمارنده‌های سخت‌افزاری از جمله روش‌های متداول برای تشخیص این الگوها می‌باشند. با این حال، اکثر این روش‌ها بر روی برنامه‌های علمی محاسباتی با ساختار حافظه توزیعی متمرکز شده‌اند. همچنین، این روش‌ها به ویژگی‌های بنیادی ارتباطی برنامه‌های حافظه مشترک توجّهی نمی‌کنند و به همین دلیل کاربردی در سیستم‌های حافظه مشترک ندارند. سربار زیاد زمانی و حافظه‌ای به همراه دقّت تشخیص پایین، از دیگر مشکلات روش‌های پیشین است. هدف این پایان‌نامه ارائه روشی مؤثر برای تشخیص خودکار الگوهای پردازشی در درون برنامه‌های حافظه مشترک است. در مرحله اول، وابستگی بین نخ‌های برنامه توسط بسته‌ی پایش کد LLVM بدست می‌آید. به منظور کسب این اطلاعات با بهترین کارایی، یک ساختمان داده جدید به نام «امضای حافظه نامتقارن» ارائه شده است که حتّی با کمتر از ??? مگابایت حافظه می‌تواند وابستگی بین نخ‌های برنامه را بدست آورد. امکان تخمین حداکثر میزان مصرفی حافظه و همچنین سرعت بالای تشخیص وابستگی بین نخ‌های برنامه از جمله مزایای منحصر به فرد این روش است. علاوه بر این با تشخیص حلقه‌های داخل منبع برنامه در حین اجرا و ایجاد یک ماتریس ارتباطی چند لایه از الگوی ارتباطی برنامه، الگوهای موازی متعدد درون برنامه قابل شناسایی شدند. سپس با اعمال روش دسته بندی یادگیری با نظارت و آموزش آن با مجموعه داده معتبر آموزشی به دقت بیش از ??? در پیش بینی الگوهای موازی رسیدیم. در نهایت دو الگوریتم جدید برای تشخیص الگوهای ساختاری ارائه گردیده است. توسط الگوریتم ارائه شده نه تنها می توان به طور کامل حضور الگوی خط لوله منحصر به برنامه های حافظه مشترک را تشخیص داد بلکه می توان پارامترهای اجرایی آن را همراه با معیارهای کمّی توصیف کیفیت تعیین نمود.

ارتقاء امنیت وب با وف بومی