Main introduction about what multicore is. Take the old English paper as reference!
The reasons why the CPU manufactures change from single core to multicore.
Research intro. Talking about what my purpose is, how I test and justify my results, and what application, programming models, and host machine I will use. (PS. Application -> large dimension matrix; Programming models -> Sequoia, Cellgen; Host machine -> PS3)
Introduce PS3 with its memory size, CPU, and what OS we use for. (PS. Main memory -> 256MB; CPU -> Cell Broad Engine; OS -> Yellow Dog Linux) Don’t forget to mention that Cell SDK is necessary for developing Cell CPU!Picture for YDL: http://elhabib.at/files/2008/07/yellowdog-vorlage_p1.jpg Picture: http://scawley.files.wordpress.com/2008/03/sony_playstation_3_60gb_game_console__brand_new.jpg
Application is a series of matrix multiplication. Also, put the reason why I choose matrix multiplication to be my application. Picture: http://upload.wikimedia.org/wikipedia/en/thumb/e/eb/Matrix_multiplication_diagram_2.svg/313px-Matrix_multiplication_diagram_2.svg.png
Brief introduction about Sequoia. Major points -> explicit local storage management, mapping a tree structure as a memory hierarchy, and major programming points(inner, leaf, and ext tasks).Picture tree structure: http://www.stanford.edu/group/sequoia/cgi-bin/node/182Sequoia logo: http://www.stanford.edu/group/sequoia/cgi-bin/
Connect to matrixmult.sq, matrixmult_ps3_mapping.xml, and main.cc files here and explain briefly. Then, talk about how I feel during the process. (Basic idea -> good documentation and adaptability for different purpose, but programmer has to handle much more in detail!) Also remind that five files are required to use Sequoia: two Makefile files (for compile purpose), xxx.sq code (main program), xxx.xml (for mapping purpose), main.cc (for execution purpose)
Introduction about Cellgen. Major points: C/C++ based software tool, implicit local storage management, OpenMP-like support. (PS. OpenMP needs to be explained -> orally brief explanation; use http://openmp.org/wp/about-openmp/ as reference!!) Author photo: http://people.cs.vt.edu/~scschnei/pictures/scott.jpgOpenMP logo: http://openmp.org/wp/openmp_336x120.gif
Put matrixmult.cellgen and double16b_t.h files here and explain briefly. Also mention that the problem of lack of documentation and the problem the author said.
Put the overall result table here and “explain”. Do not say too much here, analysis will be left on later slides!
Put the result graph here and “explain”. Do not say too much here.
The line chart about
Just leave the “important” partial data here and explain my analysis. Major point: how fast can Sequoia reach, Sequoia and Cellgen limit of the physical main memory which only has 256MB, and the unexpected poor performance of Cellgen (maybe some potential overhead draw back the overall performance).
Multicore processing is art!
Reference list: form old EN paper, from OpenMP website, from Cellgen author websites, from Sequoia websites, the IEEE magazine.
Questions be prepared!http://www.cmoe.com/blog/wp-content/images/question-mark.jpg
What’s Multicore? <br />Multiple cores in a single chip<br />Improving performance by adding core<br />Became the main stream in recent years<br /> - Examples <br /> - Core 2 dual, Core 2 Quad, Core-i3/5/7 Intel<br /> - Athlon II X2, Phenom II X4, Opteron AMD<br /> - Cell Broad Engine IBM<br />
Why Multicore?<br />The difficulties of single core processor’s development<br /> - Overheat<br /> - Energy consumption<br /> - Electron leakage<br /> - Example<br /> - Intel abandoned the project of 4GHz processor <br /> in fall 2004 <br />Multicore processor resolve these problem and has better performance<br />
Research Introduction<br />Purpose: <br /> - To see the performance difference between <br /> single core and multicore processors<br />How: <br /> - Use the PS3 as the host machine<br /> - Use the CPU of PS3 to execute a series of <br /> matrix multiplication<br /> - Execute with single core <br /> - Execute with multicore<br /> - programming tools are needed for handling <br /> cores<br /> - Record the time and analysis the performance<br />
Play Station 3<br />Physical Components<br />CPU: Cell Broad Engine<br />Memory: 256MB<br />Storage: 80GB<br />Software <br />Yellow Dog Linux<br />Cell SDK<br />
Cell Broad Engine Processor<br />Developed by Sony, Toshiba, and IBM jointly.<br />Multicore structure<br /> - Power Processing Element x 1<br /> (PPE)<br /> - Like a traditional processor<br /> - It has its own L1, L2 cache<br /> - Synergistic Processing Element x 8<br /> (SPE)<br /> - Can be used synchronously<br /> - It has 256KB local storage<br />
Matrix Multiplication<br />Simple but time consuming<br />Some assumptions are made for research purpose<br /> - Dimension is set to N2 <br /> - Data type is set to double<br /> - Only even numbers are <br /> applied<br />
Sequoia<br /><ul><li>An explicit multicore programming model
Programming in Sequoia<br />To programming in Sequoia, four files are required to run the matrix multiplication.<br /> - “Makefile” for compiling<br /> - “matrixmult.sq” Sequoia program<br /> - “mapping_ps3.xml” for mapping <br /> - “main.cc” for starting <br />During the process<br /> - Good documentation<br /> - Good adaptability for different purposes<br /> - Details need to be handled by programmers<br />
Cellgen<br />An implicit multicore programming model<br />C/C++ based programming tool<br />Like OpenMP style<br /> - OpenMP API<br />Basic idea<br /> - Starts after “#pragma cell”<br /> - Parameters<br /> - public: shared by SPEs<br /> - private: each SPE has a copy<br />Scott Schneider<br />Ph.D. Candidate Virginia Tech <br />
Programming in Cellgen<br />There are files needed to run matrix multiplication<br /> - Two “Makefile” for compiling<br /> - One “matrixmult.cellgen” Cellgen code<br /> - One “double16b_t.h” for padding column data<br /> - suggested by the author to improve performance<br />During the process<br /> - Understandable<br /> - C/C++ based; easy to catch up.<br /> - Lack of documentation<br /> - Only “Readme” file is available.<br />
Result in Table<br />The following is the table for the execution time of PPE only, SPE with Sequoia, and SPE with Cellgen.<br /><ul><li>3 x 8 x 3264x 3264 ≈ 256 MB</li></ul> - Oversize matrix will be swapped between disk <br />and main memory.<br /><ul><li>Can’t get result of Cellgen from size 3072 to 4096.</li></ul> - Either no response or bus error.<br />
Result in Graph (1)<br />The following is the line chart generated from the<br />data of the table.<br />Memory size limit<br />PPE Only<br />Cellgen<br />Sequoia<br />
Result Analysis<br />Performance of Cellgen<br /> - Unexpected overhead or runtime error may <br /> occur and throw the performance back.<br />Performance of Sequoia<br /> - According to the stable record, it is about 8 <br /> times faster than the execution time of PPE. <br /> - Although the memory size is 256MB, <br />performance starts dropping down after 2048 2.<br /> - The performance becomes the same with PPE <br />after reaching 4096 2 .<br /> - Probably the most of the data are swapped <br /> with disk, which is out of the Sequoia’s ability.<br />
Conclusion<br />Multicore processor has better performance than single core processor, which is about 8 times faster if the memory space is sufficient.<br />Multicore may also have some unexpected overhead or error, which may draw back the performance like what I have in Cellgen. <br />Multicore processing is art. <br /> - In the paper “ Programming Multiprocessors With <br /> Explicitly Managed Memory Hierarchies,” Cellgen <br /> has better performance than Sequoia does. However, <br /> Cellgen doesn’t do well like Sequoia in this<br /> research. <br />
Reference<br />http://elhabib.at/files/2008/07/yellowdog-vorlage_p1.jpg <br />http://scawley.files.wordpress.com/2008/03/sony_playstation_3_60gb_game_console__brand_new.jpg<br />http://www.5ilight.com/dianzi/upimg/20070222/11H154H0L05A08.jpg<br />http://moss.csc.ncsu.edu/~mueller/cluster/ps3/cell.jpg<br />http://upload.wikimedia.org/wikipedia/en/thumb/e/eb/Matrix_multiplication_diagram_2.svg/313px-Matrix_multiplication_diagram_2.svg.png<br />http://www.stanford.edu/group/sequoia/cgi-bin/node/182<br />http://www.stanford.edu/group/sequoia/cgi-bin/<br />http://openmp.org/wp/about-openmp/<br />http://people.cs.vt.edu/~scschnei/pictures/scott.jpg<br />http://openmp.org/wp/openmp_336x120.gif <br />http://www.ibm.com/developerworks/power/library/pa-cellperf/<br />Ramanathan, R. M. “Intel® Multi-Core Processors: Making the Move to Quad-Core and Beyond.” Intel Multi-CoreProcessors. pp.3, 15 November 2008 http://www.intel.com/technology/architecture/downloads/quad-core-06.pdf .<br />Sutter, Hurb. “The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software.” Dr. Dobb’s Journal, 30(3), March 2005 < http://lyle.smu.edu/~coyle/cse8313/handouts/Free.lunch.over.pdf>.<br />http://www.stanford.edu/group/sequoia/cgi-bin/<br />http://github.com/scotts/cellgen/<br />http://en.wikipedia.org/wiki/Cell_(microprocessor)<br />Martin Linklater. "Optimizing Cell Code". Game Developer Magazine, April 2007: pp. 15–18. "To increase fabrication yelds, Sony ships PlayStation 3 Cell processors with only seven working SPEs. And from those seven, one SPE will be used by the operating system for various tasks, This leaves six SPEs for game programmer to use.“<br />Scott Schneider, Jae-SeungYeom and Dimitrios S. Nikolopoulos. Programming Multiprocessors With Explicitly Managed Memory Hierarchies. IEEE Computer, December, 2009.<br />