Difference between revisions of "Winter 2015 SPO600 Platform Specific Code Presentation"

From CDOT Wiki
Jump to: navigation, search
(Topics)
(Topics)
 
(28 intermediate revisions by 20 users not shown)
Line 1: Line 1:
{{Chris Tyler Draft}}[[Category:Winter 2015 SPO600]]
+
[[Category:Winter 2015 SPO600]]
  
 
== 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 one of the topics below by placing your name in the "Student" column (first come, first served - one student per topic).
# During week 5, research the topic and prepare a '''3- to 5-minute''' presentation to teach the answer to the class.
+
# During week 5, research the topic and prepare a '''3- to 5-minute''' presentation to teach the class.
 
# Be prepared to teach this presentation during week 6. 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 6. 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.
  
Line 15: Line 15:
  
 
* 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 enough detail that your colleagues in this course will know what they need to know going forward -- the focus is practical knowledge necessary to understand, modify, and write code. Where appropriate, 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.
+
** A: Each of these topics is pretty small and straightforward. Where appropriate, 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 Issue: A description of the type of platform-specific code that falls into this category - What it is and why programmers write code in this way. Include a short example of actual code.
 +
**# The Problem: When code written in this particular way has problems (e.g., when moved to a platform that has...) and what issues appear (program crashes, wrong results, won't compile, ...). Include bug reports or other evidence of this problem actually surfacing.
 +
**# The Solution: How code can be written in a portable way, avoiding platform-specific issues. Include a short example of actual code that solves the problem in a platform-neutral way. Consider advances in the language standards, [[Compiler Intrinsics]], and [[Compiler Optimizations]] as part of your solution.
  
 
* Q: '''How will this be marked?'''
 
* Q: '''How will this be marked?'''
Line 21: Line 24:
  
 
* Q: '''What about the topics not selected by a student?'''
 
* Q: '''What about the topics not selected by a student?'''
** A: Feel free to grab a second topic if you're interested. [[User:Chris Tyler|I'll]] teach the unclaimed topics.
+
** A: [[User:Chris Tyler|I'll]] teach the unclaimed topics, if there are any.
  
 
* Q: '''Can we work with others preparing our topic?'''
 
* Q: '''Can we work with others preparing our topic?'''
Line 27: Line 30:
  
 
* Q: '''What resources should I use?'''
 
* Q: '''What resources should I use?'''
** A: There are resources on this wiki and on the web (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 5?'''
 
* Q: '''Are there any classes scheduled during Week 5?'''
Line 37: Line 40:
 
!Category!!Topic!!Presenter Name!!Links to resources (Wiki page, handout, web resources)!!Link to blog post on this topic
 
!Category!!Topic!!Presenter Name!!Links to resources (Wiki page, handout, web resources)!!Link to blog post on this topic
 
|-
 
|-
|Access to features not available in some versions of C / C++||Atomic operations|| || ||  
+
|Access to features not available in some versions of C / C++||Atomic operations|| Thana Annis || ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||Memory barriers|| || ||  
+
|Access to features not available in some versions of C / C++||Memory barriers|| Cha Li|| ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||Low-level device access|| || ||  
+
|Access to features not available in some versions of C / C++||Low-level device access||James Boyer || ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||Interrupt handling|| || ||  
+
|Access to features not available in some versions of C / C++||Interrupt handling|| Jan Ona || ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||Cryptographic instructions|| || ||  
+
|Access to features not available in some versions of C / C++||Cryptographic instructions|| Gary Chau || ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||Single instruction multiple data (SIMD) instructions|| || ||  
+
|Access to features not available in some versions of C / C++||Single instruction multiple data (SIMD) instructions||Bradly Hoover || ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||Run-time CPU feature identification (cpuid)|| || ||  
+
|Access to features not available in some versions of C / C++||Run-time CPU feature identification (cpuid)|| Bruno Pereira|| ||  
 
|-
 
|-
|Access to features not available in some versions of C / C++||High-resolution counter access|| || ||  
+
|Access to features not available in some versions of C / C++||High-resolution counter access|| Danylo Medinski || ||  
 
|-
 
|-
 
|Assumptions about the system which can vary between architectures||Default size of variable types|| Artem Luzyanin|| ||  
 
|Assumptions about the system which can vary between architectures||Default size of variable types|| Artem Luzyanin|| ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Equivalence between variable types (e.g., int and long)|| || ||  
+
|Assumptions about the system which can vary between architectures||Equivalence between variable types (e.g., int and long)|| Alfred Tsang|| ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Layout of arrays in memory|| || ||  
+
|Assumptions about the system which can vary between architectures||Layout of arrays in memory|| Hosung Hwang|| ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Alignment requirements|| || ||  
+
|Assumptions about the system which can vary between architectures||Alignment requirements|| Nicolas Ramkay|| ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Endianness (order of data stored in memory)|| || ||  
+
|Assumptions about the system which can vary between architectures||Endianness (order of data stored in memory)||Yan Song || ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Direction of stack growth|| || ||  
+
|Assumptions about the system which can vary between architectures||Direction of stack growth|| Alan Lam || ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Target triplet|| || ||  
+
|Assumptions about the system which can vary between architectures||Target triplet|| Justin Grice|| ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Jiffies per second|| || ||  
+
|Assumptions about the system which can vary between architectures||Jiffies per second|| Stephen Ruthland || ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||Page size|| || ||  
+
|Assumptions about the system which can vary between architectures||Page size|| Hong Zhan Huang || Refer to blog post for sources used || https://joulecpa.wordpress.com/2015/02/28/spo600-page-size-presentation/
 
|-
 
|-
 
|Assumptions about the system which can vary between architectures||Pointer size vs. integer size|| Liam Martin || ||  
 
|Assumptions about the system which can vary between architectures||Pointer size vs. integer size|| Liam Martin || ||  
 
|-
 
|-
|Assumptions about the system which can vary between architectures||FPU rounding|| || ||  
+
|Assumptions about the system which can vary between architectures||FPU rounding|| Max LeFevre || ||
 +
|-
 +
|Assumptions about the system which can vary between architectures||Cost of alignment fixups||Dawood Shirzada || ||
 +
|-
 +
|Assumptions about the system which can vary between architectures||Memory controller design || || ||
 +
|-
 +
|Assumptions about the system which can vary between architectures||Syscall numbering || Anson Tang || ||
 
|-
 
|-
 
|}
 
|}

Latest revision as of 15:14, 28 February 2015


Assignment

  1. Select one of the topics below by placing your name in the "Student" column (first come, first served - one student per topic).
  2. During week 5, research the topic and prepare a 3- to 5-minute presentation to teach the class.
  3. Be prepared to teach this presentation during week 6. 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: 9:50 am, Tuesday, February 10 (End of the scheduled Tuesday class in Week 5)
  • Presentation ready: 8:00 am, Tuesday, February 17 (You must be prepared to present before the scheduled Tuesday class in Week 6)

FAQ

  • Q: How much detail should the presentation include?
    • A: Each of these topics is pretty small and straightforward. Where appropriate, 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 Issue: A description of the type of platform-specific code that falls into this category - What it is and why programmers write code in this way. Include a short example of actual code.
      2. The Problem: When code written in this particular way has problems (e.g., when moved to a platform that has...) and what issues appear (program crashes, wrong results, won't compile, ...). Include bug reports or other evidence of this problem actually surfacing.
      3. The Solution: How code can be written in a portable way, avoiding platform-specific issues. Include a short example of actual code that solves the problem in a platform-neutral way. Consider advances in the language standards, Compiler Intrinsics, and Compiler Optimizations as part of your solution.
  • Q: How will this be marked?
    • A: In week 6, I will ask you to write a short blog post summarizing your presentation.
  • Q: What about the topics not selected by a student?
    • A: I'll teach the unclaimed topics, if there are any.
  • 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: What resources should I use?
  • Q: Are there any classes scheduled during Week 5?
    • 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

Category Topic Presenter Name Links to resources (Wiki page, handout, web resources) Link to blog post on this topic
Access to features not available in some versions of C / C++ Atomic operations Thana Annis
Access to features not available in some versions of C / C++ Memory barriers Cha Li
Access to features not available in some versions of C / C++ Low-level device access James Boyer
Access to features not available in some versions of C / C++ Interrupt handling Jan Ona
Access to features not available in some versions of C / C++ Cryptographic instructions Gary Chau
Access to features not available in some versions of C / C++ Single instruction multiple data (SIMD) instructions Bradly Hoover
Access to features not available in some versions of C / C++ Run-time CPU feature identification (cpuid) Bruno Pereira
Access to features not available in some versions of C / C++ High-resolution counter access Danylo Medinski
Assumptions about the system which can vary between architectures Default size of variable types Artem Luzyanin
Assumptions about the system which can vary between architectures Equivalence between variable types (e.g., int and long) Alfred Tsang
Assumptions about the system which can vary between architectures Layout of arrays in memory Hosung Hwang
Assumptions about the system which can vary between architectures Alignment requirements Nicolas Ramkay
Assumptions about the system which can vary between architectures Endianness (order of data stored in memory) Yan Song
Assumptions about the system which can vary between architectures Direction of stack growth Alan Lam
Assumptions about the system which can vary between architectures Target triplet Justin Grice
Assumptions about the system which can vary between architectures Jiffies per second Stephen Ruthland
Assumptions about the system which can vary between architectures Page size Hong Zhan Huang Refer to blog post for sources used https://joulecpa.wordpress.com/2015/02/28/spo600-page-size-presentation/
Assumptions about the system which can vary between architectures Pointer size vs. integer size Liam Martin
Assumptions about the system which can vary between architectures FPU rounding Max LeFevre
Assumptions about the system which can vary between architectures Cost of alignment fixups Dawood Shirzada
Assumptions about the system which can vary between architectures Memory controller design
Assumptions about the system which can vary between architectures Syscall numbering Anson Tang