Difference between revisions of "Winter 2015 SPO600 Platform Specific Code Presentation"
Chris Tyler (talk | contribs) |
(→Topics) |
||
(30 intermediate revisions by 22 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[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 | + | # 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 | + | ** 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: | + | ** 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 | + | ** 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|| || || | + | |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|| || || | + | |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
Contents
Assignment
- 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 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.
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:
- 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.
- 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:
- 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?
- A: There are resources on the web as well as on this wiki (for example, see the Assembly Language category on this wiki).
- 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 |