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...
Main Authors: | , |
---|---|
Other Authors: | |
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 |