From 3fd219b51eb1a8efce4884ee6474ad5cf2dd6e51 Mon Sep 17 00:00:00 2001 From: Kangning Li Date: Mon, 10 Oct 2016 23:13:12 -0400 Subject: [PATCH 1/3] added EXTRACREDIT.md --- EXTRACREDIT.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 EXTRACREDIT.md diff --git a/EXTRACREDIT.md b/EXTRACREDIT.md new file mode 100644 index 0000000..1196316 --- /dev/null +++ b/EXTRACREDIT.md @@ -0,0 +1,81 @@ + Path Tracer Extra Credit: Optimizations +======================== + +This week (10/10/2016 - 10/16/2016) you will have the opportunity to add some additional optimizations to your pathtracer, based on [concepts discussed in lecture](https://github.com/CIS565-Fall-2016/cis565-fall-2016.github.io/blob/master/lectures/5-CUDA-Performance.pdf): +- Warp Partitioning +- Memory Coalescing +- Overcoming Bank Conflicts in Shared Memory +- Dynamic Resource Partitioning (more fine grained kernel launch tuning) +- Data Prefetching +- Instruction Mixing (to hide latency for sharing Special Function Units) +- Loop Unrolling +- Modified Thread Granularity + +We don't necessarily know where you will find these tools handy, so spend some +time thinking about ways they may fit in your implementation. To give you more +material to work with, you may work on adapting your own stream compaction code +from Project 2 into the Pathtracer so you can also optimize/analyze that. + +If you haven't done so already, we also encourage you to implement shared-memory +stream compaction for the sake of investigating bank conflicts. + +This is also your time to impress anyone who might look at your project, so +feel free to tackle algorithmic optimizations as well, including acceleration +features you saw in the standard assignment but didn't want to tackle due to +time constraints. If in doubt as to whether or not a feature counts as an +"optimization," please ask in the [Google Group](https://groups.google.com/forum/#!forum/cis-565-fall-2016). + +## `git`ing Started +In your project directory, open a new branch off the branch you used for your +submission pull request: + +`git checkout -b YourBranchNameHere` + +The `-b` instructs git to open a new branch named "YourBranchNameHere" and +switch your project directory over to this branch. Commit your work as usual, +and when you're ready push it to Github with: + +`git push origin YourBranchNameHere` + +To switch back to your submission branch (for most of you, the `master` branch): + +`git checkout master` + +When switching branches you may need to `commit` your current changes, or discard +them with `git checkout .` if you don't want them. +You can also `git stash` if you just want to temporarily hop to another branch, +and `git stash apply` when you want your changes back. + +You can also `git diff` between branches to see how your code has changed. + +Commit working code early and often. You never know when you will have to revert +your entire project directory to an earlier state. + +## Presenting Your Findings +Please describe what you did in a separate OPTMIZATION.md. +For credit, every optimization should come with: +- a brief explanation of what you did and where to look in your code +- before-and-after performance comparisons +- explanation of any observed changes +- additional Nsight data where appropriate (register counts, occupancy, etc.) + +Your optimizations do NOT have to be successful. However, please prepare a +detailed analysis of what you were trying to do and what you think went wrong +for credit. + +## Submission +This is due midnight, Sunday 10/16/2016. + +In your own repo, open a new pull request from your optimization branch into +the branch you submitted (typically master). +Use the usual submission template in the comment section: +* [Repo Link](https://link-to-your-repo) +* `Your PENNKEY` +* (Briefly) mention features/optimizations that you've completed: + * Optimization 0 + * Optimization 1 + * ... + +Also EMAIL this header to the TAs with a link to the pull request. +Opening a pull request into your own submission branch will help us see what +you have changed. From 1eb66d58c9ad1ebccf1fbdc22d81ea8ba3ea1814 Mon Sep 17 00:00:00 2001 From: likangning93 Date: Tue, 11 Oct 2016 10:52:07 -0400 Subject: [PATCH 2/3] updated date --- EXTRACREDIT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EXTRACREDIT.md b/EXTRACREDIT.md index 1196316..cda8c5c 100644 --- a/EXTRACREDIT.md +++ b/EXTRACREDIT.md @@ -1,7 +1,7 @@ Path Tracer Extra Credit: Optimizations ======================== -This week (10/10/2016 - 10/16/2016) you will have the opportunity to add some additional optimizations to your pathtracer, based on [concepts discussed in lecture](https://github.com/CIS565-Fall-2016/cis565-fall-2016.github.io/blob/master/lectures/5-CUDA-Performance.pdf): +This week (ending 10/16/2016) you will have the opportunity to add some additional optimizations to your pathtracer, based on [concepts discussed in lecture](https://github.com/CIS565-Fall-2016/cis565-fall-2016.github.io/blob/master/lectures/5-CUDA-Performance.pdf): - Warp Partitioning - Memory Coalescing - Overcoming Bank Conflicts in Shared Memory From b68143ae59eaf74ea9b8c90cbe6c3690b3314d33 Mon Sep 17 00:00:00 2001 From: likangning93 Date: Tue, 11 Oct 2016 16:06:53 -0400 Subject: [PATCH 3/3] changed some wording, added EC point projections --- EXTRACREDIT.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/EXTRACREDIT.md b/EXTRACREDIT.md index cda8c5c..7ec210a 100644 --- a/EXTRACREDIT.md +++ b/EXTRACREDIT.md @@ -1,7 +1,9 @@ Path Tracer Extra Credit: Optimizations ======================== -This week (ending 10/16/2016) you will have the opportunity to add some additional optimizations to your pathtracer, based on [concepts discussed in lecture](https://github.com/CIS565-Fall-2016/cis565-fall-2016.github.io/blob/master/lectures/5-CUDA-Performance.pdf): +This week (ending 10/16/2016) you will have the opportunity to add some additional +optimizations to your pathtracer. This is 100% optional! +Optimizations will mostly be based on [concepts discussed in lecture](https://github.com/CIS565-Fall-2016/cis565-fall-2016.github.io/blob/master/lectures/5-CUDA-Performance.pdf): - Warp Partitioning - Memory Coalescing - Overcoming Bank Conflicts in Shared Memory @@ -11,10 +13,10 @@ This week (ending 10/16/2016) you will have the opportunity to add some addition - Loop Unrolling - Modified Thread Granularity -We don't necessarily know where you will find these tools handy, so spend some -time thinking about ways they may fit in your implementation. To give you more -material to work with, you may work on adapting your own stream compaction code -from Project 2 into the Pathtracer so you can also optimize/analyze that. +Spend some time thinking about ways these tools may fit in your implementation. +To give you more material to work with, you may work on adapting your own +stream compaction code from Project 2 into the Pathtracer so you can also +optimize/analyze that. If you haven't done so already, we also encourage you to implement shared-memory stream compaction for the sake of investigating bank conflicts. @@ -25,6 +27,9 @@ features you saw in the standard assignment but didn't want to tackle due to time constraints. If in doubt as to whether or not a feature counts as an "optimization," please ask in the [Google Group](https://groups.google.com/forum/#!forum/cis-565-fall-2016). +A thorough exploration of any single optimization area will be worth 5 points. +Larger algorithmic changes with analysis will generally be worth 10 points. + ## `git`ing Started In your project directory, open a new branch off the branch you used for your submission pull request: