OCCA: A Unified Approach to Multi-Threading Languages

dc.contributor.advisorWarburton, Timothyen_US
dc.contributor.committeeMemberRiviere, Beatriceen_US
dc.contributor.committeeMemberSymes, William Wen_US
dc.creatorMedina, Daviden_US
dc.date.accessioned2016-01-27T22:40:32Zen_US
dc.date.available2016-01-27T22:40:32Zen_US
dc.date.created2014-12en_US
dc.date.issued2014-10-23en_US
dc.date.submittedDecember 2014en_US
dc.date.updated2016-01-27T22:40:32Zen_US
dc.description.abstractWith the current trend of using co-processors for accelerating computations, we are presented with architectures and corresponding programming languages. The inability to predict lasting languages and architectures has led to the development of distinct languages and standards. This thesis details my work on occa, a unified threading language presented as a portable solution to hardware-accelerated coding that combines aspects of OpenMP, OpenCL, and CUDA. With the similarities between OpenMP, OpenCL and CUDA, I present a macro-based approach on a unified kernel language that currently encompasses OpenMP, OpenCL and CUDA. Along with kernel generation, occa includes an API (application programming interface) which serves as a wrapper on the three multi-threading languages. The back-end on occa dynamically compiles and loads function objects for a flexible run-time environment to use different hardware architectures. Computational results using a spectrum of methods, namely finite difference, spectral element and discontinuous Galerkin methods, utilizing occa are shown to deliver portable high performance on different architectures and platforms. The finite difference method chapter reverse engineers optimized code written in CUDA and used in industry, discusses distinct features available in CUDA and compares occa implementations using different optimization techniques. The spectral element method and discontinuous Galerkin methods are derived from two projects I worked on during my studies: gNek, a distributed high-order spectral element method (SEM) implementation for the incompressible Navier-Stokes equations, and RiDG, equipped with discontinuous Galerkin (DG) to simulate acoustic wave equations under different assumptions in the material anisotropies. The parallel algorithms used to achieve high parallelization for GPU acceleration are discussed in both, gNek and RiDG, together with performance results.en_US
dc.format.mimetypeapplication/pdfen_US
dc.identifier.citationMedina, David. "OCCA: A Unified Approach to Multi-Threading Languages." (2014) Master’s Thesis, Rice University. <a href="https://hdl.handle.net/1911/88205">https://hdl.handle.net/1911/88205</a>.en_US
dc.identifier.urihttps://hdl.handle.net/1911/88205en_US
dc.language.isoengen_US
dc.rightsCopyright is held by the author, unless otherwise indicated. Permission to reuse, publish, or reproduce the work beyond the bounds of fair use or other exemptions to copyright law must be obtained from the copyright holder.en_US
dc.subjecthigh performance computingen_US
dc.subjectcudaen_US
dc.subjectopenclen_US
dc.subjectfinite elementsen_US
dc.subjectfinite differenceen_US
dc.subjectdiscontinuous galerkinen_US
dc.subjectmultithreadingen_US
dc.subjectopenmpen_US
dc.subjecten_US
dc.titleOCCA: A Unified Approach to Multi-Threading Languagesen_US
dc.typeThesisen_US
dc.type.materialTexten_US
thesis.degree.departmentComputational and Applied Mathematicsen_US
thesis.degree.disciplineEngineeringen_US
thesis.degree.grantorRice Universityen_US
thesis.degree.levelMastersen_US
thesis.degree.nameMaster of Artsen_US
Files
Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
MEDINA-DOCUMENT-2014.pdf
Size:
3.81 MB
Format:
Adobe Portable Document Format
License bundle
Now showing 1 - 2 of 2
No Thumbnail Available
Name:
PROQUEST_LICENSE.txt
Size:
5.84 KB
Format:
Plain Text
Description:
No Thumbnail Available
Name:
LICENSE.txt
Size:
2.61 KB
Format:
Plain Text
Description: