User Tools

Site Tools


projects:gpu_exploration

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
projects:gpu_exploration [2013/12/18 16:48]
nceghtebas [Why I did it]
projects:gpu_exploration [2013/12/19 22:19] (current)
nceghtebas [Work Plan reflection]
Line 1: Line 1:
 ===== GPU Exploration:​ : A Learn and Teach Final Project ===== ===== GPU Exploration:​ : A Learn and Teach Final Project =====
  
 +By Chloe Eghtebas
 +
 +Note: I took advantage of the write up being on the wiki. Each link embedded in the text is a part of my write up so be sure to click on them all! Click on [[gpu_exploration:​ my documentation]] to start! ​
 ==== What I did ==== ==== What I did ====
  
Line 7: Line 10:
 This involved everything from getting the correct drivers installed and the developing environment up and running to understanding and implementing some GPU code and doing something useful (or cool) with it. In writing the code I also found it helpful to have some understanding of the GPU architecture or hardware implementation. ​ This involved everything from getting the correct drivers installed and the developing environment up and running to understanding and implementing some GPU code and doing something useful (or cool) with it. In writing the code I also found it helpful to have some understanding of the GPU architecture or hardware implementation. ​
  
-I have planned on teaching peers about the topics I had researched into through ​the below documentation. This includes information about the "​important"​ aspects of the GPU hardware, difference in coding specifically for GPU versus just regular C/​C++, ​and built upon that by explaining how to run simple example code.+I have planned on teaching peers about the topics I had researched into through ​[[gpu_exploration:​ my documentation]]. This includes information about the "​important"​ aspects of the GPU hardware, difference in coding specifically for GPU versus just regular C/C++, built upon that by explaining how to run simple example code, and why GPU's are super awesome in the first place.
  
 ==== Why I did it ==== ==== Why I did it ====
  
-==Work in progress beyond ​this point==+I chose this topic after an interesting conversation I had had with someone I looked up to this past Thanksgiving break. This is when I had realized that I must know more about GPUs. To be able to understand emerging technology and also to get my foot in the door. While doing my project, I began to realize even more how important GPUs are.  
 + 
 +"The world is going parallel!"​ There are many current and future applications for harnessing GPUs power of computation. It just touches and befits so many different fields. Essentially,​ with more computational power, we are a step closer at unveiling some of the universes mysteries.  
 + 
 +These following links show why I found GPUs to be interesting:​ 
 + 
 +http://​nvidianews.nvidia.com/​Releases/​Researchers-Deploy-GPUs-to-Build-World-s-Largest-Artificial-Neural-Network-9c7.aspx 
 + 
 + 
 +==== How I did it and How you can too ==== 
 + 
 +Basically, I taught myself from the various resources I found online (helpful or not). Since I did more of a learn and teach project, reading through [[gpu_exploration:​ my documentation]] will tell you how to do as much as I could figure out to do in this time.  
 + 
 +Code is included throughout the wiki pages. ​  
 + 
 +A list of difficulties and ‘gotchas’ while doing this project  
 +  * CUDA environment set up 
 +  *  
 + 
 +=== A possible TODO to extend the depth of the project=== 
 + 
 +Chug on learning about GPU's. What is left to do is go back over everything and make it more intuitive and less abstract. Especially since this document requires some prior programming experience and it builds on the fundamentals learned in computer architecture this semester, a technically competent but not experienced person may still have some trouble here and there. In fact, one of the most difficult and time consuming parts of my project was writing it up in a way that would make sense to people other than just me. This may have been due to me not understanding everything at the level I was supposed to. As Einstein once said "If you can't explain it simply, you don't understand it well enough."​ 
 + 
 +Hopefully the audience will leave this document with a better understanding of GPU's overall.  
 + 
 +==== Work Plan reflection==== 
 + 
 +Project Schedule: 
 + 
 +Today (12/2/13) through Friday (12/7/13): Setup necessary environment and get as much sample code running including playing around with the different types of libraries. 
 + 
 +Reality: Environment was not fully set up by this time (possibly installed something incorrectly). I did get sample code running through a web CUDA environment emulator through the Udacity Introduction to Parallel Programming Course. 5+ hours for silly installs and setting up. 
 + 
 +By Friday (12/7/13) (10 hrs): Have idea of what code I could implement on GPU  by putting together the sample code in preparation for demoing cool aspects of the GPU. 
 + 
 +Reality: (10-ish hrs only a few which were fruitful) I still didn't know the specifics but I knew that it would involve image manipulation or processing of some sort. 3 hrs for the first Udacity lecture (included pauses for me to google GPU things) 1+ hr for hw. I thought would have more code done by now though...  
 + 
 +By Monday (12/10/13) (5 hrs): Have (first draft) of GPU lesson/​paper write up or power point/ video. 
 + 
 +Reality: (0 hrs at this time but it eventually took me 3+ hrs to put lecture stuff together and practice and do more write up stuff.) This happened a week later. Link to my lecture which I presented during Demos: https://​docs.google.com/​presentation/​d/​1NES0bAm9jxaOL4bJg8l-u4YT1W42-Vagd6c48s8__fs/​edit#​slide=id.p 
 + 
 +By Thursday (12/12/13) (3 hrs): Finish write up/ video lesson of how awesome GPU’s are.
  
-[[syntax#​internal|Hi]]+Reality: Didn't happen on time as well. I am currently doing my write up now (12/18/13) in the sense that I am putting up everything I had written up on the wiki. 
  
-[[gpu_explorationtest link]]+By Sunday (12/15/13) (7 hrs max)GPU demo code freeze.
  
-[[syntax#​internal|Hi]]+Reality: My code had been frozen for a while. Better yet, my code is still frozen with a bug in it. 
  
-=== Flynn'​s Taxonomy ===+By Wednesday (12/18/13) (4 hrs): Be done with everything (Including optional code I may decide to write that is different from that of what I had decided on Friday the 7th) and turn in project (optimistically).
  
-Flynn'​s Taxonomy is a type of classification that describes the main types of computer architectureIt can be easily summarized in the table below.+Reality: Was too optimisticNow I must be sad
  
-|              ^ Single Instruction ​(SI    ^ Multiple Instruction ​(MI   ^ +Due (12/19/13) (max 40 hrs  spent on project)
-^ Single Data (SD)    | SISD          | MISD                    | +
-^ Multiple Data (MD)  | SIMD          | MIMD                    |+
  
-Single or multiple instruction refers to whether the instructions or program could tell the processing unit to do multiple tasks at once. Single or multiple data refers whether there are multiple streams of data or just a single one+Reality: About right with an error  plus minus 5 hrs
  
-Examples of the above categories of architectures are: 
  
-  * SISD- Old school uniprocessor computers. ​ 
-  * SIMD- GPU'​s!! 
-  * MISD- A Space Shuttle computer ​ 
-  * MIMD- the ultimate parallelization machine (multi-core superscalar processor) 
  
projects/gpu_exploration.1387403329.txt.gz · Last modified: 2013/12/18 16:48 by nceghtebas