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.
		
		
		
		
		
			
		
			
				
					
					
						
							164 lines
						
					
					
						
							6.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							164 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 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>
							 |