Extending Application Scope of LLVM's Automatic OpenMP Code Generations

碩士 === 輔仁大學 === 資訊工程學系碩士班 === 101 === With more and more computing units, including Central Processor Unit and graphics card available nowadays, how to use multiple computing units for faster parallel computing is an important issue to investigate. LLVM is a modern, free compiler system software tha...

Full description

Bibliographic Details
Main Authors: Chang, Yu-Wei, 張育維
Other Authors: Wenyan Kuo
Format: Others
Language:zh-TW
Published: 2013
Online Access:http://ndltd.ncl.edu.tw/handle/85721592319768325651
id ndltd-TW-101FJU00396055
record_format oai_dc
spelling ndltd-TW-101FJU003960552016-03-23T04:13:29Z http://ndltd.ncl.edu.tw/handle/85721592319768325651 Extending Application Scope of LLVM's Automatic OpenMP Code Generations LLVM 自動 OpenMP 程式碼生成的應用擴展改良 Chang, Yu-Wei 張育維 碩士 輔仁大學 資訊工程學系碩士班 101 With more and more computing units, including Central Processor Unit and graphics card available nowadays, how to use multiple computing units for faster parallel computing is an important issue to investigate. LLVM is a modern, free compiler system software that uses the BSD license and can be used without opening source code, so many commercial companies can use it. LLVM has many subprojects, and Polly is one of them. It reuses optimization libraries that were already developed, and it can automatically optimize code without changing source code, by only adding specific compilation flags. Polly currently has two major functions: loop optimization and automatic OpenMP code generation. Loop optimization is a common feature for modern compilers; automatic OpenMP code generation is a Polly's unique feature. This unique feature let Polly automatically generate OpenMP codes while compiling without need of programmers to modify the source codes. Compiled programs can directly utilize multi-core CPUs, to gain the effects of parallel computing. In an experiment of this thesis, Polly’s automatic OpenMP code generation feature has a 4.4 times speedup in a six-core CPU setup without any source code modifications OpenMP . Polly with automatic OpenMP code generation can have the same parallel speedups as manually written OpenMP programs. But in some cases, Polly with automatic OpenMP code generation has worse results for some programs. This thesis aims to explore the Polly weaknesses and provide solutions. Here we find three conditions that cause problems: 1. for loop iterator variable whose starting value is not 0, 2. the array index offset value calculation can not appear other than plus symbol, and 3. an specific array variable cannot appear on both sides of an assignment statement. We will propose solutions to these conditions, that let Polly with automatic OpenMP code generation have the same parallel speedups as manually written OpenMP programs. In the Polybench performance testing suit for Polly, some test cases are not speeded up using Polly. Through modifications of this thesis' proposed methods, we can make these test cases of the Polybench to have the same parallel speedups as manually written OpenMP programs. Wenyan Kuo 郭文彥 2013 學位論文 ; thesis 55 zh-TW
collection NDLTD
language zh-TW
format Others
sources NDLTD
description 碩士 === 輔仁大學 === 資訊工程學系碩士班 === 101 === With more and more computing units, including Central Processor Unit and graphics card available nowadays, how to use multiple computing units for faster parallel computing is an important issue to investigate. LLVM is a modern, free compiler system software that uses the BSD license and can be used without opening source code, so many commercial companies can use it. LLVM has many subprojects, and Polly is one of them. It reuses optimization libraries that were already developed, and it can automatically optimize code without changing source code, by only adding specific compilation flags. Polly currently has two major functions: loop optimization and automatic OpenMP code generation. Loop optimization is a common feature for modern compilers; automatic OpenMP code generation is a Polly's unique feature. This unique feature let Polly automatically generate OpenMP codes while compiling without need of programmers to modify the source codes. Compiled programs can directly utilize multi-core CPUs, to gain the effects of parallel computing. In an experiment of this thesis, Polly’s automatic OpenMP code generation feature has a 4.4 times speedup in a six-core CPU setup without any source code modifications OpenMP . Polly with automatic OpenMP code generation can have the same parallel speedups as manually written OpenMP programs. But in some cases, Polly with automatic OpenMP code generation has worse results for some programs. This thesis aims to explore the Polly weaknesses and provide solutions. Here we find three conditions that cause problems: 1. for loop iterator variable whose starting value is not 0, 2. the array index offset value calculation can not appear other than plus symbol, and 3. an specific array variable cannot appear on both sides of an assignment statement. We will propose solutions to these conditions, that let Polly with automatic OpenMP code generation have the same parallel speedups as manually written OpenMP programs. In the Polybench performance testing suit for Polly, some test cases are not speeded up using Polly. Through modifications of this thesis' proposed methods, we can make these test cases of the Polybench to have the same parallel speedups as manually written OpenMP programs.
author2 Wenyan Kuo
author_facet Wenyan Kuo
Chang, Yu-Wei
張育維
author Chang, Yu-Wei
張育維
spellingShingle Chang, Yu-Wei
張育維
Extending Application Scope of LLVM's Automatic OpenMP Code Generations
author_sort Chang, Yu-Wei
title Extending Application Scope of LLVM's Automatic OpenMP Code Generations
title_short Extending Application Scope of LLVM's Automatic OpenMP Code Generations
title_full Extending Application Scope of LLVM's Automatic OpenMP Code Generations
title_fullStr Extending Application Scope of LLVM's Automatic OpenMP Code Generations
title_full_unstemmed Extending Application Scope of LLVM's Automatic OpenMP Code Generations
title_sort extending application scope of llvm's automatic openmp code generations
publishDate 2013
url http://ndltd.ncl.edu.tw/handle/85721592319768325651
work_keys_str_mv AT changyuwei extendingapplicationscopeofllvmsautomaticopenmpcodegenerations
AT zhāngyùwéi extendingapplicationscopeofllvmsautomaticopenmpcodegenerations
AT changyuwei llvmzìdòngopenmpchéngshìmǎshēngchéngdeyīngyòngkuòzhǎngǎiliáng
AT zhāngyùwéi llvmzìdòngopenmpchéngshìmǎshēngchéngdeyīngyòngkuòzhǎngǎiliáng
_version_ 1718210136428773376