⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 76.html

📁 国外MPI教材
💻 HTML
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head>	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />	<style type="text/css">	body { font-family: Verdana, Arial, Helvetica, sans-serif;}	a.at-term {	font-style: italic; }	</style>	<title>Self Test</title>	<meta name="Generator" content="ATutor">	<meta name="Keywords" content=""></head><body> <!--<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
-->
<style type="text/css">
@import url(base.css);
@import url(content.css);
</style>
<!--
<title>Multilevel_Sec7.7</title>
<meta http-equiv="Content-Type" content="text/html;  charset=utf-8" />
<script type="text/javascript" src="common.js"></script>
</head>
<body>
<div id="content">
<div id="header">
</div>
-->
<div id="main">
<div class="node">
  <div id="nodeDecoration"><p id="nodeTitle">Combining MPI and OpenMP Parallelism</p></div>
</div>
<div class="node">
  <div id="nodeDecoration"><p id="nodeTitle">Question 1</p></div>
  <div class="MultichoiceIdevice" id="id51">
<script type="text/javascript" src="common.js"></script>
<script type="text/javascript" src="libot_drag.js"></script>
<div class="iDevice emphasis1">
<img alt="IDevice Question Icon"      class="iDevice_icon" src="icon_question.gif" />
<span class="iDeviceTitle">Question 1</span><br/>
<div class="iDevice_inner">
<div id="taquestion51_2" class="block" style="display:block">Which of the following choices is <b>not</b> a 

valid reason for writing an MLP program?

</div> &nbsp;&nbsp;
<table>
<tbody>
<tr><td><input type="radio" name="option51_2" id="i51_5" onclick="getFeedback(0,4,'51_2','multi')"/></td><td>
<div id="taans51_5" class="block" style="display:block">An MLP program could have a faster run time than

single-level parallel programs.

</div></td></tr>
<tr><td><input type="radio" name="option51_2" id="i51_158" onclick="getFeedback(1,4,'51_2','multi')"/></td><td>
<div id="taans51_158" class="block" style="display:block">An MLP program is suited to the Distributed

Shared Memory achitecture characteristic of 

new supercomputers

</div></td></tr>
<tr><td><input type="radio" name="option51_2" id="i51_161" onclick="getFeedback(2,4,'51_2','multi')"/></td><td>
<div id="taans51_161" class="block" style="display:block">Writing an MLP program gives the programmer practice and experience

with the substantial extra library calls and variable restrictions

required

</div></td></tr>
<tr><td><input type="radio" name="option51_2" id="i51_164" onclick="getFeedback(3,4,'51_2','multi')"/></td><td>
<div id="taans51_164" class="block" style="display:block">Writing an MLP program gives the programmer practice in using the two most popular parallel programming libraries

</div></td></tr>
</tbody>
</table>
<div id="sa0b51_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf51_5" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No. This is a valid reason, in fact it is the

underlying purpose for all forms of parallel

processing

</div></div>
<div id="sa1b51_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf51_158" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

Sorry, this is another valid reason. The DSM

architecture is perfectly suited for two-level

parallelism due to its two-level design.

</div></div>
<div id="sa2b51_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf51_161" class="block" style="display:block"><b><span class="success">Correct</span></b><br />

Correct! There is no extra work. Just combine the code from your MPI program and your OpenMP program.

</div></div>
<div id="sa3b51_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf51_164" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No (sort of), this is a valid, if weak, reason to write MLP code. It is always good to practice MPI and OpenMP coding

</div></div>
<br/></div>
</div>
  </div>
</div>
<div class="node">
  <div id="nodeDecoration"><p id="nodeTitle">Question 2</p></div>
  <div class="MultichoiceIdevice" id="id52">
<script type="text/javascript" src="common.js"></script>
<script type="text/javascript" src="libot_drag.js"></script>
<div class="iDevice emphasis1">
<img alt="IDevice Question Icon"      class="iDevice_icon" src="icon_question.gif" />
<span class="iDeviceTitle">Question 2</span><br/>
<div class="iDevice_inner">
<div id="taquestion52_2" class="block" style="display:block"><pre>

Say that on a certain parallel computer

the command to compile Fortran code 

using MPI is this: 

<p>

f90 -X128 $MPI prompi.f

</p>

<p>

Furthermore, say that on this same machine the

comand to compile Fortran using OpenMP is this:

</p>

<p>

f90 -omp proomp.f

</p>

<p>

What would be the compilation command for an MLP

program named promlp.f?

</p>

</pre>

</div> &nbsp;&nbsp;
<table>
<tbody>
<tr><td><input type="radio" name="option52_2" id="i52_5" onclick="getFeedback(0,4,'52_2','multi')"/></td><td>
<div id="taans52_5" class="block" style="display:block">f90 promlp.f

</div></td></tr>
<tr><td><input type="radio" name="option52_2" id="i52_167" onclick="getFeedback(1,4,'52_2','multi')"/></td><td>
<div id="taans52_167" class="block" style="display:block">f90 -X128 $MPI -omp promlp.f

</div></td></tr>
<tr><td><input type="radio" name="option52_2" id="i52_170" onclick="getFeedback(2,4,'52_2','multi')"/></td><td>
<div id="taans52_170" class="block" style="display:block">f90 -X128 $MPI promlp.f

(Since MPI is the higher level library it will automatically load OpenMP)

</div></td></tr>
<tr><td><input type="radio" name="option52_2" id="i52_173" onclick="getFeedback(3,4,'52_2','multi')"/></td><td>
<div id="taans52_173" class="block" style="display:block">f90 -omp -mpi promlp.f

</div></td></tr>
</tbody>
</table>
<div id="sa0b52_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf52_5" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No. This command would load neither the MPI or

OpenMP libraries

</div></div>
<div id="sa1b52_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf52_167" class="block" style="display:block"><b><span class="success">Correct</span></b><br />

Correct! Just combine the command-line options needed for both parallel libraries

</div></div>
<div id="sa2b52_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf52_170" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No. You cannot make such an assumption. Each library has its own separate compiler options

</div></div>
<div id="sa3b52_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf52_173" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No. Wrong options used to load the MPI library

</div></div>
<br/></div>
</div>
  </div>
</div>
<div class="node">
  <div id="nodeDecoration"><p id="nodeTitle">Question 3</p></div>
  <div class="MultichoiceIdevice" id="id53">
<script type="text/javascript" src="common.js"></script>
<script type="text/javascript" src="libot_drag.js"></script>
<div class="iDevice emphasis1">
<img alt="IDevice Question Icon"      class="iDevice_icon" src="icon_question.gif" />
<span class="iDeviceTitle">Question 3</span><br/>
<div class="iDevice_inner">
<div id="taquestion53_2" class="block" style="display:block">In the multi-level parallel search program shown

in this chapter, how many indices of the global

array b is each OpenMP thread searching?

</div> &nbsp;&nbsp;
<table>
<tbody>
<tr><td><input type="radio" name="option53_2" id="i53_5" onclick="getFeedback(0,4,'53_2','multi')"/></td><td>
<div id="taans53_5" class="block" style="display:block">3003

</div></td></tr>
<tr><td><input type="radio" name="option53_2" id="i53_176" onclick="getFeedback(1,4,'53_2','multi')"/></td><td>
<div id="taans53_176" class="block" style="display:block">1001

</div></td></tr>
<tr><td><input type="radio" name="option53_2" id="i53_179" onclick="getFeedback(2,4,'53_2','multi')"/></td><td>
<div id="taans53_179" class="block" style="display:block">4

</div></td></tr>
<tr><td><input type="radio" name="option53_2" id="i53_182" onclick="getFeedback(3,4,'53_2','multi')"/></td><td>
<div id="taans53_182" class="block" style="display:block">1000

</div></td></tr>
</tbody>
</table>
<div id="sa0b53_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf53_5" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No, this is the number of indices (i.e.,size) of

the entire global array b

</div></div>
<div id="sa1b53_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf53_176" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No, but getting warmer. This is the number of iterations each of the

three Worker MPI processes are responsible for; not each thread

</div></div>
<div id="sa2b53_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf53_179" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No, mixing up two things here. Four is the number of OpenMP threads created by each MPI Worker process, <i>not</i> the number of iterations given to each thread.

</div></div>
<div id="sa3b53_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf53_182" class="block" style="display:block"><b><span class="success">Correct</span></b><br />

Correct! Each MPI process has 1000 indices to search which are divided equally among the four OpenMP threads.

</div></div>
<br/></div>
</div>
  </div>
</div>
<div class="node">
  <div id="nodeDecoration"><p id="nodeTitle">Question 4</p></div>
  <div class="MultichoiceIdevice" id="id54">
<script type="text/javascript" src="common.js"></script>
<script type="text/javascript" src="libot_drag.js"></script>
<div class="iDevice emphasis1">
<img alt="IDevice Question Icon"      class="iDevice_icon" src="icon_question.gif" />
<span class="iDeviceTitle">Question 4</span><br/>
<div class="iDevice_inner">
<div id="taquestion54_2" class="block" style="display:block">What is meant by the term domain decomposition and how is it

implemented in the parallel search program discussed in this chapter?

</div> &nbsp;&nbsp;
<table>
<tbody>
<tr><td><input type="radio" name="option54_2" id="i54_5" onclick="getFeedback(0,4,'54_2','multi')"/></td><td>
<div id="taans54_5" class="block" style="display:block">Domain Decomposition is having sets of your global data operated on in

parallel. In the search code domain decompisition is done first for the

worker MPI processes and then for each of the Open MP threads they in

turn create

</div></td></tr>
<tr><td><input type="radio" name="option54_2" id="i54_185" onclick="getFeedback(1,4,'54_2','multi')"/></td><td>
<div id="taans54_185" class="block" style="display:block">Domain decomposition is having sets of the global data operated on in

parallel. In the search program domain decomposition occurs when each

slave MPI process is sent its part of the array b.

</div></td></tr>
<tr><td><input type="radio" name="option54_2" id="i54_188" onclick="getFeedback(2,4,'54_2','multi')"/></td><td>
<div id="taans54_188" class="block" style="display:block">Domain Decomposition is having parallel processors performing

differents sets of operations. That is, the &quot;domain&quot; of the code is

split up. In the search program, this is accomplished by having Boss

and Worker processes which have different duties.

</div></td></tr>
<tr><td><input type="radio" name="option54_2" id="i54_191" onclick="getFeedback(3,4,'54_2','multi')"/></td><td>
<div id="taans54_191" class="block" style="display:block">Domain decomposition is when all the global data is worked on by each

of the processes and threads created. This approach was not used in the

search program.

</div></td></tr>
</tbody>
</table>
<div id="sa0b54_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf54_5" class="block" style="display:block"><b><span class="success">Correct</span></b><br />

Correct in all three ways! Definition, and the two levels of domain decomposition

</div></div>
<div id="sa1b54_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf54_185" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

Very close. Hint: there is another level of domain decomposition...

</div></div>
<div id="sa2b54_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf54_188" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No. Mix up in terminology here. What this answer describes is task or functional decomposition

</div></div>
<div id="sa3b54_2" style="color: rgb(0, 51, 204);display: none;"><div id="taf54_191" class="block" style="display:block"><b><span class="alert">Incorrect</span></b><br />

No. What is the point of, say, both MPI process 1 and MPI process 3 both searching <b>all</b> the global data simultaneously. It is redundant.

</div></div>
<br/></div>
</div>
  </div>
</div>
</div>
<!--
</div>
</body></html>
--></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -