<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dapatel2</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dapatel2"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Dapatel2"/>
	<updated>2026-05-06T18:18:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74971</id>
		<title>CSC/ECE 506 Spring 2013/11b ll</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74971"/>
		<updated>2013-04-18T12:30:09Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Previous Versions&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_DJ Wiki1 ]&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/Scalable_Coherent_Interface Wiki2 ]&lt;br /&gt;
&lt;br /&gt;
== '''Supplemental to Chapter 11: SCI Cache Coherence''' ==&lt;br /&gt;
&lt;br /&gt;
This is intended to be a supplement to Chapter 11 of [[#References | Solihin ]], which deals with Distributed Shared Memory (DSM) in Multiprocessors.  In the book, the basic approaches to DSM are discussed, and a directory based cache coherence protocol is introduced.  This protocol is in contrast to the bus-based cache coherence protocols that were introduced earlier.  This supplemental focuses on a specific directory based cache coherence protocol called the Scalable Coherent Interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction: What is the Scalable Coherent Interface? ==&lt;br /&gt;
&lt;br /&gt;
The Scalable Coherent Interface (SCI) is an ANSI/IEEE protocol to provide fast point-to-point connections for high-performance multiprocessor systems [[#References | (&amp;quot;IEEE Standards Association&amp;quot;) ]].  It works with both shared memory and message passing and was approved in 1992. In the 1980's, as processors were getting faster and faster, they were beginning to outpace the speed of the bus.  SCI was created to provide a non-bus based interconnection protocol.  It was intended to be scalable, meaning it can work with few or many multiprocessors.     &lt;br /&gt;
&lt;br /&gt;
== SCI Cache Coherence ==&lt;br /&gt;
SCI utilizes a directory based cache coherence protocol similar to what is describe in Chapter 11 of [[#References | Solihin (2008)]]. Instead of cache coherence being handled by caches snooping for interactions on a bus, a directory manages the coherence of each individual cache by creating a doubly-linked list of the caches that are sharing a particular block of memory.   The directory maintains a state for the block in memory, and a pointer to the first cache that is on the shared list.  The first cache in the list is the cache for the processor that most recently accessed the block of memory.  When the &amp;quot;head&amp;quot; of the list modifies the block of memory, they have to notify main memory that they now have the only clean copy of the data.  This head cache must also notify the next cache in the shared list so that the cache can invalidate their copy.  The information then propagates from there.   &lt;br /&gt;
&lt;br /&gt;
The structure for SCI is fairly complicated and can lead to a number of race conditions.&lt;br /&gt;
&lt;br /&gt;
== Coherence Race Conditions ==&lt;br /&gt;
There are many different instances in the SCI cache coherence protocol where race conditions are handled in such a way they are a non-issue.  For instance, in SCI only the head node in the link list of sharers is able to write to the block.  All sharers, including the head, can read.  Suppose we have two nodes, N1 and N2, with both nodes sharing a cached block.  N1 is the head of the linked list while N2 is the tail of the linked list.  If N2 wants to write a value to the cached block, the node must do it in a series of steps.  First N2 detaches itself from the linked list by updating N1's NEXT pointer.  Since N2 is no longer a sharer, the node must invalidate its cached copy to prevent a race condition (N1 writes to block while N2 holds an out-of-date version of the block).  Then N2 has to re-request the block from the directory with intent to write data.  The directory then processes N2's request and N2 swaps out the current head's pointer (N1) with its own, making it the new head.  N2 then uses the pointer to N1 to invalidate all sharers.  In this case N1 is the only sharer [[#References | (Gustavson, and Li 56) ]].  This allows the SCI protocol to keep write exclusivity.  Write exclusivity mean only one write can be performed to a give block at a time.  Without write exclusivity, each node sharing the block would be able to write to the block, allowing for multiple writes to happen simultaneously.  If each cache wrote simultaneously, every cache sharing the block would get invalidated, including the head.  Also the block in memory might not posses the correct value.  In order for this to be implemented, there needs to be special states for the head, middle, and tail of the linked list.  Also there needs to be states that determine the read/write capabilities of the nodes.  Table 1 shows how this scenario would look using a simplistic version of SCI discussed later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;| Table 1: Maintaining Write Exclusivity&lt;br /&gt;
|----&lt;br /&gt;
!Action&lt;br /&gt;
!State N1&lt;br /&gt;
!State N2&lt;br /&gt;
!State Directory&lt;br /&gt;
!Head Node&lt;br /&gt;
!Comments&lt;br /&gt;
|----&lt;br /&gt;
| - &lt;br /&gt;
|Sh&lt;br /&gt;
|St&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Initial State&lt;br /&gt;
|----&lt;br /&gt;
|W2&lt;br /&gt;
|Sh&lt;br /&gt;
|I&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Node 2 wants to write&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|I&lt;br /&gt;
|M&lt;br /&gt;
|EM&lt;br /&gt;
|N2&lt;br /&gt;
|N2 becomes new head invalidating N1&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another scenario described in 11.4.1 of the Solihin textbook is when a cache is in state M and the directory is in state EM for a given block.  If the cache holding the block flushes the value and the value does not make it to the directory before a read request is made, then there can be a potential race condition.  The race condition is handled by the use of pending states.  When the cache flushes a block, the line transitions from state M to a pending state.  The pending state transitions into the invalid state only when the directory has acknowledged receiving the flush.  This allows the cache to stall any read request made to the block until the block enters the steady state of I [[#References | (Solihin)]].&lt;br /&gt;
&lt;br /&gt;
== SCI States ==&lt;br /&gt;
&lt;br /&gt;
=== Directory States ===&lt;br /&gt;
In SCI, the directory and each cache maintain a series of states. The directory states define the state of the memory block from the perspective of the home directory.  This 2-bit field is maintained in the memory tag by the home directory along with the pointer to the head of the sharing list (forwId). The simple state model below includes three stable states and one semi-stable state.&lt;br /&gt;
&lt;br /&gt;
The directory can be in one of three states or a transitional state:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Table 1: Memory States &lt;br /&gt;
|----&lt;br /&gt;
!State )&lt;br /&gt;
!Description&lt;br /&gt;
!Minimal&lt;br /&gt;
!Typical&lt;br /&gt;
!Full&lt;br /&gt;
|----&lt;br /&gt;
|HOME or UNCACHED (U&lt;br /&gt;
|no sharing list&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|FRESH or SHARED (S)&lt;br /&gt;
|sharing-list copy is the same as memory&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|GONE  or EXCLUSIVE/MODIFIED (EM)&lt;br /&gt;
|sharing-list copy may be different from memory&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|WASH*&lt;br /&gt;
|transitional state (GONE to FRESH)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the directory has the block of memory in the GONE or EM state, then the directory must forward any incoming read/write requests for the block to the last cache that modified the block.  That cache is responsible for updating main memory and the block that requested the data. This is why the directory must maintain a pointer to the first cache in the cache list.&lt;br /&gt;
&lt;br /&gt;
These states are used by the coherency model to determine the state of the cache line when memory transactions are performed by individual processors.  Likewise, these memory states are impacted when these memory transactions occur.&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts the transition between these memory states:&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_state.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Complicated ===&lt;br /&gt;
For a cache, there are 29 stable states described in the SCI standard and many pending states.  Each state consists of two parts.  The first part of the state tells where the state is in the linked list. There are four possibilities [[#References | (Cutler (1999))]]:&lt;br /&gt;
&lt;br /&gt;
# ONLY – if the cache is the only state to have cached the memory block&lt;br /&gt;
# HEAD – if the cache is the most recent reader/writer of the block and so is the first in the list&lt;br /&gt;
# TAIL – if the cache is the least recent reader/writer of the block and so is the last in the list&lt;br /&gt;
# MID – if the cache is not the first or last in the list&lt;br /&gt;
&lt;br /&gt;
In addition to these four location designations for the states, there are other states to describe the actual state of the memory on the cache.  Some of these include:&lt;br /&gt;
&lt;br /&gt;
# CLEAN – if the data in the memory block has not been modified, is the same as main memory, but can be modified.&lt;br /&gt;
# DIRTY – if the data in the memory block has been modified, is different from main memory, and can be written to again if needed.&lt;br /&gt;
# FRESH – if the data in the memory block has not been modified, is the same as main memory, but cannot be modified without notifying main memory.&lt;br /&gt;
# COPY – if the data in the memory has not been modified, is the same as main memory, but cannot be modified, only read.&lt;br /&gt;
&lt;br /&gt;
Each designation for the location can match with a designation for the state which creates additional states like:&lt;br /&gt;
&lt;br /&gt;
* ONLY_DIRTY - if the cache is the only state to have the cached memory block, and the cache has modified the memory block so it is different from main memory&lt;br /&gt;
* MID_FRESH - if the cache is neither the first nor last cache in the list, and the data it has is the same as what is in main memory.&lt;br /&gt;
&lt;br /&gt;
As implied in the [[#Coherence Race Conditions | Race Conditions ]] section, some states are impossible, like: MID_DIRTY or TAIL_CLEAN. Below is a list of the typical states and their state diagram.&lt;br /&gt;
&lt;br /&gt;
=====States of the Typical Set=====&lt;br /&gt;
&lt;br /&gt;
Following are the states defined for the Typical set.  (Note that other states may be supported to provide certain interoperability with nodes implementing the Full set, but are not used when all nodes support the Typical set.)&lt;br /&gt;
&lt;br /&gt;
* '''ONLY_DIRTY''' - only one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''ONLY_FRESH''' - only one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''HEAD_DIRTY''' - more than one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and another processors already caches the block.&lt;br /&gt;
* '''HEAD_FRESH''' - more than one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and another processors already caches the block.&lt;br /&gt;
* '''MID_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is neither the Head or the Tail of the of the sharing list.&lt;br /&gt;
* '''TAIL_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is the Tail of the of the sharing list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts these states:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cache_states.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Simplified ===&lt;br /&gt;
A more simplistic way to envision the SCI coherence protocol states is to limit the system to just two processors and expand the [http://en.wikipedia.org/wiki/MESI_protocol MESI protocol] states.  This results in a more compact state diagram, which still gives the general sense of how the protocol causes transitions.  It also illustrates how the directory states influence the cache states. In this case, we maintain the three states in the directory (U, S, EM) and the caches have the following states:&lt;br /&gt;
&lt;br /&gt;
# Invalid (I) – if the block in the cache's memory is invalid.&lt;br /&gt;
# Modified (M) – if the block in the cache's memory has been modified and no longer matches the block in main memory.&lt;br /&gt;
# Exclusive (E) – if the cache has the only copy of the memory block and it matches the block in main memory.&lt;br /&gt;
# Shared-Head (Sh) – if the block in the cache's memory is shared with the other processor's cache, but this processor was the last to read the memory.&lt;br /&gt;
# Shared-Tail (St) – if the block in the cache's memory is shared with the other processor's cache and the other processor was the last to read the memory.&lt;br /&gt;
&lt;br /&gt;
To further simplify this scenario, only the following operations are possible:&lt;br /&gt;
&lt;br /&gt;
# BusRd/PrRd – a read of the data by either the processor attached to the cache or the other processor through Bus read.&lt;br /&gt;
# BusWr/PrWr – a write of the memory block by either the processor attached to the cache or the other processor through Bus write.&lt;br /&gt;
 &lt;br /&gt;
As mentioned in the [[#Coherence Race Conditions | Race Conditions ]] section, in order for a processor to make a write, they have to be in the head of the list (or the Sh state in this scenario).&lt;br /&gt;
&lt;br /&gt;
The following state diagram illustrates the transitions:&lt;br /&gt;
&lt;br /&gt;
[[Image:SCIInterface.jpg | center]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Simplified cache state diagram from SCI&lt;br /&gt;
&lt;br /&gt;
Initially, the cache is in the &amp;quot;I&amp;quot; state and the directory is in the &amp;quot;U&amp;quot; state.  If processor  1 (P1) makes a read, the processor's cache moves from state I to E and the directory moves from U to EM.  The directory records that P1 is the head of the directory list.  At this point, processor 2 (P2) is in state I.  If P2 makes a read, the directory is in state EM, so the directory notifies P1 that P2 is making a read, P1 transitions from E to St, and sends the data to P2.  P2 transitions from I to Sh, and creates a pointer to P1 to note that P1 is the next memory on the directory list. The directory transitions from EM to S and the directory updates its pointer from P1 to P2 to note that P2 is now the head of the directory cache list.&lt;br /&gt;
&lt;br /&gt;
As you can see from the diagram, a PrWr can only occur when a processor is in the &amp;quot;Sh&amp;quot; state.  In the actual SCI protocol, a write can occur when the cache is in the HEAD state combined with CLEAN/FRESH/DIRTY or when the cache is in the ONLY state.  In this simplified scenario, these states are combined into one, the Sh state.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The SCI protocol is a directory based protocol for Distributed Memory Management similar to the one described in [[#References | Solihin ]].  This is an extensive and complicated strategy that maintains coherence as it scales to multiple processors.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Yan Solihin, ''Fundamentals of Parallel Computer Architecture: Multichip and Multicore Systems,'' Solihin Books, 2008.&lt;br /&gt;
* Culler, David E. and Jaswinder Pal Singh, ''Parallel Computer Architecture,'' Morgan Kaufmann Publishers, Inc, 1999.&lt;br /&gt;
* Gustavson, David, and Qiang Li. &amp;quot;The Scalable Coherent Interface (SCI).&amp;quot; IEEE Communications Magazine 1996: 56. Web. 25 Apr 2011. &amp;lt;http://www.cs.utexas.edu/users/dburger/teaching/cs395t-s08/papers/9_sci.pdf&amp;gt;.&lt;br /&gt;
* &amp;quot;1596-1992 - IEEE Standard for Scalable Coherent Interface (SCI).&amp;quot; IEEE Standards Association. N.p., n.d. Web. &amp;lt;http://standards.ieee.org/findstds/standard/1596-1992.html&amp;gt;.&lt;br /&gt;
* &amp;quot;IEEE Standard for Scalable Coherent Interface (SCI).,&amp;quot; IEEE Std 1596-1992 , vol., no., pp.i, 1993. doi: 10.1109/IEEESTD.1993.120366 URL: http://ieeexplore.ieee.org.proxied.lib.ncsu.edu/stamp/stamp.jsp?tp=&amp;amp;arnumber=347683&amp;amp;isnumber=8049 &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.scizzl.com/HowSCIcohWorks.html How SCI Coherence Works] &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74970</id>
		<title>CSC/ECE 506 Spring 2013/11b ll</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74970"/>
		<updated>2013-04-18T12:26:56Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Cache States : Simplified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Previous Versions&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_DJ Wiki1 ]&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_BB_EP Wiki2 ]&lt;br /&gt;
&lt;br /&gt;
== '''Supplemental to Chapter 11: SCI Cache Coherence''' ==&lt;br /&gt;
&lt;br /&gt;
This is intended to be a supplement to Chapter 11 of [[#References | Solihin ]], which deals with Distributed Shared Memory (DSM) in Multiprocessors.  In the book, the basic approaches to DSM are discussed, and a directory based cache coherence protocol is introduced.  This protocol is in contrast to the bus-based cache coherence protocols that were introduced earlier.  This supplemental focuses on a specific directory based cache coherence protocol called the Scalable Coherent Interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction: What is the Scalable Coherent Interface? ==&lt;br /&gt;
&lt;br /&gt;
The Scalable Coherent Interface (SCI) is an ANSI/IEEE protocol to provide fast point-to-point connections for high-performance multiprocessor systems [[#References | (&amp;quot;IEEE Standards Association&amp;quot;) ]].  It works with both shared memory and message passing and was approved in 1992. In the 1980's, as processors were getting faster and faster, they were beginning to outpace the speed of the bus.  SCI was created to provide a non-bus based interconnection protocol.  It was intended to be scalable, meaning it can work with few or many multiprocessors.     &lt;br /&gt;
&lt;br /&gt;
== SCI Cache Coherence ==&lt;br /&gt;
SCI utilizes a directory based cache coherence protocol similar to what is describe in Chapter 11 of [[#References | Solihin (2008)]]. Instead of cache coherence being handled by caches snooping for interactions on a bus, a directory manages the coherence of each individual cache by creating a doubly-linked list of the caches that are sharing a particular block of memory.   The directory maintains a state for the block in memory, and a pointer to the first cache that is on the shared list.  The first cache in the list is the cache for the processor that most recently accessed the block of memory.  When the &amp;quot;head&amp;quot; of the list modifies the block of memory, they have to notify main memory that they now have the only clean copy of the data.  This head cache must also notify the next cache in the shared list so that the cache can invalidate their copy.  The information then propagates from there.   &lt;br /&gt;
&lt;br /&gt;
The structure for SCI is fairly complicated and can lead to a number of race conditions.&lt;br /&gt;
&lt;br /&gt;
== Coherence Race Conditions ==&lt;br /&gt;
There are many different instances in the SCI cache coherence protocol where race conditions are handled in such a way they are a non-issue.  For instance, in SCI only the head node in the link list of sharers is able to write to the block.  All sharers, including the head, can read.  Suppose we have two nodes, N1 and N2, with both nodes sharing a cached block.  N1 is the head of the linked list while N2 is the tail of the linked list.  If N2 wants to write a value to the cached block, the node must do it in a series of steps.  First N2 detaches itself from the linked list by updating N1's NEXT pointer.  Since N2 is no longer a sharer, the node must invalidate its cached copy to prevent a race condition (N1 writes to block while N2 holds an out-of-date version of the block).  Then N2 has to re-request the block from the directory with intent to write data.  The directory then processes N2's request and N2 swaps out the current head's pointer (N1) with its own, making it the new head.  N2 then uses the pointer to N1 to invalidate all sharers.  In this case N1 is the only sharer [[#References | (Gustavson, and Li 56) ]].  This allows the SCI protocol to keep write exclusivity.  Write exclusivity mean only one write can be performed to a give block at a time.  Without write exclusivity, each node sharing the block would be able to write to the block, allowing for multiple writes to happen simultaneously.  If each cache wrote simultaneously, every cache sharing the block would get invalidated, including the head.  Also the block in memory might not posses the correct value.  In order for this to be implemented, there needs to be special states for the head, middle, and tail of the linked list.  Also there needs to be states that determine the read/write capabilities of the nodes.  Table 1 shows how this scenario would look using a simplistic version of SCI discussed later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;| Table 1: Maintaining Write Exclusivity&lt;br /&gt;
|----&lt;br /&gt;
!Action&lt;br /&gt;
!State N1&lt;br /&gt;
!State N2&lt;br /&gt;
!State Directory&lt;br /&gt;
!Head Node&lt;br /&gt;
!Comments&lt;br /&gt;
|----&lt;br /&gt;
| - &lt;br /&gt;
|Sh&lt;br /&gt;
|St&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Initial State&lt;br /&gt;
|----&lt;br /&gt;
|W2&lt;br /&gt;
|Sh&lt;br /&gt;
|I&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Node 2 wants to write&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|I&lt;br /&gt;
|M&lt;br /&gt;
|EM&lt;br /&gt;
|N2&lt;br /&gt;
|N2 becomes new head invalidating N1&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another scenario described in 11.4.1 of the Solihin textbook is when a cache is in state M and the directory is in state EM for a given block.  If the cache holding the block flushes the value and the value does not make it to the directory before a read request is made, then there can be a potential race condition.  The race condition is handled by the use of pending states.  When the cache flushes a block, the line transitions from state M to a pending state.  The pending state transitions into the invalid state only when the directory has acknowledged receiving the flush.  This allows the cache to stall any read request made to the block until the block enters the steady state of I [[#References | (Solihin)]].&lt;br /&gt;
&lt;br /&gt;
== SCI States ==&lt;br /&gt;
&lt;br /&gt;
=== Directory States ===&lt;br /&gt;
In SCI, the directory and each cache maintain a series of states. The directory states define the state of the memory block from the perspective of the home directory.  This 2-bit field is maintained in the memory tag by the home directory along with the pointer to the head of the sharing list (forwId). The simple state model below includes three stable states and one semi-stable state.&lt;br /&gt;
&lt;br /&gt;
The directory can be in one of three states or a transitional state:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Table 1: Memory States &lt;br /&gt;
|----&lt;br /&gt;
!State )&lt;br /&gt;
!Description&lt;br /&gt;
!Minimal&lt;br /&gt;
!Typical&lt;br /&gt;
!Full&lt;br /&gt;
|----&lt;br /&gt;
|HOME or UNCACHED (U&lt;br /&gt;
|no sharing list&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|FRESH or SHARED (S)&lt;br /&gt;
|sharing-list copy is the same as memory&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|GONE  or EXCLUSIVE/MODIFIED (EM)&lt;br /&gt;
|sharing-list copy may be different from memory&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|WASH*&lt;br /&gt;
|transitional state (GONE to FRESH)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the directory has the block of memory in the GONE or EM state, then the directory must forward any incoming read/write requests for the block to the last cache that modified the block.  That cache is responsible for updating main memory and the block that requested the data. This is why the directory must maintain a pointer to the first cache in the cache list.&lt;br /&gt;
&lt;br /&gt;
These states are used by the coherency model to determine the state of the cache line when memory transactions are performed by individual processors.  Likewise, these memory states are impacted when these memory transactions occur.&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts the transition between these memory states:&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_state.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Complicated ===&lt;br /&gt;
For a cache, there are 29 stable states described in the SCI standard and many pending states.  Each state consists of two parts.  The first part of the state tells where the state is in the linked list. There are four possibilities [[#References | (Cutler (1999))]]:&lt;br /&gt;
&lt;br /&gt;
# ONLY – if the cache is the only state to have cached the memory block&lt;br /&gt;
# HEAD – if the cache is the most recent reader/writer of the block and so is the first in the list&lt;br /&gt;
# TAIL – if the cache is the least recent reader/writer of the block and so is the last in the list&lt;br /&gt;
# MID – if the cache is not the first or last in the list&lt;br /&gt;
&lt;br /&gt;
In addition to these four location designations for the states, there are other states to describe the actual state of the memory on the cache.  Some of these include:&lt;br /&gt;
&lt;br /&gt;
# CLEAN – if the data in the memory block has not been modified, is the same as main memory, but can be modified.&lt;br /&gt;
# DIRTY – if the data in the memory block has been modified, is different from main memory, and can be written to again if needed.&lt;br /&gt;
# FRESH – if the data in the memory block has not been modified, is the same as main memory, but cannot be modified without notifying main memory.&lt;br /&gt;
# COPY – if the data in the memory has not been modified, is the same as main memory, but cannot be modified, only read.&lt;br /&gt;
&lt;br /&gt;
Each designation for the location can match with a designation for the state which creates additional states like:&lt;br /&gt;
&lt;br /&gt;
* ONLY_DIRTY - if the cache is the only state to have the cached memory block, and the cache has modified the memory block so it is different from main memory&lt;br /&gt;
* MID_FRESH - if the cache is neither the first nor last cache in the list, and the data it has is the same as what is in main memory.&lt;br /&gt;
&lt;br /&gt;
As implied in the [[#Coherence Race Conditions | Race Conditions ]] section, some states are impossible, like: MID_DIRTY or TAIL_CLEAN. Below is a list of the typical states and their state diagram.&lt;br /&gt;
&lt;br /&gt;
=====States of the Typical Set=====&lt;br /&gt;
&lt;br /&gt;
Following are the states defined for the Typical set.  (Note that other states may be supported to provide certain interoperability with nodes implementing the Full set, but are not used when all nodes support the Typical set.)&lt;br /&gt;
&lt;br /&gt;
* '''ONLY_DIRTY''' - only one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''ONLY_FRESH''' - only one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''HEAD_DIRTY''' - more than one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and another processors already caches the block.&lt;br /&gt;
* '''HEAD_FRESH''' - more than one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and another processors already caches the block.&lt;br /&gt;
* '''MID_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is neither the Head or the Tail of the of the sharing list.&lt;br /&gt;
* '''TAIL_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is the Tail of the of the sharing list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts these states:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cache_states.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Simplified ===&lt;br /&gt;
A more simplistic way to envision the SCI coherence protocol states is to limit the system to just two processors and expand the [http://en.wikipedia.org/wiki/MESI_protocol MESI protocol] states.  This results in a more compact state diagram, which still gives the general sense of how the protocol causes transitions.  It also illustrates how the directory states influence the cache states. In this case, we maintain the three states in the directory (U, S, EM) and the caches have the following states:&lt;br /&gt;
&lt;br /&gt;
# Invalid (I) – if the block in the cache's memory is invalid.&lt;br /&gt;
# Modified (M) – if the block in the cache's memory has been modified and no longer matches the block in main memory.&lt;br /&gt;
# Exclusive (E) – if the cache has the only copy of the memory block and it matches the block in main memory.&lt;br /&gt;
# Shared-Head (Sh) – if the block in the cache's memory is shared with the other processor's cache, but this processor was the last to read the memory.&lt;br /&gt;
# Shared-Tail (St) – if the block in the cache's memory is shared with the other processor's cache and the other processor was the last to read the memory.&lt;br /&gt;
&lt;br /&gt;
To further simplify this scenario, only the following operations are possible:&lt;br /&gt;
&lt;br /&gt;
# BusRd/PrRd – a read of the data by either the processor attached to the cache or the other processor through Bus read.&lt;br /&gt;
# BusWr/PrWr – a write of the memory block by either the processor attached to the cache or the other processor through Bus write.&lt;br /&gt;
 &lt;br /&gt;
As mentioned in the [[#Coherence Race Conditions | Race Conditions ]] section, in order for a processor to make a write, they have to be in the head of the list (or the Sh state in this scenario).&lt;br /&gt;
&lt;br /&gt;
The following state diagram illustrates the transitions:&lt;br /&gt;
&lt;br /&gt;
[[Image:SCIInterface.jpg | center]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Simplified cache state diagram from SCI&lt;br /&gt;
&lt;br /&gt;
Initially, the cache is in the &amp;quot;I&amp;quot; state and the directory is in the &amp;quot;U&amp;quot; state.  If processor  1 (P1) makes a read, the processor's cache moves from state I to E and the directory moves from U to EM.  The directory records that P1 is the head of the directory list.  At this point, processor 2 (P2) is in state I.  If P2 makes a read, the directory is in state EM, so the directory notifies P1 that P2 is making a read, P1 transitions from E to St, and sends the data to P2.  P2 transitions from I to Sh, and creates a pointer to P1 to note that P1 is the next memory on the directory list. The directory transitions from EM to S and the directory updates its pointer from P1 to P2 to note that P2 is now the head of the directory cache list.&lt;br /&gt;
&lt;br /&gt;
As you can see from the diagram, a PrWr can only occur when a processor is in the &amp;quot;Sh&amp;quot; state.  In the actual SCI protocol, a write can occur when the cache is in the HEAD state combined with CLEAN/FRESH/DIRTY or when the cache is in the ONLY state.  In this simplified scenario, these states are combined into one, the Sh state.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The SCI protocol is a directory based protocol for Distributed Memory Management similar to the one described in [[#References | Solihin ]].  This is an extensive and complicated strategy that maintains coherence as it scales to multiple processors.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Yan Solihin, ''Fundamentals of Parallel Computer Architecture: Multichip and Multicore Systems,'' Solihin Books, 2008.&lt;br /&gt;
* Culler, David E. and Jaswinder Pal Singh, ''Parallel Computer Architecture,'' Morgan Kaufmann Publishers, Inc, 1999.&lt;br /&gt;
* Gustavson, David, and Qiang Li. &amp;quot;The Scalable Coherent Interface (SCI).&amp;quot; IEEE Communications Magazine 1996: 56. Web. 25 Apr 2011. &amp;lt;http://www.cs.utexas.edu/users/dburger/teaching/cs395t-s08/papers/9_sci.pdf&amp;gt;.&lt;br /&gt;
* &amp;quot;1596-1992 - IEEE Standard for Scalable Coherent Interface (SCI).&amp;quot; IEEE Standards Association. N.p., n.d. Web. &amp;lt;http://standards.ieee.org/findstds/standard/1596-1992.html&amp;gt;.&lt;br /&gt;
* &amp;quot;IEEE Standard for Scalable Coherent Interface (SCI).,&amp;quot; IEEE Std 1596-1992 , vol., no., pp.i, 1993. doi: 10.1109/IEEESTD.1993.120366 URL: http://ieeexplore.ieee.org.proxied.lib.ncsu.edu/stamp/stamp.jsp?tp=&amp;amp;arnumber=347683&amp;amp;isnumber=8049 &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.scizzl.com/HowSCIcohWorks.html How SCI Coherence Works] &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SCIInterface.jpg&amp;diff=74969</id>
		<title>File:SCIInterface.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SCIInterface.jpg&amp;diff=74969"/>
		<updated>2013-04-18T12:23:36Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: uploaded a new version of &amp;amp;quot;File:SCIInterface.jpg&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74968</id>
		<title>CSC/ECE 506 Spring 2013/11b ll</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74968"/>
		<updated>2013-04-18T12:15:33Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Cache States : Simplified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Previous Versions&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_DJ Wiki1 ]&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_BB_EP Wiki2 ]&lt;br /&gt;
&lt;br /&gt;
== '''Supplemental to Chapter 11: SCI Cache Coherence''' ==&lt;br /&gt;
&lt;br /&gt;
This is intended to be a supplement to Chapter 11 of [[#References | Solihin ]], which deals with Distributed Shared Memory (DSM) in Multiprocessors.  In the book, the basic approaches to DSM are discussed, and a directory based cache coherence protocol is introduced.  This protocol is in contrast to the bus-based cache coherence protocols that were introduced earlier.  This supplemental focuses on a specific directory based cache coherence protocol called the Scalable Coherent Interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction: What is the Scalable Coherent Interface? ==&lt;br /&gt;
&lt;br /&gt;
The Scalable Coherent Interface (SCI) is an ANSI/IEEE protocol to provide fast point-to-point connections for high-performance multiprocessor systems [[#References | (&amp;quot;IEEE Standards Association&amp;quot;) ]].  It works with both shared memory and message passing and was approved in 1992. In the 1980's, as processors were getting faster and faster, they were beginning to outpace the speed of the bus.  SCI was created to provide a non-bus based interconnection protocol.  It was intended to be scalable, meaning it can work with few or many multiprocessors.     &lt;br /&gt;
&lt;br /&gt;
== SCI Cache Coherence ==&lt;br /&gt;
SCI utilizes a directory based cache coherence protocol similar to what is describe in Chapter 11 of [[#References | Solihin (2008)]]. Instead of cache coherence being handled by caches snooping for interactions on a bus, a directory manages the coherence of each individual cache by creating a doubly-linked list of the caches that are sharing a particular block of memory.   The directory maintains a state for the block in memory, and a pointer to the first cache that is on the shared list.  The first cache in the list is the cache for the processor that most recently accessed the block of memory.  When the &amp;quot;head&amp;quot; of the list modifies the block of memory, they have to notify main memory that they now have the only clean copy of the data.  This head cache must also notify the next cache in the shared list so that the cache can invalidate their copy.  The information then propagates from there.   &lt;br /&gt;
&lt;br /&gt;
The structure for SCI is fairly complicated and can lead to a number of race conditions.&lt;br /&gt;
&lt;br /&gt;
== Coherence Race Conditions ==&lt;br /&gt;
There are many different instances in the SCI cache coherence protocol where race conditions are handled in such a way they are a non-issue.  For instance, in SCI only the head node in the link list of sharers is able to write to the block.  All sharers, including the head, can read.  Suppose we have two nodes, N1 and N2, with both nodes sharing a cached block.  N1 is the head of the linked list while N2 is the tail of the linked list.  If N2 wants to write a value to the cached block, the node must do it in a series of steps.  First N2 detaches itself from the linked list by updating N1's NEXT pointer.  Since N2 is no longer a sharer, the node must invalidate its cached copy to prevent a race condition (N1 writes to block while N2 holds an out-of-date version of the block).  Then N2 has to re-request the block from the directory with intent to write data.  The directory then processes N2's request and N2 swaps out the current head's pointer (N1) with its own, making it the new head.  N2 then uses the pointer to N1 to invalidate all sharers.  In this case N1 is the only sharer [[#References | (Gustavson, and Li 56) ]].  This allows the SCI protocol to keep write exclusivity.  Write exclusivity mean only one write can be performed to a give block at a time.  Without write exclusivity, each node sharing the block would be able to write to the block, allowing for multiple writes to happen simultaneously.  If each cache wrote simultaneously, every cache sharing the block would get invalidated, including the head.  Also the block in memory might not posses the correct value.  In order for this to be implemented, there needs to be special states for the head, middle, and tail of the linked list.  Also there needs to be states that determine the read/write capabilities of the nodes.  Table 1 shows how this scenario would look using a simplistic version of SCI discussed later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;| Table 1: Maintaining Write Exclusivity&lt;br /&gt;
|----&lt;br /&gt;
!Action&lt;br /&gt;
!State N1&lt;br /&gt;
!State N2&lt;br /&gt;
!State Directory&lt;br /&gt;
!Head Node&lt;br /&gt;
!Comments&lt;br /&gt;
|----&lt;br /&gt;
| - &lt;br /&gt;
|Sh&lt;br /&gt;
|St&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Initial State&lt;br /&gt;
|----&lt;br /&gt;
|W2&lt;br /&gt;
|Sh&lt;br /&gt;
|I&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Node 2 wants to write&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|I&lt;br /&gt;
|M&lt;br /&gt;
|EM&lt;br /&gt;
|N2&lt;br /&gt;
|N2 becomes new head invalidating N1&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another scenario described in 11.4.1 of the Solihin textbook is when a cache is in state M and the directory is in state EM for a given block.  If the cache holding the block flushes the value and the value does not make it to the directory before a read request is made, then there can be a potential race condition.  The race condition is handled by the use of pending states.  When the cache flushes a block, the line transitions from state M to a pending state.  The pending state transitions into the invalid state only when the directory has acknowledged receiving the flush.  This allows the cache to stall any read request made to the block until the block enters the steady state of I [[#References | (Solihin)]].&lt;br /&gt;
&lt;br /&gt;
== SCI States ==&lt;br /&gt;
&lt;br /&gt;
=== Directory States ===&lt;br /&gt;
In SCI, the directory and each cache maintain a series of states. The directory states define the state of the memory block from the perspective of the home directory.  This 2-bit field is maintained in the memory tag by the home directory along with the pointer to the head of the sharing list (forwId). The simple state model below includes three stable states and one semi-stable state.&lt;br /&gt;
&lt;br /&gt;
The directory can be in one of three states or a transitional state:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Table 1: Memory States &lt;br /&gt;
|----&lt;br /&gt;
!State )&lt;br /&gt;
!Description&lt;br /&gt;
!Minimal&lt;br /&gt;
!Typical&lt;br /&gt;
!Full&lt;br /&gt;
|----&lt;br /&gt;
|HOME or UNCACHED (U&lt;br /&gt;
|no sharing list&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|FRESH or SHARED (S)&lt;br /&gt;
|sharing-list copy is the same as memory&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|GONE  or EXCLUSIVE/MODIFIED (EM)&lt;br /&gt;
|sharing-list copy may be different from memory&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|WASH*&lt;br /&gt;
|transitional state (GONE to FRESH)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the directory has the block of memory in the GONE or EM state, then the directory must forward any incoming read/write requests for the block to the last cache that modified the block.  That cache is responsible for updating main memory and the block that requested the data. This is why the directory must maintain a pointer to the first cache in the cache list.&lt;br /&gt;
&lt;br /&gt;
These states are used by the coherency model to determine the state of the cache line when memory transactions are performed by individual processors.  Likewise, these memory states are impacted when these memory transactions occur.&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts the transition between these memory states:&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_state.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Complicated ===&lt;br /&gt;
For a cache, there are 29 stable states described in the SCI standard and many pending states.  Each state consists of two parts.  The first part of the state tells where the state is in the linked list. There are four possibilities [[#References | (Cutler (1999))]]:&lt;br /&gt;
&lt;br /&gt;
# ONLY – if the cache is the only state to have cached the memory block&lt;br /&gt;
# HEAD – if the cache is the most recent reader/writer of the block and so is the first in the list&lt;br /&gt;
# TAIL – if the cache is the least recent reader/writer of the block and so is the last in the list&lt;br /&gt;
# MID – if the cache is not the first or last in the list&lt;br /&gt;
&lt;br /&gt;
In addition to these four location designations for the states, there are other states to describe the actual state of the memory on the cache.  Some of these include:&lt;br /&gt;
&lt;br /&gt;
# CLEAN – if the data in the memory block has not been modified, is the same as main memory, but can be modified.&lt;br /&gt;
# DIRTY – if the data in the memory block has been modified, is different from main memory, and can be written to again if needed.&lt;br /&gt;
# FRESH – if the data in the memory block has not been modified, is the same as main memory, but cannot be modified without notifying main memory.&lt;br /&gt;
# COPY – if the data in the memory has not been modified, is the same as main memory, but cannot be modified, only read.&lt;br /&gt;
&lt;br /&gt;
Each designation for the location can match with a designation for the state which creates additional states like:&lt;br /&gt;
&lt;br /&gt;
* ONLY_DIRTY - if the cache is the only state to have the cached memory block, and the cache has modified the memory block so it is different from main memory&lt;br /&gt;
* MID_FRESH - if the cache is neither the first nor last cache in the list, and the data it has is the same as what is in main memory.&lt;br /&gt;
&lt;br /&gt;
As implied in the [[#Coherence Race Conditions | Race Conditions ]] section, some states are impossible, like: MID_DIRTY or TAIL_CLEAN. Below is a list of the typical states and their state diagram.&lt;br /&gt;
&lt;br /&gt;
=====States of the Typical Set=====&lt;br /&gt;
&lt;br /&gt;
Following are the states defined for the Typical set.  (Note that other states may be supported to provide certain interoperability with nodes implementing the Full set, but are not used when all nodes support the Typical set.)&lt;br /&gt;
&lt;br /&gt;
* '''ONLY_DIRTY''' - only one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''ONLY_FRESH''' - only one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''HEAD_DIRTY''' - more than one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and another processors already caches the block.&lt;br /&gt;
* '''HEAD_FRESH''' - more than one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and another processors already caches the block.&lt;br /&gt;
* '''MID_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is neither the Head or the Tail of the of the sharing list.&lt;br /&gt;
* '''TAIL_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is the Tail of the of the sharing list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts these states:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cache_states.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Simplified ===&lt;br /&gt;
A more simplistic way to envision the SCI coherence protocol states is to limit the system to just two processors and expand the [http://en.wikipedia.org/wiki/MESI_protocol MESI protocol] states.  This results in a more compact state diagram, which still gives the general sense of how the protocol causes transitions.  It also illustrates how the directory states influence the cache states. In this case, we maintain the three states in the directory (U, S, EM) and the caches have the following states:&lt;br /&gt;
&lt;br /&gt;
# Invalid (I) – if the block in the cache's memory is invalid.&lt;br /&gt;
# Modified (M) – if the block in the cache's memory has been modified and no longer matches the block in main memory.&lt;br /&gt;
# Exclusive (E) – if the cache has the only copy of the memory block and it matches the block in main memory.&lt;br /&gt;
# Shared-Head (Sh) – if the block in the cache's memory is shared with the other processor's cache, but this processor was the last to read the memory.&lt;br /&gt;
# Shared-Tail (St) – if the block in the cache's memory is shared with the other processor's cache and the other processor was the last to read the memory.&lt;br /&gt;
&lt;br /&gt;
To further simplify this scenario, only the following operations are possible:&lt;br /&gt;
&lt;br /&gt;
# Read(O/S) – a read of the data by either the processor attached to the cache (S for Self) or the other processor (O).&lt;br /&gt;
# Write(O/S) – a write of the memory block by either the processor attached to the cache (S) or the other processor (O).&lt;br /&gt;
 &lt;br /&gt;
As mentioned in the [[#Coherence Race Conditions | Race Conditions ]] section, in order for a processor to make a write, they have to be in the head of the list (or the Sh state in this scenario).&lt;br /&gt;
&lt;br /&gt;
The following state diagram illustrates the transitions:&lt;br /&gt;
&lt;br /&gt;
[[Image:SCIInterface.jpg]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Simplified cache state diagram from SCI&lt;br /&gt;
&lt;br /&gt;
Initially, the cache is in the &amp;quot;I&amp;quot; state and the directory is in the &amp;quot;U&amp;quot; state.  If processor  1 (P1) makes a read, the processor's cache moves from state I to E and the directory moves from U to EM.  The directory records that P1 is the head of the directory list.  At this point, processor 2 (P2) is in state I.  If P2 makes a read, the directory is in state EM, so the directory notifies P1 that P2 is making a read, P1 transitions from E to St, and sends the data to P2.  P2 transitions from I to Sh, and creates a pointer to P1 to note that P1 is the next memory on the directory list. The directory transitions from EM to S and the directory updates its pointer from P1 to P2 to note that P2 is now the head of the directory cache list.&lt;br /&gt;
&lt;br /&gt;
As you can see from the diagram, a Write(S) can only occur when a processor is in the &amp;quot;Sh&amp;quot; state.  In the actual SCI protocol, a write can occur when the cache is in the HEAD state combined with CLEAN/FRESH/DIRTY or when the cache is in the ONLY state.  In this simplified scenario, these states are combined into one, the Sh state.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The SCI protocol is a directory based protocol for Distributed Memory Management similar to the one described in [[#References | Solihin ]].  This is an extensive and complicated strategy that maintains coherence as it scales to multiple processors.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Yan Solihin, ''Fundamentals of Parallel Computer Architecture: Multichip and Multicore Systems,'' Solihin Books, 2008.&lt;br /&gt;
* Culler, David E. and Jaswinder Pal Singh, ''Parallel Computer Architecture,'' Morgan Kaufmann Publishers, Inc, 1999.&lt;br /&gt;
* Gustavson, David, and Qiang Li. &amp;quot;The Scalable Coherent Interface (SCI).&amp;quot; IEEE Communications Magazine 1996: 56. Web. 25 Apr 2011. &amp;lt;http://www.cs.utexas.edu/users/dburger/teaching/cs395t-s08/papers/9_sci.pdf&amp;gt;.&lt;br /&gt;
* &amp;quot;1596-1992 - IEEE Standard for Scalable Coherent Interface (SCI).&amp;quot; IEEE Standards Association. N.p., n.d. Web. &amp;lt;http://standards.ieee.org/findstds/standard/1596-1992.html&amp;gt;.&lt;br /&gt;
* &amp;quot;IEEE Standard for Scalable Coherent Interface (SCI).,&amp;quot; IEEE Std 1596-1992 , vol., no., pp.i, 1993. doi: 10.1109/IEEESTD.1993.120366 URL: http://ieeexplore.ieee.org.proxied.lib.ncsu.edu/stamp/stamp.jsp?tp=&amp;amp;arnumber=347683&amp;amp;isnumber=8049 &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.scizzl.com/HowSCIcohWorks.html How SCI Coherence Works] &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SCIInterface.jpg&amp;diff=74967</id>
		<title>File:SCIInterface.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SCIInterface.jpg&amp;diff=74967"/>
		<updated>2013-04-18T12:13:26Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74966</id>
		<title>CSC/ECE 506 Spring 2013/11b ll</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74966"/>
		<updated>2013-04-18T12:12:52Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Cache States : Simplified */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Previous Versions&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_DJ Wiki1 ]&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_BB_EP Wiki2 ]&lt;br /&gt;
&lt;br /&gt;
== '''Supplemental to Chapter 11: SCI Cache Coherence''' ==&lt;br /&gt;
&lt;br /&gt;
This is intended to be a supplement to Chapter 11 of [[#References | Solihin ]], which deals with Distributed Shared Memory (DSM) in Multiprocessors.  In the book, the basic approaches to DSM are discussed, and a directory based cache coherence protocol is introduced.  This protocol is in contrast to the bus-based cache coherence protocols that were introduced earlier.  This supplemental focuses on a specific directory based cache coherence protocol called the Scalable Coherent Interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction: What is the Scalable Coherent Interface? ==&lt;br /&gt;
&lt;br /&gt;
The Scalable Coherent Interface (SCI) is an ANSI/IEEE protocol to provide fast point-to-point connections for high-performance multiprocessor systems [[#References | (&amp;quot;IEEE Standards Association&amp;quot;) ]].  It works with both shared memory and message passing and was approved in 1992. In the 1980's, as processors were getting faster and faster, they were beginning to outpace the speed of the bus.  SCI was created to provide a non-bus based interconnection protocol.  It was intended to be scalable, meaning it can work with few or many multiprocessors.     &lt;br /&gt;
&lt;br /&gt;
== SCI Cache Coherence ==&lt;br /&gt;
SCI utilizes a directory based cache coherence protocol similar to what is describe in Chapter 11 of [[#References | Solihin (2008)]]. Instead of cache coherence being handled by caches snooping for interactions on a bus, a directory manages the coherence of each individual cache by creating a doubly-linked list of the caches that are sharing a particular block of memory.   The directory maintains a state for the block in memory, and a pointer to the first cache that is on the shared list.  The first cache in the list is the cache for the processor that most recently accessed the block of memory.  When the &amp;quot;head&amp;quot; of the list modifies the block of memory, they have to notify main memory that they now have the only clean copy of the data.  This head cache must also notify the next cache in the shared list so that the cache can invalidate their copy.  The information then propagates from there.   &lt;br /&gt;
&lt;br /&gt;
The structure for SCI is fairly complicated and can lead to a number of race conditions.&lt;br /&gt;
&lt;br /&gt;
== Coherence Race Conditions ==&lt;br /&gt;
There are many different instances in the SCI cache coherence protocol where race conditions are handled in such a way they are a non-issue.  For instance, in SCI only the head node in the link list of sharers is able to write to the block.  All sharers, including the head, can read.  Suppose we have two nodes, N1 and N2, with both nodes sharing a cached block.  N1 is the head of the linked list while N2 is the tail of the linked list.  If N2 wants to write a value to the cached block, the node must do it in a series of steps.  First N2 detaches itself from the linked list by updating N1's NEXT pointer.  Since N2 is no longer a sharer, the node must invalidate its cached copy to prevent a race condition (N1 writes to block while N2 holds an out-of-date version of the block).  Then N2 has to re-request the block from the directory with intent to write data.  The directory then processes N2's request and N2 swaps out the current head's pointer (N1) with its own, making it the new head.  N2 then uses the pointer to N1 to invalidate all sharers.  In this case N1 is the only sharer [[#References | (Gustavson, and Li 56) ]].  This allows the SCI protocol to keep write exclusivity.  Write exclusivity mean only one write can be performed to a give block at a time.  Without write exclusivity, each node sharing the block would be able to write to the block, allowing for multiple writes to happen simultaneously.  If each cache wrote simultaneously, every cache sharing the block would get invalidated, including the head.  Also the block in memory might not posses the correct value.  In order for this to be implemented, there needs to be special states for the head, middle, and tail of the linked list.  Also there needs to be states that determine the read/write capabilities of the nodes.  Table 1 shows how this scenario would look using a simplistic version of SCI discussed later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;| Table 1: Maintaining Write Exclusivity&lt;br /&gt;
|----&lt;br /&gt;
!Action&lt;br /&gt;
!State N1&lt;br /&gt;
!State N2&lt;br /&gt;
!State Directory&lt;br /&gt;
!Head Node&lt;br /&gt;
!Comments&lt;br /&gt;
|----&lt;br /&gt;
| - &lt;br /&gt;
|Sh&lt;br /&gt;
|St&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Initial State&lt;br /&gt;
|----&lt;br /&gt;
|W2&lt;br /&gt;
|Sh&lt;br /&gt;
|I&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Node 2 wants to write&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|I&lt;br /&gt;
|M&lt;br /&gt;
|EM&lt;br /&gt;
|N2&lt;br /&gt;
|N2 becomes new head invalidating N1&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another scenario described in 11.4.1 of the Solihin textbook is when a cache is in state M and the directory is in state EM for a given block.  If the cache holding the block flushes the value and the value does not make it to the directory before a read request is made, then there can be a potential race condition.  The race condition is handled by the use of pending states.  When the cache flushes a block, the line transitions from state M to a pending state.  The pending state transitions into the invalid state only when the directory has acknowledged receiving the flush.  This allows the cache to stall any read request made to the block until the block enters the steady state of I [[#References | (Solihin)]].&lt;br /&gt;
&lt;br /&gt;
== SCI States ==&lt;br /&gt;
&lt;br /&gt;
=== Directory States ===&lt;br /&gt;
In SCI, the directory and each cache maintain a series of states. The directory states define the state of the memory block from the perspective of the home directory.  This 2-bit field is maintained in the memory tag by the home directory along with the pointer to the head of the sharing list (forwId). The simple state model below includes three stable states and one semi-stable state.&lt;br /&gt;
&lt;br /&gt;
The directory can be in one of three states or a transitional state:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Table 1: Memory States &lt;br /&gt;
|----&lt;br /&gt;
!State )&lt;br /&gt;
!Description&lt;br /&gt;
!Minimal&lt;br /&gt;
!Typical&lt;br /&gt;
!Full&lt;br /&gt;
|----&lt;br /&gt;
|HOME or UNCACHED (U&lt;br /&gt;
|no sharing list&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|FRESH or SHARED (S)&lt;br /&gt;
|sharing-list copy is the same as memory&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|GONE  or EXCLUSIVE/MODIFIED (EM)&lt;br /&gt;
|sharing-list copy may be different from memory&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|WASH*&lt;br /&gt;
|transitional state (GONE to FRESH)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the directory has the block of memory in the GONE or EM state, then the directory must forward any incoming read/write requests for the block to the last cache that modified the block.  That cache is responsible for updating main memory and the block that requested the data. This is why the directory must maintain a pointer to the first cache in the cache list.&lt;br /&gt;
&lt;br /&gt;
These states are used by the coherency model to determine the state of the cache line when memory transactions are performed by individual processors.  Likewise, these memory states are impacted when these memory transactions occur.&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts the transition between these memory states:&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_state.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Complicated ===&lt;br /&gt;
For a cache, there are 29 stable states described in the SCI standard and many pending states.  Each state consists of two parts.  The first part of the state tells where the state is in the linked list. There are four possibilities [[#References | (Cutler (1999))]]:&lt;br /&gt;
&lt;br /&gt;
# ONLY – if the cache is the only state to have cached the memory block&lt;br /&gt;
# HEAD – if the cache is the most recent reader/writer of the block and so is the first in the list&lt;br /&gt;
# TAIL – if the cache is the least recent reader/writer of the block and so is the last in the list&lt;br /&gt;
# MID – if the cache is not the first or last in the list&lt;br /&gt;
&lt;br /&gt;
In addition to these four location designations for the states, there are other states to describe the actual state of the memory on the cache.  Some of these include:&lt;br /&gt;
&lt;br /&gt;
# CLEAN – if the data in the memory block has not been modified, is the same as main memory, but can be modified.&lt;br /&gt;
# DIRTY – if the data in the memory block has been modified, is different from main memory, and can be written to again if needed.&lt;br /&gt;
# FRESH – if the data in the memory block has not been modified, is the same as main memory, but cannot be modified without notifying main memory.&lt;br /&gt;
# COPY – if the data in the memory has not been modified, is the same as main memory, but cannot be modified, only read.&lt;br /&gt;
&lt;br /&gt;
Each designation for the location can match with a designation for the state which creates additional states like:&lt;br /&gt;
&lt;br /&gt;
* ONLY_DIRTY - if the cache is the only state to have the cached memory block, and the cache has modified the memory block so it is different from main memory&lt;br /&gt;
* MID_FRESH - if the cache is neither the first nor last cache in the list, and the data it has is the same as what is in main memory.&lt;br /&gt;
&lt;br /&gt;
As implied in the [[#Coherence Race Conditions | Race Conditions ]] section, some states are impossible, like: MID_DIRTY or TAIL_CLEAN. Below is a list of the typical states and their state diagram.&lt;br /&gt;
&lt;br /&gt;
=====States of the Typical Set=====&lt;br /&gt;
&lt;br /&gt;
Following are the states defined for the Typical set.  (Note that other states may be supported to provide certain interoperability with nodes implementing the Full set, but are not used when all nodes support the Typical set.)&lt;br /&gt;
&lt;br /&gt;
* '''ONLY_DIRTY''' - only one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''ONLY_FRESH''' - only one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''HEAD_DIRTY''' - more than one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and another processors already caches the block.&lt;br /&gt;
* '''HEAD_FRESH''' - more than one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and another processors already caches the block.&lt;br /&gt;
* '''MID_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is neither the Head or the Tail of the of the sharing list.&lt;br /&gt;
* '''TAIL_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is the Tail of the of the sharing list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts these states:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cache_states.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Simplified ===&lt;br /&gt;
A more simplistic way to envision the SCI coherence protocol states is to limit the system to just two processors and expand the [http://en.wikipedia.org/wiki/MESI_protocol MESI protocol] states.  This results in a more compact state diagram, which still gives the general sense of how the protocol causes transitions.  It also illustrates how the directory states influence the cache states. In this case, we maintain the three states in the directory (U, S, EM) and the caches have the following states:&lt;br /&gt;
&lt;br /&gt;
# Invalid (I) – if the block in the cache's memory is invalid.&lt;br /&gt;
# Modified (M) – if the block in the cache's memory has been modified and no longer matches the block in main memory.&lt;br /&gt;
# Exclusive (E) – if the cache has the only copy of the memory block and it matches the block in main memory.&lt;br /&gt;
# Shared-Head (Sh) – if the block in the cache's memory is shared with the other processor's cache, but this processor was the last to read the memory.&lt;br /&gt;
# Shared-Tail (St) – if the block in the cache's memory is shared with the other processor's cache and the other processor was the last to read the memory.&lt;br /&gt;
&lt;br /&gt;
To further simplify this scenario, only the following operations are possible:&lt;br /&gt;
&lt;br /&gt;
# Read(O/S) – a read of the data by either the processor attached to the cache (S for Self) or the other processor (O).&lt;br /&gt;
# Write(O/S) – a write of the memory block by either the processor attached to the cache (S) or the other processor (O).&lt;br /&gt;
 &lt;br /&gt;
As mentioned in the [[#Coherence Race Conditions | Race Conditions ]] section, in order for a processor to make a write, they have to be in the head of the list (or the Sh state in this scenario).&lt;br /&gt;
&lt;br /&gt;
The following state diagram illustrates the transitions:&lt;br /&gt;
&lt;br /&gt;
[[Image:SCIInterface.png]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Simplified cache state diagram from SCI&lt;br /&gt;
&lt;br /&gt;
Initially, the cache is in the &amp;quot;I&amp;quot; state and the directory is in the &amp;quot;U&amp;quot; state.  If processor  1 (P1) makes a read, the processor's cache moves from state I to E and the directory moves from U to EM.  The directory records that P1 is the head of the directory list.  At this point, processor 2 (P2) is in state I.  If P2 makes a read, the directory is in state EM, so the directory notifies P1 that P2 is making a read, P1 transitions from E to St, and sends the data to P2.  P2 transitions from I to Sh, and creates a pointer to P1 to note that P1 is the next memory on the directory list. The directory transitions from EM to S and the directory updates its pointer from P1 to P2 to note that P2 is now the head of the directory cache list.&lt;br /&gt;
&lt;br /&gt;
As you can see from the diagram, a Write(S) can only occur when a processor is in the &amp;quot;Sh&amp;quot; state.  In the actual SCI protocol, a write can occur when the cache is in the HEAD state combined with CLEAN/FRESH/DIRTY or when the cache is in the ONLY state.  In this simplified scenario, these states are combined into one, the Sh state.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The SCI protocol is a directory based protocol for Distributed Memory Management similar to the one described in [[#References | Solihin ]].  This is an extensive and complicated strategy that maintains coherence as it scales to multiple processors.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Yan Solihin, ''Fundamentals of Parallel Computer Architecture: Multichip and Multicore Systems,'' Solihin Books, 2008.&lt;br /&gt;
* Culler, David E. and Jaswinder Pal Singh, ''Parallel Computer Architecture,'' Morgan Kaufmann Publishers, Inc, 1999.&lt;br /&gt;
* Gustavson, David, and Qiang Li. &amp;quot;The Scalable Coherent Interface (SCI).&amp;quot; IEEE Communications Magazine 1996: 56. Web. 25 Apr 2011. &amp;lt;http://www.cs.utexas.edu/users/dburger/teaching/cs395t-s08/papers/9_sci.pdf&amp;gt;.&lt;br /&gt;
* &amp;quot;1596-1992 - IEEE Standard for Scalable Coherent Interface (SCI).&amp;quot; IEEE Standards Association. N.p., n.d. Web. &amp;lt;http://standards.ieee.org/findstds/standard/1596-1992.html&amp;gt;.&lt;br /&gt;
* &amp;quot;IEEE Standard for Scalable Coherent Interface (SCI).,&amp;quot; IEEE Std 1596-1992 , vol., no., pp.i, 1993. doi: 10.1109/IEEESTD.1993.120366 URL: http://ieeexplore.ieee.org.proxied.lib.ncsu.edu/stamp/stamp.jsp?tp=&amp;amp;arnumber=347683&amp;amp;isnumber=8049 &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.scizzl.com/HowSCIcohWorks.html How SCI Coherence Works] &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:SCIStatesD.png&amp;diff=74965</id>
		<title>File:SCIStatesD.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:SCIStatesD.png&amp;diff=74965"/>
		<updated>2013-04-18T12:10:26Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74947</id>
		<title>CSC/ECE 506 Spring 2013/11b ll</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/11b_ll&amp;diff=74947"/>
		<updated>2013-04-18T01:44:46Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;Previous Versions&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_DJ Wiki1 ]&lt;br /&gt;
:[http://wiki.expertiza.ncsu.edu/index.php/CSC/ECE_506_Spring_2011/ch11_BB_EP Wiki2 ]&lt;br /&gt;
&lt;br /&gt;
== '''Supplemental to Chapter 11: SCI Cache Coherence''' ==&lt;br /&gt;
&lt;br /&gt;
This is intended to be a supplement to Chapter 11 of [[#References | Solihin ]], which deals with Distributed Shared Memory (DSM) in Multiprocessors.  In the book, the basic approaches to DSM are discussed, and a directory based cache coherence protocol is introduced.  This protocol is in contrast to the bus-based cache coherence protocols that were introduced earlier.  This supplemental focuses on a specific directory based cache coherence protocol called the Scalable Coherent Interface.&lt;br /&gt;
&lt;br /&gt;
== Introduction: What is the Scalable Coherent Interface? ==&lt;br /&gt;
&lt;br /&gt;
The Scalable Coherent Interface (SCI) is an ANSI/IEEE protocol to provide fast point-to-point connections for high-performance multiprocessor systems [[#References | (&amp;quot;IEEE Standards Association&amp;quot;) ]].  It works with both shared memory and message passing and was approved in 1992. In the 1980's, as processors were getting faster and faster, they were beginning to outpace the speed of the bus.  SCI was created to provide a non-bus based interconnection protocol.  It was intended to be scalable, meaning it can work with few or many multiprocessors.     &lt;br /&gt;
&lt;br /&gt;
== SCI Cache Coherence ==&lt;br /&gt;
SCI utilizes a directory based cache coherence protocol similar to what is describe in Chapter 11 of [[#References | Solihin (2008)]]. Instead of cache coherence being handled by caches snooping for interactions on a bus, a directory manages the coherence of each individual cache by creating a doubly-linked list of the caches that are sharing a particular block of memory.   The directory maintains a state for the block in memory, and a pointer to the first cache that is on the shared list.  The first cache in the list is the cache for the processor that most recently accessed the block of memory.  When the &amp;quot;head&amp;quot; of the list modifies the block of memory, they have to notify main memory that they now have the only clean copy of the data.  This head cache must also notify the next cache in the shared list so that the cache can invalidate their copy.  The information then propagates from there.   &lt;br /&gt;
&lt;br /&gt;
The structure for SCI is fairly complicated and can lead to a number of race conditions.&lt;br /&gt;
&lt;br /&gt;
== Coherence Race Conditions ==&lt;br /&gt;
There are many different instances in the SCI cache coherence protocol where race conditions are handled in such a way they are a non-issue.  For instance, in SCI only the head node in the link list of sharers is able to write to the block.  All sharers, including the head, can read.  Suppose we have two nodes, N1 and N2, with both nodes sharing a cached block.  N1 is the head of the linked list while N2 is the tail of the linked list.  If N2 wants to write a value to the cached block, the node must do it in a series of steps.  First N2 detaches itself from the linked list by updating N1's NEXT pointer.  Since N2 is no longer a sharer, the node must invalidate its cached copy to prevent a race condition (N1 writes to block while N2 holds an out-of-date version of the block).  Then N2 has to re-request the block from the directory with intent to write data.  The directory then processes N2's request and N2 swaps out the current head's pointer (N1) with its own, making it the new head.  N2 then uses the pointer to N1 to invalidate all sharers.  In this case N1 is the only sharer [[#References | (Gustavson, and Li 56) ]].  This allows the SCI protocol to keep write exclusivity.  Write exclusivity mean only one write can be performed to a give block at a time.  Without write exclusivity, each node sharing the block would be able to write to the block, allowing for multiple writes to happen simultaneously.  If each cache wrote simultaneously, every cache sharing the block would get invalidated, including the head.  Also the block in memory might not posses the correct value.  In order for this to be implemented, there needs to be special states for the head, middle, and tail of the linked list.  Also there needs to be states that determine the read/write capabilities of the nodes.  Table 1 shows how this scenario would look using a simplistic version of SCI discussed later.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;7&amp;quot;| Table 1: Maintaining Write Exclusivity&lt;br /&gt;
|----&lt;br /&gt;
!Action&lt;br /&gt;
!State N1&lt;br /&gt;
!State N2&lt;br /&gt;
!State Directory&lt;br /&gt;
!Head Node&lt;br /&gt;
!Comments&lt;br /&gt;
|----&lt;br /&gt;
| - &lt;br /&gt;
|Sh&lt;br /&gt;
|St&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Initial State&lt;br /&gt;
|----&lt;br /&gt;
|W2&lt;br /&gt;
|Sh&lt;br /&gt;
|I&lt;br /&gt;
|S&lt;br /&gt;
|N1&lt;br /&gt;
|Node 2 wants to write&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|I&lt;br /&gt;
|M&lt;br /&gt;
|EM&lt;br /&gt;
|N2&lt;br /&gt;
|N2 becomes new head invalidating N1&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another scenario described in 11.4.1 of the Solihin textbook is when a cache is in state M and the directory is in state EM for a given block.  If the cache holding the block flushes the value and the value does not make it to the directory before a read request is made, then there can be a potential race condition.  The race condition is handled by the use of pending states.  When the cache flushes a block, the line transitions from state M to a pending state.  The pending state transitions into the invalid state only when the directory has acknowledged receiving the flush.  This allows the cache to stall any read request made to the block until the block enters the steady state of I [[#References | (Solihin)]].&lt;br /&gt;
&lt;br /&gt;
== SCI States ==&lt;br /&gt;
&lt;br /&gt;
=== Directory States ===&lt;br /&gt;
In SCI, the directory and each cache maintain a series of states. The directory states define the state of the memory block from the perspective of the home directory.  This 2-bit field is maintained in the memory tag by the home directory along with the pointer to the head of the sharing list (forwId). The simple state model below includes three stable states and one semi-stable state.&lt;br /&gt;
&lt;br /&gt;
The directory can be in one of three states or a transitional state:&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Table 1: Memory States &lt;br /&gt;
|----&lt;br /&gt;
!State )&lt;br /&gt;
!Description&lt;br /&gt;
!Minimal&lt;br /&gt;
!Typical&lt;br /&gt;
!Full&lt;br /&gt;
|----&lt;br /&gt;
|HOME or UNCACHED (U&lt;br /&gt;
|no sharing list&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|FRESH or SHARED (S)&lt;br /&gt;
|sharing-list copy is the same as memory&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|GONE  or EXCLUSIVE/MODIFIED (EM)&lt;br /&gt;
|sharing-list copy may be different from memory&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|WASH*&lt;br /&gt;
|transitional state (GONE to FRESH)&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|Y&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the directory has the block of memory in the GONE or EM state, then the directory must forward any incoming read/write requests for the block to the last cache that modified the block.  That cache is responsible for updating main memory and the block that requested the data. This is why the directory must maintain a pointer to the first cache in the cache list.&lt;br /&gt;
&lt;br /&gt;
These states are used by the coherency model to determine the state of the cache line when memory transactions are performed by individual processors.  Likewise, these memory states are impacted when these memory transactions occur.&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts the transition between these memory states:&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_state.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Complicated ===&lt;br /&gt;
For a cache, there are 29 stable states described in the SCI standard and many pending states.  Each state consists of two parts.  The first part of the state tells where the state is in the linked list. There are four possibilities [[#References | (Cutler (1999))]]:&lt;br /&gt;
&lt;br /&gt;
# ONLY – if the cache is the only state to have cached the memory block&lt;br /&gt;
# HEAD – if the cache is the most recent reader/writer of the block and so is the first in the list&lt;br /&gt;
# TAIL – if the cache is the least recent reader/writer of the block and so is the last in the list&lt;br /&gt;
# MID – if the cache is not the first or last in the list&lt;br /&gt;
&lt;br /&gt;
In addition to these four location designations for the states, there are other states to describe the actual state of the memory on the cache.  Some of these include:&lt;br /&gt;
&lt;br /&gt;
# CLEAN – if the data in the memory block has not been modified, is the same as main memory, but can be modified.&lt;br /&gt;
# DIRTY – if the data in the memory block has been modified, is different from main memory, and can be written to again if needed.&lt;br /&gt;
# FRESH – if the data in the memory block has not been modified, is the same as main memory, but cannot be modified without notifying main memory.&lt;br /&gt;
# COPY – if the data in the memory has not been modified, is the same as main memory, but cannot be modified, only read.&lt;br /&gt;
&lt;br /&gt;
Each designation for the location can match with a designation for the state which creates additional states like:&lt;br /&gt;
&lt;br /&gt;
* ONLY_DIRTY - if the cache is the only state to have the cached memory block, and the cache has modified the memory block so it is different from main memory&lt;br /&gt;
* MID_FRESH - if the cache is neither the first nor last cache in the list, and the data it has is the same as what is in main memory.&lt;br /&gt;
&lt;br /&gt;
As implied in the [[#Coherence Race Conditions | Race Conditions ]] section, some states are impossible, like: MID_DIRTY or TAIL_CLEAN. Below is a list of the typical states and their state diagram.&lt;br /&gt;
&lt;br /&gt;
=====States of the Typical Set=====&lt;br /&gt;
&lt;br /&gt;
Following are the states defined for the Typical set.  (Note that other states may be supported to provide certain interoperability with nodes implementing the Full set, but are not used when all nodes support the Typical set.)&lt;br /&gt;
&lt;br /&gt;
* '''ONLY_DIRTY''' - only one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''ONLY_FRESH''' - only one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and no other processor currently caches the block.&lt;br /&gt;
* '''HEAD_DIRTY''' - more than one processor has the memory block in its cache.  This block is writable, and the processor has written (or intends) to write to it.  This state is set when the processor requests the block with read/write privileges, and another processors already caches the block.&lt;br /&gt;
* '''HEAD_FRESH''' - more than one processor had the memory block in its cache.  This block is writeable, but processor has not written to it.  This state is set when the processor requests the block with read privileges, and another processors already caches the block.&lt;br /&gt;
* '''MID_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is neither the Head or the Tail of the of the sharing list.&lt;br /&gt;
* '''TAIL_VALID''' - more than two processors have the memory in its cache, and it is readable.  The processor cache with this state is the Tail of the of the sharing list.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a state diagram that depicts these states:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:cache_states.png|center]]&lt;br /&gt;
&lt;br /&gt;
=== Cache States : Simplified ===&lt;br /&gt;
A more simplistic way to envision the SCI coherence protocol states is to limit the system to just two processors and expand the [http://en.wikipedia.org/wiki/MESI_protocol MESI protocol] states.  This results in a more compact state diagram, which still gives the general sense of how the protocol causes transitions.  It also illustrates how the directory states influence the cache states. In this case, we maintain the three states in the directory (U, S, EM) and the caches have the following states:&lt;br /&gt;
&lt;br /&gt;
# Invalid (I) – if the block in the cache's memory is invalid.&lt;br /&gt;
# Modified (M) – if the block in the cache's memory has been modified and no longer matches the block in main memory.&lt;br /&gt;
# Exclusive (E) – if the cache has the only copy of the memory block and it matches the block in main memory.&lt;br /&gt;
# Shared-Head (Sh) – if the block in the cache's memory is shared with the other processor's cache, but this processor was the last to read the memory.&lt;br /&gt;
# Shared-Tail (St) – if the block in the cache's memory is shared with the other processor's cache and the other processor was the last to read the memory.&lt;br /&gt;
&lt;br /&gt;
To further simplify this scenario, only the following operations are possible:&lt;br /&gt;
&lt;br /&gt;
# Read(O/S) – a read of the data by either the processor attached to the cache (S for Self) or the other processor (O).&lt;br /&gt;
# Write(O/S) – a write of the memory block by either the processor attached to the cache (S) or the other processor (O).&lt;br /&gt;
 &lt;br /&gt;
As mentioned in the [[#Coherence Race Conditions | Race Conditions ]] section, in order for a processor to make a write, they have to be in the head of the list (or the Sh state in this scenario).&lt;br /&gt;
&lt;br /&gt;
The following state diagram illustrates the transitions:&lt;br /&gt;
&lt;br /&gt;
[[Image:SCIStatesC.png]]&lt;br /&gt;
&lt;br /&gt;
Figure 1: Simplified cache state diagram from SCI&lt;br /&gt;
&lt;br /&gt;
Initially, the cache is in the &amp;quot;I&amp;quot; state and the directory is in the &amp;quot;U&amp;quot; state.  If processor  1 (P1) makes a read, the processor's cache moves from state I to E and the directory moves from U to EM.  The directory records that P1 is the head of the directory list.  At this point, processor 2 (P2) is in state I.  If P2 makes a read, the directory is in state EM, so the directory notifies P1 that P2 is making a read, P1 transitions from E to St, and sends the data to P2.  P2 transitions from I to Sh, and creates a pointer to P1 to note that P1 is the next memory on the directory list. The directory transitions from EM to S and the directory updates its pointer from P1 to P2 to note that P2 is now the head of the directory cache list.&lt;br /&gt;
&lt;br /&gt;
As you can see from the diagram, a Write(S) can only occur when a processor is in the &amp;quot;Sh&amp;quot; state.  In the actual SCI protocol, a write can occur when the cache is in the HEAD state combined with CLEAN/FRESH/DIRTY or when the cache is in the ONLY state.  In this simplified scenario, these states are combined into one, the Sh state.&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
The SCI protocol is a directory based protocol for Distributed Memory Management similar to the one described in [[#References | Solihin ]].  This is an extensive and complicated strategy that maintains coherence as it scales to multiple processors.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Yan Solihin, ''Fundamentals of Parallel Computer Architecture: Multichip and Multicore Systems,'' Solihin Books, 2008.&lt;br /&gt;
* Culler, David E. and Jaswinder Pal Singh, ''Parallel Computer Architecture,'' Morgan Kaufmann Publishers, Inc, 1999.&lt;br /&gt;
* Gustavson, David, and Qiang Li. &amp;quot;The Scalable Coherent Interface (SCI).&amp;quot; IEEE Communications Magazine 1996: 56. Web. 25 Apr 2011. &amp;lt;http://www.cs.utexas.edu/users/dburger/teaching/cs395t-s08/papers/9_sci.pdf&amp;gt;.&lt;br /&gt;
* &amp;quot;1596-1992 - IEEE Standard for Scalable Coherent Interface (SCI).&amp;quot; IEEE Standards Association. N.p., n.d. Web. &amp;lt;http://standards.ieee.org/findstds/standard/1596-1992.html&amp;gt;.&lt;br /&gt;
* &amp;quot;IEEE Standard for Scalable Coherent Interface (SCI).,&amp;quot; IEEE Std 1596-1992 , vol., no., pp.i, 1993. doi: 10.1109/IEEESTD.1993.120366 URL: http://ieeexplore.ieee.org.proxied.lib.ncsu.edu/stamp/stamp.jsp?tp=&amp;amp;arnumber=347683&amp;amp;isnumber=8049 &amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.scizzl.com/HowSCIcohWorks.html How SCI Coherence Works] &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71825</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71825"/>
		<updated>2013-02-05T01:41:07Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing (MPP) ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The picture on the right shows a simple MPP architecture in which each CPU is a subsystem with its own memory and copy of the operating system and application. Each such subsystem communicates with the other subsystems via a high-speed interconnect. Some of the advantages of MPP architecture are that MPP architecture can be efficiently and fully used in solving problems that can be broken down into parallel pieces which can be processed simultaneously. Example of such problems can be mathematical and simulation problems. Apart from research work MPP architecture can also be used in parallel data query or searches. For example, if we have an MPP system with 26 CPU’s we can use this to perform a sequential search, each processor searching one letter of the alphabet.&amp;lt;ref&amp;gt;http://encyclopedia2.thefreedictionary.com/MPP&amp;lt;/ref&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Disadvantages of MPP architecture includes absence of general memory which reduces speed of an inter-processor exchange as there is no way to store general data used by different processor. Secondly local memory and storage can result in bottlenecks as each processor can only use their individual memory. Full system resource use might not be possible with MPP architecture as each subsystem works individually. MPP architectures are costly to build as it requires separate memory, storage and CPU for each subsystem. This can be achieved in cluster architecture which is implemented on load balancing. Cluster architecture is explained in detailed in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;SMP in the above picture stands for symmetric multiprocessing (SMP) found in today's computer systems or laptops. The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71824</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71824"/>
		<updated>2013-02-05T01:32:51Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing (MPP) ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The picture on the right shows a simple MPP architecture in which each CPU is a subsystem with its own memory and copy of the operating system and application. Each such subsystem communicates with the other subsystems via a high-speed interconnect. Some of the advantages of MPP architecture are that MPP architecture can be efficiently and fully used in solving problems that can be broken down into parallel pieces which can be processed simultaneously. Example of such problems can be mathematical and simulation problems. Apart from research work MPP architecture can also be used in parallel data query or searches. For example, if we have an MPP system with 26 CPU’s we can use this to perform a sequential search, each processor searching one letter of the alphabet.&amp;lt;ref&amp;gt;http://encyclopedia2.thefreedictionary.com/MPP&amp;lt;/ref&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Disadvantages of MPP architecture includes absence of general memory which reduces speed of an inter-processor exchange as there is no way to store general data used by different processor. Secondly local memory and storage can result in bottlenecks as each processor can only use their individual memory. Full system resource use might not be possible with MPP architecture as each subsystem works individually. MPP architectures are costly to build as it requires separate memory, storage and CPU for each subsystem. This can be achieved in cluster architecture which is implemented on load balancing. Cluster architecture is explained in detailed in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;SMP in the above picture stands for symmetric multiprocessing (SMP) found in today's computer systems or laptops. The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MPP vs Cluster Architecture===&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71823</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71823"/>
		<updated>2013-02-05T01:32:31Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing (MPP) ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The picture on the right shows a simple MPP architecture in which each CPU is a subsystem with its own memory and copy of the operating system and application. Each such subsystem communicates with the other subsystems via a high-speed interconnect. Some of the advantages of MPP architecture are that MPP architecture can be efficiently and fully used in solving problems that can be broken down into parallel pieces which can be processed simultaneously. Example of such problems can be mathematical and simulation problems. Apart from research work MPP architecture can also be used in parallel data query or searches. For example, if we have an MPP system with 26 CPU’s we can use this to perform a sequential search, each processor searching one letter of the alphabet.&amp;lt;ref&amp;gt;http://encyclopedia2.thefreedictionary.com/MPP&amp;lt;/ref&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Disadvantages of MPP architecture includes absence of general memory which reduces speed of an inter-processor exchange as there is no way to store general data used by different processor. Secondly local memory and storage can result in bottlenecks as each processor can only use their individual memory. Full system resource use might not be possible with MPP architecture as each subsystem works individually. MPP architectures are costly to build as it requires separate memory, storage and CPU for each subsystem. This can be achieved in cluster architecture which is implemented on load balancing. Cluster architecture is explained in detailed in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;SMP in the above picture stands for symmetric multiprocessing (SMP) found in today's computer systems or laptops. The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MPP Architecture vs Cluster Architecture===&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71822</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71822"/>
		<updated>2013-02-05T01:32:00Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The picture on the right shows a simple MPP architecture in which each CPU is a subsystem with its own memory and copy of the operating system and application. Each such subsystem communicates with the other subsystems via a high-speed interconnect. Some of the advantages of MPP architecture are that MPP architecture can be efficiently and fully used in solving problems that can be broken down into parallel pieces which can be processed simultaneously. Example of such problems can be mathematical and simulation problems. Apart from research work MPP architecture can also be used in parallel data query or searches. For example, if we have an MPP system with 26 CPU’s we can use this to perform a sequential search, each processor searching one letter of the alphabet.&amp;lt;ref&amp;gt;http://encyclopedia2.thefreedictionary.com/MPP&amp;lt;/ref&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Disadvantages of MPP architecture includes absence of general memory which reduces speed of an inter-processor exchange as there is no way to store general data used by different processor. Secondly local memory and storage can result in bottlenecks as each processor can only use their individual memory. Full system resource use might not be possible with MPP architecture as each subsystem works individually. MPP architectures are costly to build as it requires separate memory, storage and CPU for each subsystem. This can be achieved in cluster architecture which is implemented on load balancing. Cluster architecture is explained in detailed in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;SMP in the above picture stands for symmetric multiprocessing (SMP) found in today's computer systems or laptops. The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MPP Architecture vs Cluster Architecture===&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71821</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71821"/>
		<updated>2013-02-05T01:28:17Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The picture on the right shows a simple MPP architecture in which each CPU is a subsystem with its own memory and copy of the operating system and application. Each such subsystem communicates with the other subsystems via a high-speed interconnect. Some of the advantages of MPP architecture are that MPP architecture can be efficiently and fully used in solving problems that can be broken down into parallel pieces which can be processed simultaneously. Example of such problems can be mathematical and simulation problems. Apart from research work MPP architecture can also be used in parallel data query or searches. For example, if we have an MPP system with 26 CPU’s we can use this to perform a sequential search, each processor searching one letter of the alphabet.&amp;lt;ref&amp;gt;http://encyclopedia2.thefreedictionary.com/MPP&amp;lt;/ref&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Disadvantages of MPP architecture includes absence of general memory which reduces speed of an inter-processor exchange as there is no way to store general data used by different processor. Secondly local memory and storage can result in bottlenecks as each processor can only use their individual memory. Full system resource use might not be possible with MPP architecture as each subsystem works individually. MPP architectures are costly to build as it requires separate memory, storage and CPU for each subsystem. This can be achieved in cluster architecture which is implemented on load balancing. Cluster architecture is explained in detailed in the next section.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;SMP in the above picture stands for symmetric multiprocessing (SMP) found in today's computer systems or laptops. The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71820</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71820"/>
		<updated>2013-02-05T01:02:07Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;SMP in the above picture stands for symmetric multiprocessing (SMP) found in today's computer systems or laptops. The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71819</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71819"/>
		<updated>2013-02-05T01:00:19Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Massively Parallel Processing Architecture.  Image from [http://encyclopedia2.thefreedictionary.com/MPP MPP]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71818</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71818"/>
		<updated>2013-02-05T00:56:10Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71817</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71817"/>
		<updated>2013-02-05T00:55:22Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71816</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71816"/>
		<updated>2013-02-05T00:49:29Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:MPP.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71815</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71815"/>
		<updated>2013-02-05T00:48:42Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Massively Parallel Processing or MPP, Cluster, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71814</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71814"/>
		<updated>2013-02-05T00:47:49Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71813</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71813"/>
		<updated>2013-02-05T00:46:44Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Shared Storage]]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from [http://www.unix.org/whitepapers/Image11.gif Compare]]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71812</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71812"/>
		<updated>2013-02-05T00:45:51Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ClustersSharedStorage.png‎|thumb|right|upright|325px|Shared storage in cluster architecture. Image from http://www.unix.org/whitepapers/Image11.gif Shared Storage ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from http://www.unix.org/whitepapers/Image11.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:ClustersSharedStorage.png&amp;diff=71811</id>
		<title>File:ClustersSharedStorage.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:ClustersSharedStorage.png&amp;diff=71811"/>
		<updated>2013-02-05T00:43:39Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:MPP.png&amp;diff=71810</id>
		<title>File:MPP.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:MPP.png&amp;diff=71810"/>
		<updated>2013-02-05T00:42:29Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cluster_MPP_%26_SMP.png&amp;diff=71809</id>
		<title>File:Cluster MPP &amp; SMP.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cluster_MPP_%26_SMP.png&amp;diff=71809"/>
		<updated>2013-02-05T00:40:49Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: uploaded a new version of &amp;amp;quot;File:Cluster MPP &amp;amp; SMP.png&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71808</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71808"/>
		<updated>2013-02-05T00:38:30Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|500px|Different supercomputer architecture. Image from http://www.unix.org/whitepapers/Image11.gif]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71807</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71807"/>
		<updated>2013-02-05T00:37:03Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.png‎|thumb|center|upright|600px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cluster_MPP_%26_SMP.png&amp;diff=71806</id>
		<title>File:Cluster MPP &amp; SMP.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cluster_MPP_%26_SMP.png&amp;diff=71806"/>
		<updated>2013-02-05T00:36:46Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71805</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71805"/>
		<updated>2013-02-05T00:32:07Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster_MPP_&amp;amp;_SMP.gif‎|thumb|center|upright|600px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71804</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71804"/>
		<updated>2013-02-05T00:31:08Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Cluster MPP &amp;amp; SMP.gif|thumb|center|upright|600px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=File:Cluster_MPP_%26_SMP.gif&amp;diff=71803</id>
		<title>File:Cluster MPP &amp; SMP.gif</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=File:Cluster_MPP_%26_SMP.gif&amp;diff=71803"/>
		<updated>2013-02-05T00:30:08Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71802</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71802"/>
		<updated>2013-02-05T00:28:19Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|center|upright|600px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71800</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71800"/>
		<updated>2013-02-05T00:27:35Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= The Supercomputer Landscape Today =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers and can solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive and used for computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As technology has advanced, supercomputers have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article talks about the landscape of today's modern supercomputers by describing the benchmarks and characteristics of today's top supercomputers, and compares the different supercomputer architecture approach. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;For the history and development of supercomputers, please refer to these [http://wiki.expertiza.ncsu.edu/index.php/Main_Page wiki articles].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Benchmarks ==&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In addition, a software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Furthermore, starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Characteristics ==&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a small time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second. It is targeting to conduct [http://news.cnet.com/8301-11386_3-57541791-76/titan-supercomputer-debuts-for-open-scientific-research/ researches] such as material science code, climate change, and biofuels to bring tremendous real world societal benefits.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the later sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can cause processors delay, system shutdown, or even equipments burn-down. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. An interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that uses boiled water to cool down the system and can consume 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is last major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Supercomputers Architecture ==&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|right|upright|300px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|center|upright|500px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster ===&lt;br /&gt;
&amp;lt;p&amp;gt; In cluster architecture group of computers are connected together through networking and they appear as a single system to the outside world. All the processing in this architecture is carried out using load balancing and resource sharing which is done completely on the back ground. Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at 82 percent.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In cluster architecture computers are harnessed together and they work independent of the application interacting with it. In fact the application or user running on the architecture sees them as a single resource.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;There are three main components to cluster architecture namely interconnect technology, storage and memory.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Interconnect technology is responsible for coordinating the work of the nodes and for effecting failover procedures in the case of a subsystem failure. Interconnect technology is responsible for making the cluster appear to be a monolithic system and is also the basis for system management tools &amp;lt;ref&amp;gt;http://www.unix.org/whitepapers/cluster.html&amp;lt;/ref&amp;gt;. The main components used for this technology are mainly network or dedicated buses specifically used for achieving this interconnect reliability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Secondly storage in cluster architecture can be shared or distributed. The picture on the right shows an example of shared storage architecture for clusters. As you can see in here all the computers use the same storage. One of the benefit of using shared storage is it has less overhead of syncing different storages. Additionally, shared storage makes sense if the applications running on it have large shared databases. In distributed storage each node in cluster has its own storage. Information sharing between nodes is carried out using message passing on network. Additional work is needed to keep all the storage in sync in case of failover.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Lastly memory in clusters also comes in shared or distributed flavors. Most commonly in clusters distributed memory is used but in certain cases shared memory can also be used depending on the final use of the system.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Some of the benefits of using cluster architecture are to produce higher performance, higher availability, greater scalability and lower operating costs. Cluster architectures are famous for providing continuous and uninterrupted service. This is achieved using redundancy. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Now that we know how cluster architecture works let’s see how this architecture differs from MPP. The picture below compares different architectures and as you can see each of the approaches aims to improve system performance and or system reliability. But cluster architecture provides both broad scalable performance and high availability. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|center|upright|600px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
=== Massively Parallel Processing, MPP ===&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Constellation ===&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Grid Computing ===&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advantages &amp;amp; Disadvantages of Supercomputers ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Top 10 Supercomputers ==&lt;br /&gt;
[[File:Top500-november-2012.png|thumb|right|upright|350px|[http://www.datacenterknowledge.com/top-10-supercomputers-illustrated-november-2012/ Top 10 Supercomputers]]]&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary==&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71617</id>
		<title>CSC/ECE 506 Spring 2013/1b dj</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_506_Spring_2013/1b_dj&amp;diff=71617"/>
		<updated>2013-02-03T18:11:33Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Comparisons Between Supercomputers&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[http://dictionary.reference.com/browse/supercomputer Supercomputers] are extremely capable computers, able to solve complex tasks in a relatively small amount of time. Their ability to massively outperform typical home and office computers is made possible normally either by an abundance of processor cores or smaller computers working in conjunction together.  Supercomputers are generally specialized computers that tend to be very expensive, not available for general-purpose use and are used in computations where large amounts of numerical processing is required.  They are used in scientific, military, graphics applications and for other number or data intensive computations &amp;lt;ref&amp;gt;http://dictionary.reference.com/browse/supercomputer Definition of supercomputer&amp;lt;/ref&amp;gt;, &amp;lt;ref&amp;gt;http://www.webopedia.com/TERM/S/supercomputer.html Definition of supercomputer&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Since supercomputers have existed, as technology has advanced, they have continued to be surpassed by one another.  This has lead to a drive for engineers and scientists to design and create supercomputers that continue to outperform others&amp;lt;ref&amp;gt;http://en.wikipedia.org/wiki/Supercomputer#History&amp;lt;/ref&amp;gt;.  This article compares current supercomputers as well as supercomputer architectures.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;For the history, development and current state of supercomputing, including a fairly recent, detailed top 10 list, please see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry a fellow student's wiki article on Supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Benchmarking Supercomputers =&lt;br /&gt;
&amp;lt;p&amp;gt;Supercomputers are generally compared qualitatively using floating point operations per second, or [http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html FLOPS].  Using standard prefixes, higher levels of FLOPS can be specified as the computing power of supercomputers increases.  For example, KiloFLOPS for thousands of FLOPS and MegaFLOPS for millions of FLOPS &amp;lt;ref&amp;gt;http://kevindoran.blogspot.com/2011/04/comparing-performance-of-supercomputers.html Doran, Kevin (April 2011) Comparing the performance of supercomputers&amp;lt;/ref&amp;gt;.  Often you'll see just the first letter of the prefix with FLOPS.  For example, for GigaFLOPS or billions of FLOPS, you'll see [http://top500.org/faq/what_gflop_s GFLOPS] &amp;lt;ref&amp;gt;http://top500.org/faq/what_gflop_s Definition of GFLOPS&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;A software package called [http://www.top500.org/project/linpack LINPACK] is a standard approach to testing or benchmarking supercomputers by solving a dense system of linear equations using the Gauss method.  &amp;lt;ref&amp;gt;http://www.top500.org/project/linpack LINPACK defined&amp;lt;/ref&amp;gt;.  However, LINPACK benchmarking software is not only used to benchmark supercomputers, it can also be used to benchmark a typical user computer &amp;lt;ref&amp;gt;http://www.xtremesystems.org/forums/showthread.php?197835-IntelBurnTest-The-new-stress-testing-program Intel Benchmark Software&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Characteristics =&lt;br /&gt;
&amp;lt;p&amp;gt;Based on the [http://www.TOP500.org TOP500.org]  data as of November 2012, today’s supercomputers share the following key characteristics:&amp;lt;/p&amp;gt;&lt;br /&gt;
*'''High Processing Speed''' is the primary feature of supercomputer. As the technology grows, more and more calculation-intensive tasks such as weather forecasting and molecular modeling needed to be performed and resolved in a smalr time frame. These tasks used to take years to complete, but a supercomputer can now solve the same problem in minutes. As November 2012, the world’s #1 supercomputer, [http://top500.org/system/177975 Cray Titan], can handle more than 20,000 trillion calculation per second.&lt;br /&gt;
*'''Massive Parallel System''' can be used to describe the architecture of the supercomputer. By the end of 20th century, connecting thousands of processors with fast connections started to become the main approach for building supercomputers. Today, there are two main approaches to build this massive parallel system – the grid computing and computer cluster approaches, which will be described in the below sections.&lt;br /&gt;
*'''Large Power Consumption''' is one of the major problems for running a supercomputer. Each supercomputer can contain thousands of processors and requires a tremendous amount of power to run. For example, [http://en.wikipedia.org/wiki/K_computer K computer], a Japanese supercomputer on [http://www.TOP500.org TOP500.org] reported the highest total power consumption of 9.89 MW in 2011, which is the equivalent of the total power consumption for 10,000 suburban homes in one year.&lt;br /&gt;
*'''Heat Management''' is another major problem for supercomputer and affect the computer system in various ways. For instances, it can slow down the processors, causes system reboots, or even burn out the equipment. In order to reduce the heat, various cooling technologies can be applied, such as liquid cooling, air cooling, etc. One of interesting example was the [http://www.extremetech.com/extreme/131259-ibm-deploys-hot-water-cooled-supercomputer dubbed Aquasar], a hot-water cooling system developed by IBM that consumes 40 percent less energy than a comparable air-cooling system.&lt;br /&gt;
*'''High Cost''' is another major issue of supercomputer. For example, the initial upgrade of Titan supercomputer was $60 million, and the estimated total cost for the system was $97 million.&lt;br /&gt;
&lt;br /&gt;
= Finding Supercomputer Comparison Data =&lt;br /&gt;
&amp;lt;p&amp;gt;Starting in 1993, [http://www.TOP500.org TOP500.org] began collecting performance data on computers and update their list every six months &amp;lt;ref&amp;gt;http://top500.org/faq/what_top500 What is the TOP500&amp;lt;/ref&amp;gt;.  This appears to be an excellent online source of information that collects benchmark data submitted by users of computers and readily provides performance statistics by Vendor, Application, Architecture and nine (9) other areas &amp;lt;ref name=&amp;quot;t500stats&amp;quot;&amp;gt;http://i.top500.org/stats TOP500 Stats&amp;lt;/ref&amp;gt;.  This article, in order to be vendor neutral, is providing the comparison by architecture.  However, there are many ways to compare supercomputers and the user interface at [http://www.TOP500.org TOP500.org] makes these comparisons easy to do.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Comparison of Supercomputers by Architecture =&lt;br /&gt;
[[File:2011nov-top500-architecture.png|thumb|right|upright|300px|Current distribution of architecture types among the top 500 supercomputers.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Traditional supercomputers of today are composed of three (3) types of parallel processing architectures.  These architectures are Cluster, Massively Parallel Processing or MPP, and Constellation &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.  A non-traditional, or disruptive approach, to supercomputers is [http://searchdatacenter.techtarget.com/definition/grid-computing Grid Computing]&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graphic generated at [http://www.TOP500.org/ TOP500.org] shows the distribution of supercomputers by architecture.  The Massively Parallel Processing section of the graph makes up 17.8% of the total number of current supercomputers.  The bulk of supercomputers is made up of clustered systems, which Constellation architectures make up a fraction of a percent of supercomputers.  Each architecture is further discussed, below.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Cluster ==&lt;br /&gt;
[[File:2011nov-top500-cluster-count.png|thumb|right|upright|325px|Number of cluster systems among the top 500 supercomputers since before 2000. Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://searchdatacenter.techtarget.com/definition/cluster-computing Cluster] is a group of computers connected together that appear as a single system to the outside world and provide load balancing and resource sharing &amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/cluster-computing Definition of Cluster Computing&amp;lt;/ref&amp;gt;.  Invented by Digital Equipment Corporation in the 1980's, clusters of computers form the largest number of supercomputers available today &amp;lt;ref&amp;gt;http://books.google.com/books?id=Hd_JlxD7x3oC&amp;amp;pg=PA90&amp;amp;lpg=PA90&amp;amp;dq=what+is+a+constellation+in+parallel+computing?&amp;amp;source=bl&amp;amp;ots=Rf9nxSqOgL&amp;amp;sig=-xleas5wXvNpvkgYYxguvP1tSLA&amp;amp;hl=en&amp;amp;sa=X&amp;amp;ei=aDcnT-XRNqHX0QHymbjrAg&amp;amp;ved=0CGMQ6AEwBw#v=onepage&amp;amp;q=what%20is%20a%20constellation%20in%20parallel%20computing%3F&amp;amp;f=false Applied Parallel Computing&amp;lt;/ref&amp;gt;, &amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://www.TOP500.org TOP500.org] data as of November 2011 shows that Cluster computing makes up the largest subset of supercomputers at eight-two percent (82%).  The chart to the right shows the growth of cluster supercomputer systems with the oldest data on the right.  Teh number of clustered supercomputer systems grew rapidly during the 21st century and started leveling off after about 7.5 years.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 cluster supercomputers is reported at 50,192.82 TFLOPS and the trend for growth of cluster based supercomputers has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; Some of the advantages and disadvantages of using cluster architecture are shown below. &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Advantages'''&lt;br /&gt;
- Test&lt;br /&gt;
&lt;br /&gt;
== Massively Parallel Processing, MPP ==&lt;br /&gt;
[[File:2011nov-top500-mpp-count.png|thumb|right|upright|325px|Number of MPP systems among the top 500 supercomputers since before 1995.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html Massively Parallel Processing] or MPP supercomputers are made up of hundreds of computing nodes and process data in a coordinated fashion &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot;&amp;gt;http://whatis.techtarget.com/definition/0,,sid9_gci214085,00.html&amp;lt;/ref&amp;gt;.  Each node of the MPP generally has its own memory and operating system and can be made up of nodes that have multiple processors and/or multiple cores &amp;lt;ref name=&amp;quot;ttmppdef&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;[http://i.TOP500.org/stats TOP500.org/stats] for the MPP architecture of supercomputers shows that as of November 2011, MPP makes up approximately 17.8% of all supercomputers reported.  A graph of the growth and subsequent decline of the MPP architecture from data displayed at [http://i.TOP500.org/stats TOP500.org/stats] is shown on the right.  MPP supercomputer systems grew from the early 90's until the early part of the 21st century and have since declined in total number.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the top 500 MPP supercomputers is 23,823.97 TFLOPS.  The trend of MPP supercomputers, like cluster based supercomputers, has leveled off&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Constellation ==&lt;br /&gt;
[[File:2011nov-top500-constellation-count.png|thumb|right|upright|350px|Number of constellation systems among the top 500 supercomputers since before 2000.  Image from i.TOP500.org/stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;A [http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf Constellation] is a cluster of supercomputers &amp;lt;ref&amp;gt;http://www.mimuw.edu.pl/~mbiskup/presentations/Parallel%20Computing.pdf&amp;lt;/ref&amp;gt;.  [http://www.TOP500.org TOP500.org] shows only one constellation supercomputer as of November 2011.  The graph shows rapid growth and decline in the first 5 years of the 21st century.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;This author's speculation about the decline of constellations is based on several factors:  Multiple processor and/or multiple core computers have been getting faster and less expensive.  Combine these less expensive computers into very large clusters and you can get computing power that rivals a constellation.  Alternatively, more and more computers have symmetric multiprocessing, SMP, and the concept of constellations and clusters is converging.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The total processing power of the constellation supercomputer is:  52.84 TFLOPS&amp;lt;ref name=&amp;quot;t500stats&amp;quot; /&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grid Computing ==&lt;br /&gt;
[[File:20120130-grid-computing-graph.png|thumb|right|upright|350px|Daily computing power (TFLOPS) of grid supercomputers over a several month period.  Image from http://www.gridrepublic.org/index.php?page=stats]]&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing is defined as applying many networked computers to solving a single problem simultaneously&amp;lt;ref&amp;gt;http://searchdatacenter.techtarget.com/definition/grid-computing&amp;lt;/ref&amp;gt;.  It is also defined as a network of computers used by a single company or organization to solve a problem&amp;lt;ref&amp;gt;http://boinc.berkeley.edu/trac/wiki/DesktopGrid&amp;lt;/ref&amp;gt;.  Yet another definition as implemented by GridRepublic.org creates a supercomputing grid by using volunteer computers from across the globe&amp;lt;ref&amp;gt;http://www.gridrepublic.org/index.php?page=about&amp;lt;/ref&amp;gt;.  All of these definitions have something in common, and that is using parallel processing to attack a problem that can be broken up into many pieces.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The graph generated by data at [http://www.GridRepublic.org GridRepublic.org] shows the average processing power of this supercomputer created by volunteers from around the world.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;The GridRepublic.org statistics is for 55 applications running using a total of 10,979,114 GFLOPS or 10,979.114 TFLOPS&amp;lt;ref name=&amp;quot;grstats&amp;quot;&amp;gt;http://www.gridrepublic.org/index.php?page=stats&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Top 10 Supercomputers =&lt;br /&gt;
&amp;lt;p&amp;gt;According to [http://www.top500.org/ Top500.org], the top 10 supercomputers in the world, as of November 2012, are listed below:&amp;lt;/p&amp;gt;&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Number&lt;br /&gt;
!Name&lt;br /&gt;
!System&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Titan&lt;br /&gt;
|[http://www.top500.org/system/177975 Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x]&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Sequoia&lt;br /&gt;
|[http://www.top500.org/system/177556 BlueGene/Q, Power BQC 16C 1.60 GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|K computer&lt;br /&gt;
|[http://www.top500.org/system/177232 SPARC64 VIIIfx 2.0GHz, Tofu interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Mira&lt;br /&gt;
|[http://www.top500.org/system/177718 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|JUQUEEN&lt;br /&gt;
|[http://www.top500.org/system/177722 BlueGene/Q, Power BQC 16C 1.600GHz, Custom Interconnect]&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|SuperMUC&lt;br /&gt;
|[http://www.top500.org/system/177719 iDataPlex DX360M4, Xeon E5-2680 8C 2.70GHz, Infiniband FDR]&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Stampede&lt;br /&gt;
|[http://www.top500.org/system/177931 PowerEdge C8220, Xeon E5-2680 8C 2.700GHz, Infiniband FDR, Intel Xeon Phi]&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Tianhe-1A&lt;br /&gt;
|[http://www.top500.org/system/176929 NUDT YH MPP, Xeon X5670 6C 2.93 GHz, NVIDIA 2050]&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|Fermi-100&lt;br /&gt;
|[http://www.top500.org/system/177720 BlueGene/Q, Power BQC 16C 1.60GHz, Custom]&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|DARPA Trial Subset&lt;br /&gt;
|[http://www.top500.org/system/177725 Power 775, POWER7 8C 3.836GHz, Custom Interconnect]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;p&amp;gt;For a more detailed version of this list, see [http://expertiza.csc.ncsu.edu/wiki/index.php/CSC/ECE_506_Spring_2012/1a_ry#Top_10_supercomputers_of_today.5B9.5D a fellow student's wiki on supercomputers].&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Advantages &amp;amp; Disadvantages of Supercomputers =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;An excellent way to compare the advantages and disadvantages of supercomputers is to use a table.  Although this list is not exhaustive, it generally sums up the advantages as being the ability solve large number crunching problems quickly but at a high cost due to the specialty of the hardware, the physical scale of the system and power requirements.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Advantage&lt;br /&gt;
!Disadvantage&lt;br /&gt;
|-&lt;br /&gt;
|Ability to process large amounts of data.  Examples include atmospheric modeling and oceanic modeling.  Processing large matrices and weapons simulation&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot;&amp;gt;http://www.zdnet.com/blog/murphy/uses-for-supercomputers/746 Murphy, Paul (December 2006) Uses for supercomputers&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Limited scope of applications, or in general, they're not general purpose computers.  Supercomputers are usually engaged in scientific, military or mathematical applications&amp;lt;ref name=&amp;quot;paulmurphy&amp;quot; /&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|The ability to process large amounts of data quickly and in parallel, when compared to the ability of low end commercial systems or user computers&amp;lt;ref&amp;gt;http://nickeger.blogspot.com/2011/11/supercomputers-advantages-and.html Eger, Nick (November 2011) Supercomputer advantages adn disadvantages&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|Cost, power and cooling.  Commercial supercomputers costs hundreds of millions of dollars.  They have on-going energy and cooling requirements that are expensive&amp;lt;ref name=&amp;quot;robertharris&amp;quot;&amp;gt;http://www.zdnet.com/blog/storage/build-an-8-ps3-supercomputer/220?tag=rbxccnbzd1 Harris, Robert (October 2007) Build an 8 PS3 supercomputer&amp;lt;/ref&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Although these are advantages and disadvantages of the traditional supercomputer, there is movement towards the consumerization of supercomputers which could result in supercomputers being affordable to the average person&amp;lt;ref name=&amp;quot;robertharris&amp;quot; /&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Summary of the Comparison of Supercomputers =&lt;br /&gt;
&lt;br /&gt;
Cluster supercomputers account for about twice as much processing in TFLOPS as MPP based supercomputers.  The statistics tracked by [http://www.GridRepublic.org GridRepublic.org] for 55 applications shows that grid computing is using about the same amount of processing power as the fastest individual supercomputer listed on the [http://www.TOP500.org TOP500.org] list of supercomputers.  The fastest computer listed is the&lt;br /&gt;
RIKEN located at the Advanced Institute for Computational Science (AICS) in Japan, which is a K computer, SPARC64 VIIIfx 2.0GHz, and Tofu interconnect that operates at 10510.00 TFLOPS&amp;lt;ref&amp;gt;http://www.top500.org/list/2011/11/100&amp;lt;/ref&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Grid Computing as an alternative to individually defined supercomputers seems to be growing and the expense of operating it is fully distributed across the volunteers that are apart of it.  However, with any system where you don't have complete control of its parts, you can't rely on all of those parts being there all the time.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56200</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56200"/>
		<updated>2011-11-22T16:49:24Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* CI Setup and Reporting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration [http://en.wikipedia.org/wiki/Continuous_integration (CI)] is a software development practice that is commonly used in [http://en.wikipedia.org/wiki/Agile_software_development Agile software development] methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development [http://en.wikipedia.org/wiki/Test-driven_development (TDD)], which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response [http://en.wikipedia.org/wiki/Response_time_(technology) (TTR)] for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by [http://en.wikipedia.org/wiki/Electric_Cloud Electric Cloud], CI server by Hudson, and Team Foundation Server, [http://www.microsoft.com/visualstudio/en-us/scenarios/virtual-lab-management Lab Management], Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56199</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56199"/>
		<updated>2011-11-22T16:45:51Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration [http://en.wikipedia.org/wiki/Continuous_integration (CI)] is a software development practice that is commonly used in [http://en.wikipedia.org/wiki/Agile_software_development Agile software development] methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development [http://en.wikipedia.org/wiki/Test-driven_development (TDD)], which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response [http://en.wikipedia.org/wiki/Response_time_(technology) (TTR)] for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56198</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56198"/>
		<updated>2011-11-22T16:44:45Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Why Implement CI? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in [http://en.wikipedia.org/wiki/Agile_software_development Agile software development] methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development [http://en.wikipedia.org/wiki/Test-driven_development (TDD)], which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response [http://en.wikipedia.org/wiki/Response_time_(technology) (TTR)] for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56197</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56197"/>
		<updated>2011-11-22T16:43:36Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in [http://en.wikipedia.org/wiki/Agile_software_development Agile software development] methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development [http://en.wikipedia.org/wiki/Test-driven_development (TDD)], which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56196</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56196"/>
		<updated>2011-11-22T16:43:01Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in [http://en.wikipedia.org/wiki/Agile_software_development Agile software development] methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56195</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56195"/>
		<updated>2011-11-22T16:42:42Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in [http://en.wikipedia.org/wiki/Agile_software_development Agile software development methodology]. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56194</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56194"/>
		<updated>2011-11-22T16:40:26Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in Agile software development methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for [http://en.wikipedia.org/wiki/Stakeholder stakeholders].&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56193</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56193"/>
		<updated>2011-11-22T16:40:03Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in Agile software development methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for [http://en.wikipedia.org/wiki/Agile_software_development Agile Software Development].&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56192</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56192"/>
		<updated>2011-11-22T16:39:32Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in Agile software development methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for [http://en.wikipedia.org/wiki/Agile_software_development Agile Software Development]&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56191</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56191"/>
		<updated>2011-11-22T16:34:08Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Expand your knowledge */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in Agile software development methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;br /&gt;
* Why Continuous Integration [http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56190</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=56190"/>
		<updated>2011-11-22T16:33:10Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Why Implement CI? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in Agile software development methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principle, it works with small team, requires developers to deliver working code in short iterations, and uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Also it requires all the codes to be reviewed and tested continuously as the development goes, which is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance for Agile to succeed in delivering refined products in short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository. &amp;lt;ref name=&amp;quot;CIRef5&amp;quot;&amp;gt;Laurie Williams.  &amp;quot;Scrum + Engineering Practices: Experiences of Three Microsoft Teams&amp;quot; http://collaboration.csc.ncsu.edu/laurie/Papers/ESEM11_SCRUM_Experience_CameraReady.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint&amp;lt;ref name=&amp;quot;Ready Product&amp;quot;&amp;gt;Why Continuous Integration?&amp;quot; http://www.cavdar.net/2009/03/07/why-continuous-integration/&amp;lt;/ref&amp;gt;. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
===CI Reporting Metrics===&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&amp;lt;ref name=&amp;quot;CIRef6&amp;quot;&amp;gt;Designing data warehouse for equipment management system&amp;quot; http://www.tandfonline.com/doi/abs/10.1080/00207540701222776?journalCode=tprs20#preview&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#'''Time To Response (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Base Size:''' the total lines of code of the overall organization &amp;lt;ref name=&amp;quot;CIRef7&amp;quot;&amp;gt;Code base size, complexity and language choice&amp;quot; http://ayende.com/blog/3070/code-base-size-complexity-and-language-choice&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance.&lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is configured the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55478</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55478"/>
		<updated>2011-11-17T14:29:44Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
Continuous Integration (CI) is a software development practice that is commonly used in Agile software development methodology. &amp;lt;ref name=&amp;quot;Agile&amp;quot;&amp;gt;&amp;quot;Manifesto for Agile Software Development&amp;quot; http://www.agilemanifesto.org/&amp;lt;/ref&amp;gt;Agile is a software development method based on iterative and incremental development. In principles, it works with small team; it requires developers to deliver working code in short iterations; it uses Test Driven Development (TDD), which requires developers to develop tests before writing code. Finally all the codes must be reviewed and tested continuously as the development goes, and that is where CI fits in.&lt;br /&gt;
&lt;br /&gt;
==What is CI?==&lt;br /&gt;
CI is used to ensure that all changes to a software project’s code are successfully built, tested, reported on, and rapidly made available to all parties after they are introduced. &amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;Enterprise Solution Providers, Inc.  &amp;quot;Why and How to build a Continuous Integration Environment for the .NET platform&amp;quot; http://www.espusa.com/whitepapers/continuous_integration_v1.0.pdf&amp;lt;/ref&amp;gt; It is aimed to deliver high quality software using the least amount of time, by applying quality control throughout the whole software development process. Without CI, there is no chance to succeed in delivering refined products in Agile’s short release cycles.&lt;br /&gt;
&lt;br /&gt;
==How does CI work?==&lt;br /&gt;
[[File:ContinuousIntegration.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
The above diagram shows an overview of a simple CI environment, which will give us a good idea of how CI works. &amp;lt;ref name=&amp;quot;CIRef2&amp;quot;&amp;gt;Thomas Jaspers.  &amp;quot;Continuous Integration – Overview&amp;quot; http://blog.codecentric.de/en/2009/11/&amp;lt;/ref&amp;gt;.In order to apply quality control throughout the project, CI requires members of the team integrate their work into the main code repository at least daily, which leads to multiple integrations per day. Each developer will first build and run all the tests locally to ensure all the changes are good, then commit the changes to the repository using some version control tools, such as Subversion. Once the CI sever detects the new commits, it will kick out an automated build that runs all the automated tests that could detect compile/integration errors as quickly as possible. If the automated build fails, the team will be notified and required to resolve the error immediately. In addition, at least once every 24 hours, a nightly build will be executed to ensure the quality of the code in the main repository.&lt;br /&gt;
&lt;br /&gt;
==CI Reporting Metrics==&lt;br /&gt;
The team can also generate reports that indicate the overall health of the application on the CI environment. This application health can be measured by the CI reporting metrics. Some examples of these metrics are shown below:&lt;br /&gt;
&lt;br /&gt;
#'''Time To Reponses (TTR):''' the elapsed time to fix the most recent broken build&lt;br /&gt;
#'''Time Between Failures (TBF):''' the elapsed time between consecutive breakages (non-zero errors) of the same build&lt;br /&gt;
#'''Unit Test Count:''' the total number of unit tests on each automated build&lt;br /&gt;
#'''Unit Test Passed Count:''' the total number of unit tests that are passed on each automated build&lt;br /&gt;
#'''Unit Test Covered Lines:''' the count of the non-commented source lines scanned by the coverage tool that are exercised by statement-level automated unit testing on each automated build&lt;br /&gt;
#'''Validation Test Count:''' the total number of validation tests on each automated build&lt;br /&gt;
#'''Validation Test Passed Count:''' the total number of validation tests that are passed on each automated build&lt;br /&gt;
#'''Error Count:''' the total number of errors occurs on each automated build&lt;br /&gt;
#'''Warning Count:''' the total number of warnings occurs on each automated build&lt;br /&gt;
#'''Code Based Size:''' the total lines of code of the overall organization&lt;br /&gt;
&lt;br /&gt;
These reporting metrics provide a way to improve the transparency of the project. It helps the team to understand the build, design, and code quality of the overall application; it helps us understand the trend of development process, and eliminate defects before introduction; it also helps developers to understand their individual impact to the project, and improve personal performance. &lt;br /&gt;
&lt;br /&gt;
==Advantages and Disadvantages==&lt;br /&gt;
===Advantages===&lt;br /&gt;
Continuous Integration has the following advantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;Wikipedia &amp;quot;Continuous integration&amp;quot; http://en.wikipedia.org/wiki/Continuous_integration&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Early warning of broken/incompatible code and conflicting changes&lt;br /&gt;
*Guarantees successfully compiled software&lt;br /&gt;
*Visible program reporting and problem tracking&lt;br /&gt;
*Easy to revert the code base to bug-free state&lt;br /&gt;
*Reduce development integration effort&lt;br /&gt;
*Immediate unit testing for all changes&lt;br /&gt;
*Constant availability of functioning code for demo or release purposes&lt;br /&gt;
*High impact environment upgrade with low maintenance&lt;br /&gt;
*Help developers to understand their individual impact to project, and improve their personal performance&lt;br /&gt;
===Disadvantages===&lt;br /&gt;
Continuous Integration has the following disadvantages:&amp;lt;ref name=&amp;quot;CIRef1&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;wiki&amp;quot;&amp;gt;&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Migration of internal development projects into a CI environment requires a lot of initial setup time and tight planning&lt;br /&gt;
*Well-developed test-suite is required for the automated build&lt;br /&gt;
*Costs for CI building machines&lt;br /&gt;
*Requires a good understanding of CI and discretion when setting up projects&lt;br /&gt;
&lt;br /&gt;
Assuming that the CI environment is setup the way it supposes to be, it doesn’t matter how experienced the developer is, once he/she understands how to build and commit code he/she will be always benefited from it. For example, they can find out immediately if the build is broken after they commit the code, and learn how to write high-quality code. &lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples &amp;lt;ref name=&amp;quot;Bugs&amp;quot;&amp;gt;Top Ten Most Infamous Software Bugs Of All Time&amp;quot; http://able2know.org/topic/129489-1&amp;lt;/ref&amp;gt;which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander&amp;lt;ref name=&amp;quot;EC&amp;quot;&amp;gt;Electric Commander&amp;quot; http://www.electriccloud.com/&amp;lt;/ref&amp;gt; by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
In the end continuous integration infrastructure provides that platform for big companies to produce software that is cost effective and profitable with less defects. Combining it with the agile software development methodologies makes sense as it gives big companies options to have shippable product that is well tested at the end of each sprint. Moreover CI also solves the overall integration problem of big software projects were small teams are working individually on small components that includes open source third party software by testing overall system functionality daily. The above reasoning shows why big companies that are adopting agile as their main software development strategy more than often also adopts continuous integration as their system and component integration and testing infrastructure.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55191</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55191"/>
		<updated>2011-11-16T16:28:44Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* CI Setup and Reporting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Definitions===&lt;br /&gt;
====Time To Response (TTR)====&lt;br /&gt;
&lt;br /&gt;
====Time Between Failures (TBF)====&lt;br /&gt;
&lt;br /&gt;
==Continuous Integration (CI)==&lt;br /&gt;
&lt;br /&gt;
==Agile Project Development with CI==&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* [1] Software Bugs [http://able2know.org/topic/129489-1 Top Ten Software Bugs] &lt;br /&gt;
* [2] Electric Cloud [http://www.electriccloud.com/ Electric Commander]&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55190</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55190"/>
		<updated>2011-11-16T16:28:30Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* CI Setup and Reporting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Definitions===&lt;br /&gt;
====Time To Response (TTR)====&lt;br /&gt;
&lt;br /&gt;
====Time Between Failures (TBF)====&lt;br /&gt;
&lt;br /&gt;
==Continuous Integration (CI)==&lt;br /&gt;
&lt;br /&gt;
==Agile Project Development with CI==&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* [1] Software Bugs [http://able2know.org/topic/129489-1 Top Ten Software Bugs] &lt;br /&gt;
* [2] Electric Cloud [http://www.electriccloud.com/ Electric Commander]&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55188</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55188"/>
		<updated>2011-11-16T16:07:47Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* Time To Response (TTR) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Definitions===&lt;br /&gt;
====Time To Response (TTR)====&lt;br /&gt;
&lt;br /&gt;
====Time Between Failures (TBF)====&lt;br /&gt;
&lt;br /&gt;
==Continuous Integration (CI)==&lt;br /&gt;
&lt;br /&gt;
==Agile Project Development with CI==&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg]]&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* [1] Software Bugs [http://able2know.org/topic/129489-1 Top Ten Software Bugs] &lt;br /&gt;
* [2] Electric Cloud [http://www.electriccloud.com/ Electric Commander]&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55187</id>
		<title>CSC/ECE 517 Fall 2011/ch6 6f jd</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2011/ch6_6f_jd&amp;diff=55187"/>
		<updated>2011-11-16T16:07:09Z</updated>

		<summary type="html">&lt;p&gt;Dapatel2: /* CI Setup and Reporting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;'''Continous Integration'''&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Definitions===&lt;br /&gt;
====Time To Response (TTR)====&lt;br /&gt;
Test-Driven Development (TDD) is the process of writing tests first and foremost.  These tests represent desired improvements and/or new functionality in the system.  Since these changes have yet to be implemented, the tests must fail when initially run.  Then code is written until these tests can be passed, assuring that the desired behavior is exhibited by the code.  Finally the code is rewritten to meet acceptable standards.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:EC.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Time Between Failures (TBF)====&lt;br /&gt;
&lt;br /&gt;
==Continuous Integration (CI)==&lt;br /&gt;
&lt;br /&gt;
==Agile Project Development with CI==&lt;br /&gt;
&lt;br /&gt;
==Why Implement CI?==&lt;br /&gt;
Most of the major companies producing software for sale are in the business to make money. Companies have discovered that the best way to make money is decrease the number of defects going out to customers. Tons of research has been done on how to make quality software with fewer defects. The usual cost of fixing a defect slipping from one phase to next phase increases by ten times.  So for example if a defect cost $60 to fix during the coding phase will cost $600 if found during validation testing. Moreover if a defect is shipped along with the product to the customers it can certain times cost millions of dollars. Additionally these small defects can have big impact on company’s reputation. Below are some examples which shows how small defects when slipped or goes out undetected can cost millions of dollars. 	&lt;br /&gt;
&lt;br /&gt;
# In 2007 a single faulty piece of embedded software, on a network card, sends out faulty data on the United States Customs and Border Protection network, bringing the entire system to a halt. Nobody is able to leave or enter the U.S. from the LA Airport for over eight hours. Over 17,000 planes were grounded for the duration of the outage resulting in millions of dollars in damage.&lt;br /&gt;
# A forgotten error handling statement which caused the famous ping of death also known as blue screen in 1995.  A lack of error handling in the IP fragmentation reassembly code makes it possible to crash many Windows, Macintosh, and Unix operating systems by sending a malformed “ping” packet from anywhere on the Internet.&lt;br /&gt;
# In 2004, EDS software giant introduced a large, complex IT system to the U.K.’s Child Support Agency (CSA). At the exact same time, the Department for Work and Pensions (DWP) decided to restructure the entire agency. The restructure and the new software were completely incompatible, and irreversible errors were introduced as a result. With over 500 bugs still reported as open in the new system, the clash of the two events has crippled the CSA’s network. As a result the system somehow managed to overpay 1.9 million people, underpay another 700,000, had $7 billion in uncollected child support payments, a backlog of 239,000 cases, 36,000 new cases “stuck” in the system, and has cost the UK taxpayers over $1 billion to date.&lt;br /&gt;
&lt;br /&gt;
The above examples show why testing phase is as important as coding phase. The more you test the better the software becomes as fewer and fewer defects are found. Below are some of the reasons why big companies are leaning more towards adopting agile and CI for software development.&lt;br /&gt;
# Many developers work on a software through multiple agile teams. Though the focus of each agile team is a specific module of the software but it is important to make sure the overall integrity of the system is always correct.&lt;br /&gt;
# One of the main benefits of agile project development is to have a shippable product at the end of each sprint. If testing is kept until the end than you can’t have a shippable product at the end of each sprint. You have to have some automated testing that can test this functionality on daily basis.&lt;br /&gt;
# The other problem that used to occur by following traditional software development was that management did not know the exact status of the product which includes the number of bugs in the system until the validation phase. This can cause problem in releasing software on time. CI gives an option to generate various reports to solve these kinds of problems and to give management early indication if the product release can be done on time.&lt;br /&gt;
# The main reason for using CI is to cut down on validation cost by finding the bugs early during coding phase.&lt;br /&gt;
# CI infrastructure provides way to decrease Time to Response (TTR) for fixing defects.&lt;br /&gt;
# Additionally some CI infrastructure provides valuable tools like build management and build acceleration. With build acceleration developers and QA do not have to wait long periods to get a completed builds. Build acceleration decreases the build time by performing non-dependent tasks in parallel resulting in increased productivity.&lt;br /&gt;
&lt;br /&gt;
==CI Setup and Reporting==&lt;br /&gt;
There are lots of different ways continuous integration can be incorporated with a software product development. The level of automation varies by project to project. Some project might be able to achieve complete automation and continuous integration whereas some project can be restricted by the testing infrastructure. For example when making a software for say airplane controls there is only limited amount of automated testing that you can do to test. It requires some level of manual steps. Whereas for computer application like word you can automate the testing and can achieve 100% continuous integration.&lt;br /&gt;
   &lt;br /&gt;
There are many different kinds of software that are available out there for implementing continuous integration within a software project. Some of the software includes Electric Commander by Electric Cloud, CI server by Hudson, and Team Foundation Server, Lab Management, Test Manager by Microsoft.  All of the software listed above can be used as the backbone for setting up the CI infrastructure. Additionally, different reporting services can also be added to achieve additional goals. Below are the usual steps that are performed once the CI infrastructure is incorporated. &lt;br /&gt;
&lt;br /&gt;
[[File:EC.jpg]]&lt;br /&gt;
&lt;br /&gt;
# Whenever the new code or functionality is checked into the repository an automated build process is started. &lt;br /&gt;
# Once the product is build unit tests are executed to make sure all the unit tests are passing and that the new functionality has not broken the old functionality. Reports are generated for the results.&lt;br /&gt;
# Once unit test are completed and passed automated smoke tests are performed. The application is usually deployed on a remote machine as a fresh copy and the system testing is performed. Reports are generated for the results.&lt;br /&gt;
# Then additional reporting are performed on the code to see it the code has fulfilled the required criteria (For example, code coverage &amp;gt; 90%, code complexity, Dead code, Duplicate code, Coding standard enforcement) &lt;br /&gt;
# Lastly, when all the 4 steps above are passed additional matrix is generated for management to see. For example TTR to fix a bug, Time between Failures (TBF), Error counts, and Warning reports.&lt;br /&gt;
&lt;br /&gt;
If any of the above steps fail an automated email is generated and send to targeted user to notify that the new code submitted to the repository needs to be fixed. In this way teams can achieve that quick response instead of waiting to hear from validation team which can take days compared to minutes through CI.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* [1] Software Bugs [http://able2know.org/topic/129489-1 Top Ten Software Bugs] &lt;br /&gt;
* [2] Electric Cloud [http://www.electriccloud.com/ Electric Commander]&lt;br /&gt;
&lt;br /&gt;
==Expand your knowledge==&lt;br /&gt;
* Continuous Integration Wikipedia [http://en.wikipedia.org/wiki/Continuous_integration CI]&lt;/div&gt;</summary>
		<author><name>Dapatel2</name></author>
	</entry>
</feed>