{"id":{"repo_id":"uiuc","oai_identifier":"oai:www.ideals.illinois.edu:2142/44383"},"canonical_url":"https://search.dev.ndltd.org/etd/uiuc/oai:www.ideals.illinois.edu:2142/44383","repository":{"repo_id":"uiuc","name":"University of Illinois - Urbana-Champaign","base_url":"https://www.ideals.illinois.edu/oai-pmh"},"display":{"title":"Performance portability of parallel kernels on shared-memory systems","abstract":"This work describes my solution to the performance portability problem: between CPUs and GPUs in particular, but laying the foundation for even broader performance portability support. I argue that the best approach is to use a language like OpenCL as a portable, low-level programming model with well-defined mechanisms for expressing multi-level parallelism and locality. That low-level program representation can be supported with architecture-specific compilers, runtimes, and libraries to target the application code to various platforms with high performance. High-level language designers or tool developers could then target this single, low-level programming and parallelism model as a portable, high-performance intermediate program representation. To demonstrate the feasibility of this approach, I show how one would design a good CPU implementation of OpenCL given that the programs are written according to the current high-level GPU vendor optimization guidelines. Programs written in such a way already meet the criteria of good GPU performance, and in this work, I show that those same programs on a CPU platform implemented according to my proposals can out-perform an OpenMP implementation of the same algorithm on the same system.","abstract_html":"This work describes my solution to the performance portability problem: between CPUs and GPUs in particular, but laying the foundation for even broader performance portability support. I argue that the best approach is to use a language like OpenCL as a portable, low-level programming model with well-defined mechanisms for expressing multi-level parallelism and locality. That low-level program representation can be supported with architecture-specific compilers, runtimes, and libraries to target the application code to various platforms with high performance. High-level language designers or tool developers could then target this single, low-level programming and parallelism model as a portable, high-performance intermediate program representation. To demonstrate the feasibility of this approach, I show how one would design a good CPU implementation of OpenCL given that the programs are written according to the current high-level GPU vendor optimization guidelines. Programs written in such a way already meet the criteria of good GPU performance, and in this work, I show that those same programs on a CPU platform implemented according to my proposals can out-perform an OpenMP implementation of the same algorithm on the same system.","abstract_has_math":false,"creators":["Stratton, John"],"institution":"University of Illinois at Urbana-Champaign","degree_name":"Ph.D.","degree_level":"Dissertation","degree_discipline":"Electrical & Computer Engr","degree_department":null,"school":null,"contributors":["Hwu, Wen-Mei W.","Chen, Deming","Lumetta, Steven S.","Padua, David A."],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2013,"date_issued":"2013-05-24T22:09:48Z","date_published":"2013-05-24T22:09:48Z","updated_at":"2026-07-22T22:25:34Z","subjects":["CUDA","C++AMP","Performance Portability","OpenCL"],"languages":["en"],"rights":["Copyright 2013 John Stratton"],"rights_urls":[],"identifier_entries":[]},"links":{"outbound_url":"http://hdl.handle.net/2142/44383","outbound_label":"Handle","outbound_source":"dc:identifier"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor","label":"Contributor","values":["Hwu, Wen-Mei W.","Chen, Deming","Lumetta, Steven S.","Padua, David A."]},{"key":"dc:creator","label":"Author","values":["Stratton, John"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date","label":"Dc Date","values":["2013-05-24T22:09:48Z","2013-05"]},{"key":"dc:type","label":"Dc Type","values":["text"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Electrical & Computer Engr"]},{"key":"thesis:degree_level","label":"Degree Level","values":["Dissertation"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Ph.D."]},{"key":"thesis:institution_name","label":"Thesis Institution Name","values":["University of Illinois at Urbana-Champaign"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["CUDA","C++AMP","Performance Portability","OpenCL"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language","label":"Dc Language","values":["en"]},{"key":"dc:rights","label":"Dc Rights","values":["Copyright 2013 John Stratton"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier","label":"Identifier","values":["http://hdl.handle.net/2142/44383"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description","label":"Description","values":["This work describes my solution to the performance portability problem: between CPUs and GPUs in particular, but laying the foundation for even broader performance portability support. I argue that the best approach is to use a language like OpenCL as a portable, low-level programming model with well-defined mechanisms for expressing multi-level parallelism and locality. That low-level program representation can be supported with architecture-specific compilers, runtimes, and libraries to target the application code to various platforms with high performance. High-level language designers or tool developers could then target this single, low-level programming and parallelism model as a portable, high-performance intermediate program representation. To demonstrate the feasibility of this approach, I show how one would design a good CPU implementation of OpenCL given that the programs are written according to the current high-level GPU vendor optimization guidelines. Programs written in such a way already meet the criteria of good GPU performance, and in this work, I show that those same programs on a CPU platform implemented according to my proposals can out-perform an OpenMP implementation of the same algorithm on the same system.","Item withdrawn by Mark Zulauf (zulauf@illinois.edu) on 2013-01-07T20:51:17Z Item was in collections: University of Illinois Theses & Dissertations (ID: 1) No. of bitstreams: 2 Dissertation_Stratton_John.zip: 4265528 bytes, checksum: d4499bed6a78434fdeccbf84fb8761da (MD5) Stratton_John.pdf: 1698270 bytes, checksum: e0a249b49b6cb4d010fb7764ffa6d934 (MD5)","Made available in DSpace on 2013-05-24T22:09:48Z (GMT). No. of bitstreams: 3 John_Stratton.pdf: 1698270 bytes, checksum: e0a249b49b6cb4d010fb7764ffa6d934 (MD5) Dissertation_Stratton_John.zip: 4265528 bytes, checksum: d4499bed6a78434fdeccbf84fb8761da (MD5) license.txt: 4063 bytes, checksum: c6f8541556b3c9c34cb9cc55c17f2446 (MD5)"]},{"key":"dc:title","label":"Title","values":["Performance portability of parallel kernels on shared-memory systems"]}]}],"canonical_facts":{"dc:contributor":["Hwu, Wen-Mei W.","Chen, Deming","Lumetta, Steven S.","Padua, David A."],"dc:creator":["Stratton, John"],"dc:date":["2013-05-24T22:09:48Z","2013-05"],"dc:description":["This work describes my solution to the performance portability problem: between CPUs and GPUs in particular, but laying the foundation for even broader performance portability support. I argue that the best approach is to use a language like OpenCL as a portable, low-level programming model with well-defined mechanisms for expressing multi-level parallelism and locality. That low-level program representation can be supported with architecture-specific compilers, runtimes, and libraries to target the application code to various platforms with high performance. High-level language designers or tool developers could then target this single, low-level programming and parallelism model as a portable, high-performance intermediate program representation. To demonstrate the feasibility of this approach, I show how one would design a good CPU implementation of OpenCL given that the programs are written according to the current high-level GPU vendor optimization guidelines. Programs written in such a way already meet the criteria of good GPU performance, and in this work, I show that those same programs on a CPU platform implemented according to my proposals can out-perform an OpenMP implementation of the same algorithm on the same system.","Item withdrawn by Mark Zulauf (zulauf@illinois.edu) on 2013-01-07T20:51:17Z Item was in collections: University of Illinois Theses & Dissertations (ID: 1) No. of bitstreams: 2 Dissertation_Stratton_John.zip: 4265528 bytes, checksum: d4499bed6a78434fdeccbf84fb8761da (MD5) Stratton_John.pdf: 1698270 bytes, checksum: e0a249b49b6cb4d010fb7764ffa6d934 (MD5)","Made available in DSpace on 2013-05-24T22:09:48Z (GMT). No. of bitstreams: 3 John_Stratton.pdf: 1698270 bytes, checksum: e0a249b49b6cb4d010fb7764ffa6d934 (MD5) Dissertation_Stratton_John.zip: 4265528 bytes, checksum: d4499bed6a78434fdeccbf84fb8761da (MD5) license.txt: 4063 bytes, checksum: c6f8541556b3c9c34cb9cc55c17f2446 (MD5)"],"dc:identifier":["http://hdl.handle.net/2142/44383"],"dc:language":["en"],"dc:rights":["Copyright 2013 John Stratton"],"dc:subject":["CUDA","C++AMP","Performance Portability","OpenCL"],"dc:title":["Performance portability of parallel kernels on shared-memory systems"],"dc:type":["text"],"thesis:degree_discipline":["Electrical & Computer Engr"],"thesis:degree_level":["Dissertation"],"thesis:degree_name":["Ph.D."],"thesis:institution_name":["University of Illinois at Urbana-Champaign"]},"updated_at":"2026-07-22T22:25:34Z"}