Experimental Evaluation and Enhancement of Optimizations of Annotation-Based and Automatic Parallel Code Generators for GPUs

Experimental Evaluation and Enhancement of Optimizations of Annotation-Based and Automatic Parallel Code Generators for GPUs. PhD thesis, King Fahd University of Petroleum and Minerals.

This is the latest version of this item.

[img]
Preview
PDF (PDF/A-a1 standard compliant)
2017_Jan-Almousa_Dissertation.pdf - Accepted Version
Available under License Creative Commons Attribution Non-commercial No Derivatives.

Download (7MB) | Preview

Arabic Abstract

لقد اكتسبت وحدات معالجة الرسومات الكثير من الاهتمام في الحوسبة فائقة الاداء مؤخرا. منذ ذلك الحين، تم إجراء الكثير من البحوث على صنع وتحسين نماذج اللغة التي تمكن برمجة هذه الأجهزة. وقد برز معيار OpenACC لدمج الجهد المبذول في صنع امتدادات توجيهية عالية المستوى لعدد من اللغات البرمجية المألوفة بهدف تمكين عملية برمجية سهلة لهذه الأجهزة الرسومية. وفي تغيير حدث مؤخرا على مشروع OpenACC ، أُدخلت توجيهات إضافية للسماح بإعادة استخدام مكونات المكتبات البرامجية. نظريا ، مكن ذلك من استخدام بعض المكتبات الراسخة التي تستهدف وحدات معالجة الرسومات. مع ذلك، عمليا، هناك صعوبات في استدعاء المكتبات التي تفصل بين تفاصبيل البرمجة و واجهة الاستدعاء او بشكل عام تلك التي تستخدم هياكل البيانات المخفية في واجهة الاستدعاء. في هذه الأطروحة، نقترح منهجية لتمكين استخدام مجموعة متنوعة من المكتبات البرمجية المستهدفة لوحدات معالجة الرسومات من داخل مناطق الحوسبة في OpenACC. عند تطبيق نهجنا ل CUBLAS، وهي مكتبة لأداء عمليات الجبر الخطي الأساسي، وجدنا أن نهجنا يعزز الأداء بنسبة تصل إلى ثلاثين مرة على OpenACC وحدها وحتى أعلى 2.52 أكثر من استخدام CUBLAS وحدها. وبالإضافة إلى ذلك، حققنا خفضا لحجم الرمز البرمجي وصولا الى اثنين وخمسين في المئة من الرمز الاصلي المعتمد فقط على لـ OpenACC. نهجنا ذاك يفتح الفرصة لاستدعاء تلك المكتبات مع أي تقسيمات موازية مطلوبة (thread/ block / all threads)؛ مما يلغي الحاجة لوضع نهاية لمنطقة التنفيذ الرسومي بهدف استدعاء تلك المكتبات البرمجية عن طريق وحدة المعالجة المركزية. في وحدات معالجة الرسومات، يمكن مزامنة جماعات مختلفة من الـ threads فقط من خلال معالج الأنظمة المضيف. لوحدة الرسوميات وبالتالي، فمن الممكن فقط تنفيذ المزامنة الـ مجموعات مختلفة من الthreads في الخوارزميات التكرارية من خلال تكرار اطلاق وحدات تنفيذية على وحدة المعالجة الرسومية لكل خطوة تكرارية تحتاج مزامنة. تم اقتراح بعض التقنيات لتقليل تكلفة المزامنة تلك باستخدام المتغيرات المشتركة. ومع ذلك، تبقى هذه التقنيات عرضة لانسداد الطريق. وتكون عرضة للخطأ عند تنفيذها دون الفرض الصحيح للانسجام في الذاكرة. في هذه الأطروحة، ونحن نقدم تحليلا شاملا للأسباب و والمعاملات اللمعنية في الوصول لانسداد الطريق في مثل هذه التقنيات لتزامنية، حيث نقدم الحدود العليا هش للمعاماات المعنية لتجنب انيداد الطريق في هذه التقنيات. نحن أيضا نحلل السلوك المعمول به في جدولة ال blocks المختلفة داخل وحدة الرسوميات. استنادا إلى تحليلنا ذاك، أدخلنا طريقة جديدة لتنفيذ تكرارات متزامنة أو تنفيذ أي تزامن باتجاه واحد بين منتج و مستلك، دون الحاجة للمزامنة من خلال وحدة المعالجة المركزية المضيفة ودون أن تعاني من قيود على عدد المجموعات المشاركة في الطرق الأخرى المقترحة في المواد المطبوعة. وتُظهر تحليلاتنا أن أداء أسلوبنا لديه سرعة تصل إلى حوالي 1.38 على أساليب التزامن بين المجموعات.الموجودة في المواد المطبوعة. ونقدم أيضا تحليلا للحالات والمعاملات التي ينطوي عليها حذف التزامنا لصريح المشترك مما يسبب واكتساب أداء مشابه للخوارزميات غير المتزامنة من خلال ترتيب التزامن القائم على جدولة ضمنية في مثل هذه الحالات؛ حيث نرى أيضا مكاسب تقترب من 1.8 للتطبيقات حيث المجموعات التي تعاني من عدم تساوي الحمل فيما بينها . وتبين لنا أيضا أنه بالنسبة إلى الغالبية العظمى من الحالات التي يلزم فيها التزامن الصريح، فإن المزامنة المستندة إلى المضيف هي الخيار الأفضل.

English Abstract

GPUs have gained a lot of attention in the HPC community lately. Since that, a lot of research was done on creating and optimization language models that enable programming these devices. OpenACC standard has emerged to standardize the effort of creating a high-level directive based language extension for several conventional programming languages to enable easy programming of these devices. In a recent change to the draft, extra directives were introduced to allow software library component reuse. This theoretically enabled the use of some established libraries that are implemented on GPUs. However, practically, there are difficulties in calling libraries that separate implementation details and/or use hidden data structures; expecting them as arguments. In this dissertation, we propose a systematic approach to enable the use of a variety of GPU libraries from within OpenACC compute regions. when applying our approach to CuBLAS, which is a library for performing Basic Linear Algebra operations, we found that our approach enhances performance by up to thirty-two times over OpenACC alone and up top 2.52 over using CuBLAS alond. In addition, we achieved a reduction to code size down to fifty-two percent of the original OpenACC code. Our approach also opens the opportunity to call those libraries with any parallel granularity desired (thread/ block of threads/ all threads); eliminating the need for ending the GPU execution region in order to call those libraries from the CPU. In GPUs, synchronization of different gangs of threads is only possible through the host systems processor. Hence, it is only possible to implement synchronous iterations through repeated launches of GPU kernels for each iteration step. Some techniques were proposed to reduce that overhead using shared variables. However, these are prone to deadlocks and are error prone when implemented without correct enforcement of memory coherency. In this dissertation, we provide a comprehensive analysis of the reasons and parameters involved in the deadlock-inducing behavior in such synchronization techniques, where we present crisp upper limits for parameters involved to avoid deadlocks in these techniques. We also analyze the scheduling behavior for different gangs inside the GPU. Based on the scheduler analysis, we have introduced a new novel method for implementing synchronized iterations and any one-way producer-consumer methods without the need synchronization through the host CPU and without suffering limitations for the parameters involved in the other methods proposed in literature. Our analyses show that the performance of our method has a speedup of about 1.38 over inter-block synchronization methods used in literature. We also introduce analysis for the cases and parameters involved for omitting the explicit shared variable synchronization all together and gaining performance similar to asynchronous algorithms via arranging for an implicit scheduling-based synchronization for such cases; where we also see a gain in speedup nearing 1.8 for applications where blocks do not share a balanced load among them. We also show that for a large majority of the cases where an explicit synchronization is needed, host-based synchronization is the best choice.

Item Type: Thesis (PhD)
Subjects: Computer
Department: College of Computing and Mathematics > Information and Computer Science
Committee Advisor: Al-Mouhamed, Mayez
Committee Members: Al-Mouhamed, Mayez and Shokri, Selim and Mohamed, Elrabaa and Tariq, Albusyuni and Moataz, Ahmed
Depositing User: ANAS ALMOUSA (g200805960)
Date Deposited: 11 May 2017 05:23
Last Modified: 01 Nov 2019 16:42
URI: http://eprints.kfupm.edu.sa/id/eprint/140314

Available Versions of this Item

  • Experimental Evaluation and Enhancement of Optimizations of Annotation-Based and Automatic Parallel Code Generators for GPUs. (deposited 11 May 2017 05:23) [Currently Displayed]