کد مقاله | کد نشریه | سال انتشار | مقاله انگلیسی | نسخه تمام متن |
---|---|---|---|---|
566096 | 1452133 | 2015 | 8 صفحه PDF | دانلود رایگان |
کلمات کلیدی
1.مقدمه
2. پیش زمینه و کار مربوطه
شکل 1: سیستم چند پردازشی متقارن
شکل 2: سیستم حافظه دسترسی غیریکپارچه با کش
3. محاسبات موازی اعمال شده به FEM
شکل 3: مکعب با عناصر چهار وجهی استفاده شده برای تحلیل
4. نتایج آزمایشی
شکل 4: عناصر مکعب گروه بندی شده درچهار زیر ساختار
شکل 5: بررسی سیستم ازمایشی (memory bank= بانک حافظه؛ node=گره؛ processor= پردازنده)
شکل 6: بررسی واحد محاسباتی (pipeline = پایپ لاین یا خط لوله، compute unit= واحد محاسباتی)
شکل 7: مقیاس پذیری عملکرد تجزیه Cholesky موازی
4.1 بررسی مسائل عملکردی
شکل 8 تحلیل اولیه با استفاده از ابزار perf
4.2 تخصیص حافظه بر سیستمهای ccNUMA
4.3 تغییر سیاست تخصیص حافظه
شکل 9: مقیاس پذیری عملکرد تجزیه Cholesky موازی : سیاست اولین تماس در برابر جاگذاری
4.4 زمان بندی نخ و کنترل تخصیص حافظه
شکل 10: مقیاس پذیری عملکرد تجزیه Cholesky موازی در زمان کنترل تخصیص حافظه و زمان بندی با کتابخانه libnuma
4.5 کپی بر نخ: کپی داده بر بانکهای حافظه محلی
4.6 برازش مجموعه دادهها در کشهای پردازنده
شکل 11: مقیاس پذیری عملکرد تجزیه Cholesky موازی: کپی بر نخ در برابر رویکردهای دیگر
شکل 12: مقیاس پذیری عملکرد تجزیه Cholesky موازی در زمان تجزیه یک ماتریس کوچک (615 KB)
شکل 13: مقیاس پذیری تجزیه Cholesky موازی در زمان تجزیه ماتریس substructuring مسئله واقعی
4.7 بهبودهای عملکرد بر NeoPZ
5. نتیجه گیری
Recent multi-core designs migrated from Symmetric Multi Processing to cache coherent Non Uniform Memory Access architectures. In this paper we discuss performance issues that arise when designing parallel Finite Element programs for a 64-core ccNUMA computer and explore solutions for these issues. We first present the overview of the computer architecture and show that highly parallel code that does not take into account the aspects of the system memory organization scales poorly, achieving only 2.8× speedup when running with 64 threads. Then, we discuss how we identified the sources of overhead and evaluate three possible solutions for the problem. We show that the first solution does not require the application’s code to be modified, however, the speedup achieved is only 10.6×. The second solution enables the performance to scale up to 30.9×, however, it requires the programmer to manually schedule threads and allocate related data on local CPUs and memory banks and rely on ccNUMA aware libraries that are not portable across operating systems. Also, we propose and evaluate “copy-on-thread”, an alternative solution that enables the performance to scale up to 25.5× without relying on specialized libraries nor requiring specific data allocation and thread scheduling. Finally, we argue that the issues reported only happen for large data sets and conclude the paper with recommendations to help programmers to design algorithms and programs that perform well on such kind of machine.
Journal: Advances in Engineering Software - Volume 84, June 2015, Pages 77–84