Difference between revisions of "Fall 2015 SPO600 Compiler Options Presentation"

From CDOT Wiki
Jump to: navigation, search
(FAQ)
(Topics: Added resource links)
 
(48 intermediate revisions by 17 users not shown)
Line 3: Line 3:
 
== Assignment ==
 
== Assignment ==
  
# Select one of the topics below by placing your name in the "Student" column (first come, first served - one student per topic).
+
# Select two <u>unrelated</u> compiler options, below, by placing your name in the "Student" column (first come, first served - one student per topic).
# During week 3, research the topic and prepare a '''3- to 5-minute''' presentation to teach the class.
+
# During week 3, research the topics and prepare a '''3- to 5-minute''' presentation to teach the class.
 
# Be prepared to teach this presentation during week 4. You may want to draw whiteboard diagrams, use presentation slides, or have a 1-page handout. Please avoid taking more than 5 minutes in total for your presentation.
 
# Be prepared to teach this presentation during week 4. You may want to draw whiteboard diagrams, use presentation slides, or have a 1-page handout. Please avoid taking more than 5 minutes in total for your presentation.
  
 
== Deadlines ==
 
== Deadlines ==
  
* Topic selection: '''11:40 am, Tuesday, September 22''' (End of the scheduled Tuesday class in Week 3)
+
* Topic selection: '''1:30 pm, Tuesday, September 22''' (End of the scheduled Tuesday class in Week 3)
* Presentation ready: '''11:40 am, Tuesday, September 29''' (You must be prepared to present before the scheduled Tuesday class in Week 6)
+
* Presentation ready: '''11:40 am, Tuesday, September 29''' (You must be prepared to present before the scheduled Tuesday class in Week 4)
  
 
== FAQ ==
 
== FAQ ==
Line 16: Line 16:
 
* Q: '''How much detail should the presentation include?'''
 
* Q: '''How much detail should the presentation include?'''
 
** A: Each of these topics is pretty small and straightforward. Provide some type of resource for future reference -- a link to an existing web resource, a 1-page handout, or a blog post or wiki page about the topic. Your presentation should include:
 
** A: Each of these topics is pretty small and straightforward. Provide some type of resource for future reference -- a link to an existing web resource, a 1-page handout, or a blog post or wiki page about the topic. Your presentation should include:
**# The Option: The compiler option as described in the gcc documentation - What it is and why programmers write code in this way. Include a short example of actual code.
+
**# The Option: The compiler option as described in the gcc documentation - What it is and why it is provided.
 
**# The Impact: Write and compile code that is impacted by this particular compiler option. Identify the characteristics that must be present in the source code in order to benefit from this compiler option (for example: double-precision math, use of arrays, pointer math). Describe the effect of the option on performance, code size, and code readability. If there are any problems or dangers with this option, identify them.
 
**# The Impact: Write and compile code that is impacted by this particular compiler option. Identify the characteristics that must be present in the source code in order to benefit from this compiler option (for example: double-precision math, use of arrays, pointer math). Describe the effect of the option on performance, code size, and code readability. If there are any problems or dangers with this option, identify them.
 
**# Recommendation: Make a recommendation on when this compiler option should be used and when it should not be used.
 
**# Recommendation: Make a recommendation on when this compiler option should be used and when it should not be used.
Line 27: Line 27:
  
 
* Q: '''What resources should I use?'''
 
* Q: '''What resources should I use?'''
** Use the [https://gcc.gnu.org/onlinedocs/ gcc documentation]
+
** A: Use the [https://gcc.gnu.org/onlinedocs/ gcc documentation]. Also, there are resources on the web as well as on this wiki (for example, see the [[:Category:Assembly Language|Assembly Language category]] on this wiki).
** A: There are resources on the web as well as on this wiki (for example, see the [[:Category:Assembly Language|Assembly Language category]] on this wiki).
 
  
 
* Q: '''Are there any classes scheduled during Week 3?'''
 
* Q: '''Are there any classes scheduled during Week 3?'''
Line 36: Line 35:
  
 
{|class="wikimedia sortable" border="1" cellpadding="5" cellspacing="0"
 
{|class="wikimedia sortable" border="1" cellpadding="5" cellspacing="0"
!Category!!Topic!!Presenter Name!!Links to resources (Wiki page, handout, web resources)!!Link to blog post on this topic
+
!Compiler Option!!Presenter Name!!(Leave blank)!!Links to resources (Wiki page, handout, web resources)!!Link to blog post on this topic
 
|-
 
|-
 
| -faggressive-loop-optimizations|| || || ||
 
| -faggressive-loop-optimizations|| || || ||
 
|-
 
|-
| -fassociative-math|| || || ||
+
| -fassociative-math|| Kevin Paiva || || ||
 
|-
 
|-
 
| -fauto-inc-dec|| || || ||
 
| -fauto-inc-dec|| || || ||
Line 60: Line 59:
 
| -fconserve-stack|| || || ||
 
| -fconserve-stack|| || || ||
 
|-
 
|-
| -fcompare-elim|| || || ||
+
| -fcompare-elim|| Kevin Paiva || || ||
 
|-
 
|-
 
| -fcprop-registers|| || || ||
 
| -fcprop-registers|| || || ||
Line 68: Line 67:
 
| -fcse-follow-jumps|| || || ||
 
| -fcse-follow-jumps|| || || ||
 
|-
 
|-
| -fcse-skip-blocks|| || || ||
+
| -fcse-skip-blocks|| Joseph Jaku || || ||[http://jjakuseneca.blogspot.ca/2015/10/compiler-optimization-options.html Blog Post]
 
|-
 
|-
| -fdce|| || || ||
+
| -fdce|| Joseph Jaku || || ||[http://jjakuseneca.blogspot.ca/2015/10/compiler-optimization-options.html Blog Post]
 
|-
 
|-
 
| -fdelayed-branch|| || || ||
 
| -fdelayed-branch|| || || ||
 
|-
 
|-
| -fdelete-null-pointer-checks|| || || ||
+
| -fdelete-null-pointer-checks|| Joel Aro || || [https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html GCC Optimize Options] ||
 
|-
 
|-
| -fdevirtualize|| || || ||
+
| -fdevirtualize|| Suk-Joong Han || || https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html ||
 
|-
 
|-
 
| -fdevirtualize-speculatively|| || || ||
 
| -fdevirtualize-speculatively|| || || ||
Line 88: Line 87:
 
| -ffat-lto-objects|| || || ||
 
| -ffat-lto-objects|| || || ||
 
|-
 
|-
| -ffast-math|| || || ||
+
| -ffast-math|| Miguel Dizon || || https://gcc.gnu.org/wiki/FloatingPointMath ||
 
|-
 
|-
 
| -ffinite-math-only|| || || ||
 
| -ffinite-math-only|| || || ||
Line 122: Line 121:
 
| -findirect-inlining|| || || ||
 
| -findirect-inlining|| || || ||
 
|-
 
|-
| -finline-functions|| || || ||
+
| -finline-functions||Kirill Lepetinskiy|| || [https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html GCC Docs]  || [http://klepetinskiy.blogspot.ca/2015/09/finline-functions.html Blog Post]
 
|-
 
|-
 
| -finline-functions-called-once|| || || ||
 
| -finline-functions-called-once|| || || ||
Line 128: Line 127:
 
| -finline-limit=n|| || || ||
 
| -finline-limit=n|| || || ||
 
|-
 
|-
| -finline-small-functions|| || || ||
+
| -finline-small-functions|| Yehoshua Ghitis|| || ||
 
|-
 
|-
 
| -fipa-cp|| || || ||
 
| -fipa-cp|| || || ||
Line 168: Line 167:
 
| -flive-range-shrinkage|| || || ||
 
| -flive-range-shrinkage|| || || ||
 
|-
 
|-
| -floop-block|| || || ||
+
| -floop-block|| Dmytro Yegorov || ||[http://www.cc.gatech.edu/~bader/COURSES/UNM/ece637-Fall2003/papers/KW03.pdf -floop-block]|| [https://dyegorov.wordpress.com/2015/10/02/gcc-floop-block-and-floop-interchange/ Blog Post]
 
|-
 
|-
| -floop-interchange|| || || ||
+
| -floop-interchange|| Dmytro Yegorov || || [https://en.wikipedia.org/wiki/Loop_interchange -floop-interchange]|| [https://dyegorov.wordpress.com/2015/10/02/gcc-floop-block-and-floop-interchange/ Blog Post]
 
|-
 
|-
 
| -floop-strip-mine|| || || ||
 
| -floop-strip-mine|| || || ||
Line 196: Line 195:
 
| -fmodulo-sched-allow-regmoves|| || || ||
 
| -fmodulo-sched-allow-regmoves|| || || ||
 
|-
 
|-
| -fmove-loop-invariants|| || || ||
+
| -fmove-loop-invariants||Gaurav Patel || ||https://en.wikipedia.org/wiki/Loop-invariant_code_motion ||
 
|-
 
|-
 
| -fno-branch-count-reg|| || || ||
 
| -fno-branch-count-reg|| || || ||
 
|-
 
|-
| -fno-defer-pop|| || || ||
+
| -fno-defer-pop|| Andy Cooc || || ||
 
|-
 
|-
| -fno-function-cse|| || || ||
+
| -fno-function-cse|| Andy Cooc || || ||
 
|-
 
|-
 
| -fno-guess-branch-probability|| || || ||
 
| -fno-guess-branch-probability|| || || ||
 
|-
 
|-
| -fno-inline|| || || ||
+
| -fno-inline||Donald Nguyen || || ||
 
|-
 
|-
 
| -fno-math-errno|| || || ||
 
| -fno-math-errno|| || || ||
Line 214: Line 213:
 
| -fno-sched-spec|| || || ||
 
| -fno-sched-spec|| || || ||
 
|-
 
|-
| -fno-signed-zeros|| || || ||
+
| -fno-signed-zeros|| Suk-Joong Han || || https://en.wikipedia.org/wiki/Signed_zero ||
 
|-
 
|-
 
| -fno-toplevel-reorder|| || || ||
 
| -fno-toplevel-reorder|| || || ||
Line 228: Line 227:
 
| -fpartial-inlining|| || || ||
 
| -fpartial-inlining|| || || ||
 
|-
 
|-
| -fpeel-loops|| || || ||
+
| -fpeel-loops|| James Shin|| || ||
 
|-
 
|-
 
| -fpredictive-commoning|| || || ||
 
| -fpredictive-commoning|| || || ||
 
|-
 
|-
| -fprefetch-loop-arrays|| || || ||
+
| -fprefetch-loop-arrays||Jayme Laso-Barros|| ||[https://gcc.gnu.org/onlinedocs/gcc-5.2.0/gcc/Optimize-Options.html GCC 5.2 Manual: Section 3.10]||
 
|-
 
|-
 
| -fprofile-report|| || || ||
 
| -fprofile-report|| || || ||
Line 244: Line 243:
 
| -fprofile-generate=path|| || || ||
 
| -fprofile-generate=path|| || || ||
 
|-
 
|-
| -fprofile-use|| || || ||
+
| -fprofile-use||Ramanan Manokaran || || ||
 
|-
 
|-
 
| -fprofile-use=path|| || || ||
 
| -fprofile-use=path|| || || ||
Line 258: Line 257:
 
| -frename-registers|| || || ||
 
| -frename-registers|| || || ||
 
|-
 
|-
| -freorder-blocks|| || || ||
+
| -freorder-blocks|| Ramanan Manokaran|| || ||
 
|-
 
|-
 
| -freorder-blocks-and-partition|| || || ||
 
| -freorder-blocks-and-partition|| || || ||
 
|-
 
|-
| -freorder-functions|| || || ||
+
| -freorder-functions||Jayme Laso-Barros|| ||[https://gcc.gnu.org/onlinedocs/gcc-5.2.0/gcc/Optimize-Options.html GCC 5.2 Manual: Section 3.10]||
 
|-
 
|-
 
| -frerun-cse-after-loop|| || || ||
 
| -frerun-cse-after-loop|| || || ||
Line 312: Line 311:
 
| -fsplit-ivs-in-unroller|| || || ||
 
| -fsplit-ivs-in-unroller|| || || ||
 
|-
 
|-
| -fsplit-wide-types|| || || ||
+
| -fsplit-wide-types|| Shirwa Egal || || ||
 
|-
 
|-
 
| -fstack-protector / -fstack-protector-all / -fstack-protector-strong|| || || ||
 
| -fstack-protector / -fstack-protector-all / -fstack-protector-strong|| || || ||
Line 340: Line 339:
 
| -ftree-copyrename|| || || ||
 
| -ftree-copyrename|| || || ||
 
|-
 
|-
| -ftree-dce|| || || ||
+
| -ftree-dce|| Gaurav Patel || ||https://en.wikipedia.org/wiki/Dead_code_elimination||
 
|-
 
|-
 
| -ftree-dominator-opts|| || || ||
 
| -ftree-dominator-opts|| || || ||
 
|-
 
|-
| -ftree-dse|| || || ||
+
| -ftree-dse|| Shirwa Egal|| || ||
 
|-
 
|-
 
| -ftree-forwprop|| || || ||
 
| -ftree-forwprop|| || || ||
Line 350: Line 349:
 
| -ftree-fre|| || || ||
 
| -ftree-fre|| || || ||
 
|-
 
|-
| -ftree-loop-if-convert|| || || ||
+
| -ftree-loop-if-convert|| Donald Nguyen || || ||
 
|-
 
|-
| -ftree-loop-if-convert-stores|| || || ||
+
| -ftree-loop-if-convert-stores||Kirill Lepetinskiy|| || [https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html GCC Docs] [http://www.rcollins.org/p6/opcodes/CMOV.html On CMOV] ||[http://klepetinskiy.blogspot.ca/2015/09/ftree-loop-if-convert-stores.html Blog Post]
 
|-
 
|-
 
| -ftree-loop-im|| || || ||
 
| -ftree-loop-im|| || || ||
Line 358: Line 357:
 
| -ftree-phiprop|| || || ||
 
| -ftree-phiprop|| || || ||
 
|-
 
|-
| -ftree-loop-distribution|| || || ||
+
| -ftree-loop-distribution||Nitish Bajaj|| || ||
 
|-
 
|-
 
| -ftree-loop-distribute-patterns|| || || ||
 
| -ftree-loop-distribute-patterns|| || || ||
Line 394: Line 393:
 
| -ftree-vectorize|| || || ||
 
| -ftree-vectorize|| || || ||
 
|-
 
|-
| -ftree-vrp|| || || ||
+
| -ftree-vrp||Nitish Bajaj|| || ||
 
|-
 
|-
 
| -funit-at-a-time|| || || ||
 
| -funit-at-a-time|| || || ||
 
|-
 
|-
| -funroll-all-loops|| || || ||
+
| -funroll-all-loops|| Yehoshua Ghitis|| || ||
 
|-
 
|-
| -funroll-loops|| || || ||
+
| -funroll-loops|| Joel Aro || || [https://en.wikipedia.org/wiki/Loop_unrolling Loop Unrolling] ||
 
|-
 
|-
 
| -funsafe-loop-optimizations|| || || ||
 
| -funsafe-loop-optimizations|| || || ||
 
|-
 
|-
| -funsafe-math-optimizations|| || || ||
+
| -funsafe-math-optimizations||James Shin || || ||
 
|-
 
|-
| -funswitch-loops|| || || ||
+
| -funswitch-loops|| Miguel Dizon || || ||
 
|-
 
|-
 
| -fvariable-expansion-in-unroller|| || || ||
 
| -fvariable-expansion-in-unroller|| || || ||

Latest revision as of 19:42, 6 October 2015


Assignment

  1. Select two unrelated compiler options, below, by placing your name in the "Student" column (first come, first served - one student per topic).
  2. During week 3, research the topics and prepare a 3- to 5-minute presentation to teach the class.
  3. Be prepared to teach this presentation during week 4. You may want to draw whiteboard diagrams, use presentation slides, or have a 1-page handout. Please avoid taking more than 5 minutes in total for your presentation.

Deadlines

  • Topic selection: 1:30 pm, Tuesday, September 22 (End of the scheduled Tuesday class in Week 3)
  • Presentation ready: 11:40 am, Tuesday, September 29 (You must be prepared to present before the scheduled Tuesday class in Week 4)

FAQ

  • Q: How much detail should the presentation include?
    • A: Each of these topics is pretty small and straightforward. Provide some type of resource for future reference -- a link to an existing web resource, a 1-page handout, or a blog post or wiki page about the topic. Your presentation should include:
      1. The Option: The compiler option as described in the gcc documentation - What it is and why it is provided.
      2. The Impact: Write and compile code that is impacted by this particular compiler option. Identify the characteristics that must be present in the source code in order to benefit from this compiler option (for example: double-precision math, use of arrays, pointer math). Describe the effect of the option on performance, code size, and code readability. If there are any problems or dangers with this option, identify them.
      3. Recommendation: Make a recommendation on when this compiler option should be used and when it should not be used.
  • Q: How will this be marked?
    • A: In week 4, I will ask you to write a short blog post summarizing your presentation.
  • Q: Can we work with others preparing our topic?
    • A: Yes. In many cases, one topic is complimentary to another topic, and it would be great if you coordinated on your presentations.
  • Q: Are there any classes scheduled during Week 3?
    • A: No. Your professor will be at Linaro Connect. However, the classroom is reserved for our use, and you're welcome to use it to discuss your presentation ideas with classmates.

Topics

Compiler Option Presenter Name (Leave blank) Links to resources (Wiki page, handout, web resources) Link to blog post on this topic
-faggressive-loop-optimizations
-fassociative-math Kevin Paiva
-fauto-inc-dec
-fbranch-probabilities
-fbranch-target-load-optimize
-fbranch-target-load-optimize2
-fbtr-bb-exclusive
-fcaller-saves
-fcheck-data-deps
-fcombine-stack-adjustments
-fconserve-stack
-fcompare-elim Kevin Paiva
-fcprop-registers
-fcrossjumping
-fcse-follow-jumps
-fcse-skip-blocks Joseph Jaku Blog Post
-fdce Joseph Jaku Blog Post
-fdelayed-branch
-fdelete-null-pointer-checks Joel Aro GCC Optimize Options
-fdevirtualize Suk-Joong Han https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
-fdevirtualize-speculatively
-fdse
-fearly-inlining
-fipa-sra
-ffat-lto-objects
-ffast-math Miguel Dizon https://gcc.gnu.org/wiki/FloatingPointMath
-ffinite-math-only
-ffloat-store
-fexcess-precision=style
-fforward-propagate
-ffp-contract=style
-ffunction-sections
-fgcse
-fgcse-after-reload
-fgcse-las
-fgcse-lm
-fgraphite-identity
-fgcse-sm
-fhoist-adjacent-loads
-fif-conversion
-fif-conversion2
-findirect-inlining
-finline-functions Kirill Lepetinskiy GCC Docs Blog Post
-finline-functions-called-once
-finline-limit=n
-finline-small-functions Yehoshua Ghitis
-fipa-cp
-fipa-cp-clone
-fipa-pta
-fipa-profile
-fipa-pure-const
-fipa-reference
-fira-algorithm=algorithm
-fira-region=region
-fira-hoist-pressure
-fira-loop-pressure
-fno-ira-share-save-slots
-fno-ira-share-spill-slots
-fira-verbose=n
-fisolate-erroneous-paths-dereference
-fisolate-erroneous-paths-attribute
-fivopts
-fkeep-inline-functions
-fkeep-static-consts
-flive-range-shrinkage
-floop-block Dmytro Yegorov -floop-block Blog Post
-floop-interchange Dmytro Yegorov -floop-interchange Blog Post
-floop-strip-mine
-floop-nest-optimize
-floop-parallelize-all
-flto
-flto-compression-level
-flto-partition=alg
-flto-report
-flto-report-wpa
-fmerge-all-constants
-fmerge-constants
-fmodulo-sched
-fmodulo-sched-allow-regmoves
-fmove-loop-invariants Gaurav Patel https://en.wikipedia.org/wiki/Loop-invariant_code_motion
-fno-branch-count-reg
-fno-defer-pop Andy Cooc
-fno-function-cse Andy Cooc
-fno-guess-branch-probability
-fno-inline Donald Nguyen
-fno-math-errno
-fno-sched-interblock
-fno-sched-spec
-fno-signed-zeros Suk-Joong Han https://en.wikipedia.org/wiki/Signed_zero
-fno-toplevel-reorder
-fno-trapping-math
-fno-zero-initialized-in-bss
-fomit-frame-pointer
-foptimize-sibling-calls
-fpartial-inlining
-fpeel-loops James Shin
-fpredictive-commoning
-fprefetch-loop-arrays Jayme Laso-Barros GCC 5.2 Manual: Section 3.10
-fprofile-report
-fprofile-correction
-fprofile-dir=path
-fprofile-generate
-fprofile-generate=path
-fprofile-use Ramanan Manokaran
-fprofile-use=path
-fprofile-values
-fprofile-reorder-functions
-freciprocal-math
-free
-frename-registers
-freorder-blocks Ramanan Manokaran
-freorder-blocks-and-partition
-freorder-functions Jayme Laso-Barros GCC 5.2 Manual: Section 3.10
-frerun-cse-after-loop
-freschedule-modulo-scheduled-loops
-frounding-math
-fsched2-use-superblocks
-fsched-pressure
-fsched-spec-load
-fsched-spec-load-dangerous
-fsched-stalled-insns-dep[=n]
-fsched-stalled-insns[=n]
-fsched-group-heuristic
-fsched-critical-path-heuristic
-fsched-spec-insn-heuristic
-fsched-rank-heuristic
-fsched-last-insn-heuristic
-fsched-dep-count-heuristic
-fschedule-insns
-fschedule-insns2
-fsection-anchors
-fselective-scheduling / -fselective-scheduling-2
-fsel-sched-pipelining / -fsel-sched-pipelining-outer-loops
-fshrink-wrap
-fsignaling-nans
-fsingle-precision-constant
-fsplit-ivs-in-unroller
-fsplit-wide-types Shirwa Egal
-fstack-protector / -fstack-protector-all / -fstack-protector-strong
-fstrict-aliasing
-fstrict-overflow
-fthread-jumps
-ftracer
-ftree-bit-ccp
-ftree-builtin-call-dce
-ftree-ccp
-ftree-ch
-ftree-coalesce-inline-vars
-ftree-coalesce-vars
-ftree-copy-prop
-ftree-copyrename
-ftree-dce Gaurav Patel https://en.wikipedia.org/wiki/Dead_code_elimination
-ftree-dominator-opts
-ftree-dse Shirwa Egal
-ftree-forwprop
-ftree-fre
-ftree-loop-if-convert Donald Nguyen
-ftree-loop-if-convert-stores Kirill Lepetinskiy GCC Docs On CMOV Blog Post
-ftree-loop-im
-ftree-phiprop
-ftree-loop-distribution Nitish Bajaj
-ftree-loop-distribute-patterns
-ftree-loop-ivcanon
-ftree-loop-linear
-ftree-loop-optimize
-ftree-loop-vectorize
-ftree-parallelize-loops=n
-ftree-pre
-ftree-partial-pre
-ftree-pta
-ftree-reassoc
-ftree-sink
-ftree-slsr
-ftree-sra
-ftree-switch-conversion
-ftree-tail-merge
-ftree-ter
-ftree-vectorize
-ftree-vrp Nitish Bajaj
-funit-at-a-time
-funroll-all-loops Yehoshua Ghitis
-funroll-loops Joel Aro Loop Unrolling
-funsafe-loop-optimizations
-funsafe-math-optimizations James Shin
-funswitch-loops Miguel Dizon
-fvariable-expansion-in-unroller
-fvect-cost-model
-fvpt
-fweb
-fwhole-program