You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							167 lines
						
					
					
						
							6.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							167 lines
						
					
					
						
							6.6 KiB
						
					
					
				| 
 | |
| <!DOCTYPE html | |
|   PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |
| <!-- saved from url=(0014)about:internet --> | |
| <html xmlns:MSHelp="http://www.microsoft.com/MSHelp/" lang="en-us" xml:lang="en-us"><head> | |
|       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
|     | |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
| <meta name="DC.Type" content="topic"> | |
| <meta name="DC.Title" content="Intel® Threading Building Blocks Benefits"> | |
| <meta name="DC.subject" content="Benefits"> | |
| <meta name="keywords" content="Benefits"> | |
| <meta name="DC.Relation" scheme="URI" content="../main/title.htm"> | |
| <meta name="DC.Format" content="XHTML"> | |
| <meta name="DC.Identifier" content="tutorial_Benefits"> | |
| <link rel="stylesheet" type="text/css" href="../intel_css_styles.css"> | |
| <title>Intel® Threading Building Blocks Benefits</title> | |
| <xml> | |
| <MSHelp:Attr Name="DocSet" Value="Intel"></MSHelp:Attr> | |
| <MSHelp:Attr Name="Locale" Value="kbEnglish"></MSHelp:Attr> | |
| <MSHelp:Attr Name="TopicType" Value="kbReference"></MSHelp:Attr> | |
| </xml> | |
| </head> | |
| <body id="tutorial_Benefits"> | |
|  <!-- ==============(Start:NavScript)================= --> | |
|  <script src="../NavScript.js" language="JavaScript1.2" type="text/javascript"></script> | |
|  <script language="JavaScript1.2" type="text/javascript">WriteNavLink(1);</script> | |
|  <!-- ==============(End:NavScript)================= --> | |
| <a name="tutorial_Benefits"><!-- --></a> | |
| 
 | |
|   | |
|   <h1 class="topictitle1">Intel® Threading Building Blocks Benefits</h1> | |
|   | |
|     | |
|   <div>  | |
| 	 <p> Intel® Threading Building Blocks (Intel® TBB) is a library that helps | |
| 		you leverage multi-core performance without having to be a threading expert. | |
| 		Typically you can improve performance for multi-core processors by implementing | |
| 		the key points explained in the early sections of the User Guide. As your | |
| 		expertise grows, you may want to dive into more complex subjects that are | |
| 		covered in advanced sections.  | |
| 	 </p> | |
|   | |
| 	 <p>There are a variety of approaches to parallel programming, ranging from | |
| 		using platform-dependent threading primitives to exotic new languages. The | |
| 		advantage of Intel® Threading Building Blocks is that it works at a higher | |
| 		level than raw threads, yet does not require exotic languages or compilers. You | |
| 		can use it with any compiler supporting ISO C++. The library differs from | |
| 		typical threading packages in the following ways:  | |
| 	 </p> | |
|   | |
| 	 <ul type="disc">  | |
| 		<li>  | |
| 		  <p><strong>Intel® Threading Building Blocks enables you to specify  | |
| 				<em>logical paralleism</em> instead of threads</strong>. Most threading | |
| 			 packages require you to specify threads. Programming directly in terms of | |
| 			 threads can be tedious and lead to inefficient programs, because threads are | |
| 			 low-level, heavy constructs that are close to the hardware. Direct programming | |
| 			 with threads forces you to efficiently map logical tasks onto threads. In | |
| 			 contrast, the Intel® Threading Building Blocks run-time library automatically | |
| 			 maps logical parallelism onto threads in a way that makes efficient use of | |
| 			 processor resources.  | |
| 		  </p> | |
|   | |
| 		</li> | |
|   | |
| 		<li>  | |
| 		  <p><strong>Intel® Threading Building Blocks targets  | |
| 				<em>threading for performance</em></strong>. Most general-purpose | |
| 			 threading packages support many different kinds of threading, such as threading | |
| 			 for asynchronous events in graphical user interfaces. As a result, | |
| 			 general-purpose packages tend to be low-level tools that provide a foundation, | |
| 			 not a solution. Instead, Intel® Threading Building Blocks focuses on the | |
| 			 particular goal of parallelizing computationally intensive work, delivering | |
| 			 higher-level, simpler solutions.  | |
| 		  </p> | |
|   | |
| 		</li> | |
|   | |
| 		<li>  | |
| 		  <p><strong>Intel® Threading Building Blocks is  | |
| 				<em>compatible</em> with other threading packages.</strong> Because the | |
| 			 library is not designed to address all threading problems, it can coexist | |
| 			 seamlessly with other threading packages.  | |
| 		  </p> | |
|   | |
| 		</li> | |
|   | |
| 		<li>  | |
| 		  <p><strong>Intel® Threading Building Blocks emphasizes  | |
| 				<em>scalable, data parallel programming</em></strong>. Breaking a program | |
| 			 up into separate functional blocks, and assigning a separate thread to each | |
| 			 block is a solution that typically does not scale well since typically the | |
| 			 number of functional blocks is fixed. In contrast, Intel® Threading Building | |
| 			 Blocks emphasizes  | |
| 			 <em>data-parallel</em> programming, enabling multiple threads to work | |
| 			 on different parts of a collection. Data-parallel programming scales well to | |
| 			 larger numbers of processors by dividing the collection into smaller pieces. | |
| 			 With data-parallel programming, program performance increases as you add | |
| 			 processors.  | |
| 		  </p> | |
|   | |
| 		</li> | |
|   | |
| 		<li>  | |
| 		  <p><strong>Intel® Threading Building Blocks relies on  | |
| 				<em>generic programming</em></strong>. Traditional libraries specify | |
| 			 interfaces in terms of specific types or base classes. Instead, Intel® | |
| 			 Threading Building Blocks uses generic programming. The essence of generic | |
| 			 programming is writing the best possible algorithms with the fewest | |
| 			 constraints. The C++ Standard Template Library (STL) is a good example of | |
| 			 generic programming in which the interfaces are specified by  | |
| 			 <em>requirements</em> on types. For example, C++ STL has a template | |
| 			 function  | |
| 			 <samp class="codeph">sort</samp> that sorts a sequence abstractly defined in | |
| 			 terms of iterators on the sequence. The requirements on the iterators are:  | |
| 		  </p> | |
|   | |
| 		  <ul type="disc">  | |
| 			 <li>  | |
| 				<p>Provide random access  | |
| 				</p> | |
|   | |
| 			 </li> | |
|   | |
| 			 <li>  | |
| 				<p>The expression  | |
| 				  <samp class="codeph">*i<*j</samp> is true if the item pointed to by | |
| 				  iterator  | |
| 				  <samp class="codeph">i</samp> should precede the item pointed to by iterator | |
| 				   | |
| 				  <samp class="codeph">j</samp>, and false otherwise.  | |
| 				</p> | |
|   | |
| 			 </li> | |
|   | |
| 			 <li>  | |
| 				<p>The expression  | |
| 				  <samp class="codeph">swap(*i,*j)</samp> swaps two elements.  | |
| 				</p> | |
|   | |
| 			 </li> | |
|   | |
| 		  </ul> | |
|   | |
| 		</li> | |
|   | |
| 	 </ul> | |
|   | |
| 	 <p>Specification in terms of requirements on types enables the template to | |
| 		sort many different representations of sequences, such as vectors and deques. | |
| 		Similarly, the Intel® Threading Building Blocks templates specify requirements | |
| 		on types, not particular types, and thus adapt to different data | |
| 		representations. Generic programming enables Intel® Threading Building Blocks | |
| 		to deliver high performance algorithms with broad applicability.  | |
| 	 </p> | |
|   | |
|   </div> | |
|   | |
| 
 | |
| <div class="familylinks"> | |
| <div class="parentlink"><strong>Parent topic:</strong> <a href="../main/title.htm">Intel® Threading Building Blocks Documentation</a></div> | |
| </div> | |
| <div></div> | |
| 
 | |
| </body> | |
| </html>
 |