417 lines
17 KiB
HTML
417 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<meta name="generated-by" content="Markdown PRO, http://markdownpro.com"/>
|
|
<title></title>
|
|
<style type="text/css">
|
|
html,body{margin:0;padding:0;}
|
|
body {padding: 20px}
|
|
h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;}
|
|
table{border-collapse:collapse;border-spacing:0;}
|
|
ol,ul{list-style:none;}
|
|
q:before,q:after,blockquote:before,blockquote:after{content:"";}
|
|
html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
|
|
a:focus{outline:thin dotted;}
|
|
a:hover,a:active{outline:0;}
|
|
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
|
|
audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
|
|
audio:not([controls]){display:none;}
|
|
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}
|
|
sup{top:-0.5em;}
|
|
sub{bottom:-0.25em;}
|
|
img{border:0;-ms-interpolation-mode:bicubic;}
|
|
button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;}
|
|
button,input{line-height:normal;*overflow:visible;}
|
|
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
|
|
button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
|
|
input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
|
|
input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;}
|
|
textarea{overflow:auto;vertical-align:top;}
|
|
html,body{background-color:#ffffff;}
|
|
body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;}
|
|
.container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;*display:inline;}
|
|
.container:after{clear:both;}
|
|
.container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;*display:inline;}
|
|
.container-fluid:after{clear:both;}
|
|
.container-fluid>.sidebar{float:left;width:220px;}
|
|
.container-fluid>.content{margin-left:240px;}
|
|
a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;}
|
|
.pull-right{float:right;}
|
|
.pull-left{float:left;}
|
|
.hide{display:none;}
|
|
.show{display:block;}
|
|
.row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;*display:inline;}
|
|
.row:after{clear:both;}
|
|
p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;}
|
|
h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;}
|
|
h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;}
|
|
h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;}
|
|
h3,h4,h5,h6{line-height:36px;}
|
|
h3{font-size:18px;}h3 small{font-size:14px;}
|
|
h4{font-size:16px;}h4 small{font-size:12px;}
|
|
h5{font-size:14px;}
|
|
h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;}
|
|
ul,ol{margin:0 0 18px 25px;}
|
|
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
|
|
ul{list-style:disc;}
|
|
ol{list-style:decimal;}
|
|
li{line-height:18px;color:#808080;}
|
|
ul.unstyled{list-style:none;margin-left:0;}
|
|
dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;}
|
|
dl dt{font-weight:bold;}
|
|
dl dd{margin-left:9px;}
|
|
hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;}
|
|
strong{font-style:inherit;font-weight:bold;}
|
|
em{font-style:italic;font-weight:inherit;line-height:inherit;}
|
|
.muted{color:#bfbfbf;}
|
|
blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;}
|
|
blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';}
|
|
address{display:block;line-height:18px;margin-bottom:18px;}
|
|
code,pre{padding:0 3px 2px;font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
|
code{padding:1px 3px;}
|
|
pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;}
|
|
form{margin-bottom:18px;}
|
|
fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;}
|
|
form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;*display:inline;}
|
|
form .clearfix:after{clear:both;}
|
|
label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;}
|
|
label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;}
|
|
form .input{margin-left:150px;}
|
|
input[type=checkbox],input[type=radio]{cursor:pointer;}
|
|
input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
|
input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;}
|
|
input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
|
input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;}
|
|
select,input[type=file]{height:27px;line-height:27px;*margin-top:4px;}
|
|
select[multiple]{height:inherit;}
|
|
textarea{height:auto;}
|
|
.uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
|
|
:-moz-placeholder{color:#bfbfbf;}
|
|
::-webkit-input-placeholder{color:#bfbfbf;}
|
|
input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);}
|
|
input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);}
|
|
input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;}
|
|
form div.clearfix.error{background:#fae5e3;padding:10px 0;margin:-10px 0 10px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}form div.clearfix.error>label,form div.clearfix.error span.help-inline,form div.clearfix.error span.help-block{color:#9d261d;}
|
|
form div.clearfix.error input,form div.clearfix.error textarea{border-color:#c87872;-webkit-box-shadow:0 0 3px rgba(171, 41, 32, 0.25);-moz-box-shadow:0 0 3px rgba(171, 41, 32, 0.25);box-shadow:0 0 3px rgba(171, 41, 32, 0.25);}form div.clearfix.error input:focus,form div.clearfix.error textarea:focus{border-color:#b9554d;-webkit-box-shadow:0 0 6px rgba(171, 41, 32, 0.5);-moz-box-shadow:0 0 6px rgba(171, 41, 32, 0.5);box-shadow:0 0 6px rgba(171, 41, 32, 0.5);}
|
|
form div.clearfix.error .input-prepend span.add-on,form div.clearfix.error .input-append span.add-on{background:#f4c8c5;border-color:#c87872;color:#b9554d;}
|
|
table{width:100%;margin-bottom:18px;padding:0;border-collapse:separate;*border-collapse:collapse;font-size:13px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;}
|
|
table th{padding-top:9px;font-weight:bold;vertical-align:middle;border-bottom:1px solid #ddd;}
|
|
table td{vertical-align:top;}
|
|
table th+th,table td+td{border-left:1px solid #ddd;}
|
|
table tr+tr td{border-top:1px solid #ddd;}
|
|
table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
|
|
table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
|
|
table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
|
|
table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
|
|
.zebra-striped tbody tr:nth-child(odd) td{background-color:#f9f9f9;}
|
|
.zebra-striped tbody tr:hover td{background-color:#f5f5f5;}
|
|
.zebra-striped .header{cursor:pointer;}.zebra-striped .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;}
|
|
.zebra-striped .header:hover:after{visibility:visible;}
|
|
footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;}
|
|
.page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;}
|
|
.close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=20);-khtml-opacity:0.2;-moz-opacity:0.2;opacity:0.2;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;}
|
|
|
|
pre {
|
|
padding: 0;
|
|
margin: 10px 0px 10px;
|
|
overflow: auto; /*--If the Code exceeds the width, a scrolling is available--*/
|
|
overflow-Y: hidden; /*--Hides vertical scroll created by IE--*/
|
|
}
|
|
pre code {
|
|
margin: 5px; /*--Left Margin--*/
|
|
padding: 0px;
|
|
display: block;
|
|
line-height: 18px;
|
|
}
|
|
.center { text-align:center}
|
|
.left {text-align:left}
|
|
.right {text-align:right}
|
|
|
|
</style><style type="text/css">
|
|
body {
|
|
font-family: "Geneva", Arial, sans-serif;
|
|
font-size: 13px;
|
|
margin: 10px;
|
|
}
|
|
|
|
a, a:visited {
|
|
color: #09c;
|
|
}
|
|
|
|
a:hover {
|
|
color: #336699;
|
|
text-decoration: none;
|
|
}
|
|
|
|
h1 {
|
|
margin: 0px 0px 10px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
h2 {
|
|
border-bottom: 2px dotted #ccc;
|
|
margin: 5px 0px 15px;
|
|
}
|
|
|
|
h6 {
|
|
color: #09c;
|
|
}
|
|
|
|
blockquote {
|
|
font-family: "Georgia", Courier New, courier, sans-serif;
|
|
background: #efefef;
|
|
padding: 5px 10px;
|
|
border: solid 1px #ddd;
|
|
margin: 15px;
|
|
-webkit-border-radius:6px;
|
|
-moz-border-radius:6px;
|
|
border-radius:6px;
|
|
color: #333;
|
|
|
|
}
|
|
|
|
ul, ol {
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
li {
|
|
padding: 3px;
|
|
}
|
|
|
|
|
|
|
|
code {
|
|
background-color: #f1f1f1;
|
|
color: #336699;
|
|
}
|
|
|
|
pre {
|
|
background-color: #f1f1f1;
|
|
}
|
|
|
|
pre > code {
|
|
margin: 0px;
|
|
padding: 5px;
|
|
border: 0px;
|
|
background-color: #f1f1f1;
|
|
}
|
|
|
|
|
|
</style></head>
|
|
<body>
|
|
<h1>Geant4 MPI Interface</h1>
|
|
|
|
<p>Author:
|
|
Koichi Murakami (KEK) / <a href="mailto:Koichi.Murakami@kek.jp">Koichi.Murakami@kek.jp</a></p>
|
|
|
|
<h1>About the interface</h1>
|
|
|
|
<p>G4MPI is a native interface with MPI libraries. The directory contains
|
|
a Geant4 UI library and a couple of parallelized examples.
|
|
Using this interface, users applications can be parallelized with
|
|
different MPI compliant libraries, such as OpenMPI, LAM/MPI, MPICH2 and so on.</p>
|
|
|
|
<h2>System Requirements:</h2>
|
|
|
|
<h3>MPI Library</h3>
|
|
|
|
<p>The MPI interface can work with MPI-compliant libraries,
|
|
such as Open MPI, LAM/MPI, Intel MPI etc.</p>
|
|
|
|
<p>For example, the information about Open MPI can be obtained from
|
|
<a href="http://www.open-mpi.org/">http://www.open-mpi.org/</a></p>
|
|
|
|
<h3>CMake</h3>
|
|
|
|
<p>CMake is used to build G4MPI library, that co-works with Geant4 build system.</p>
|
|
|
|
<h3>Optional</h3>
|
|
|
|
<p>ROOT for histogramming/analysis</p>
|
|
|
|
<hr>
|
|
|
|
<h1>How to build G4MPI</h1>
|
|
|
|
<p>To build G4MPI library, use CMake on Geant4 library installed with CMake build.</p>
|
|
|
|
<p>Check <code>CMakeList.txt</code>, especially the following two variables
|
|
should be taken care to match your MPI library</p>
|
|
|
|
<pre><code>eg.
|
|
set(CMAKE_CXX_COMPILER mpicxx)
|
|
#set(CMAKE_CXX_INCLUDE_PATH ) set if necessary
|
|
</code></pre>
|
|
|
|
<p>Follow these commands,</p>
|
|
|
|
<pre><code>> cd source
|
|
> mkdir build
|
|
> cd build
|
|
> cmake -DGeant4_DIR=<your Geant4 install path>/lib64/Geant4-V.m.n ..
|
|
(V.m.n is the version of Geant4, eg. Geant4-9.6.0)
|
|
> make
|
|
> make install
|
|
</code></pre>
|
|
|
|
<p>The library and header files will be installed on the installation directory
|
|
of Geant4.</p>
|
|
|
|
<hr>
|
|
|
|
<h1>How to use</h1>
|
|
|
|
<h2>How to make parallel applications</h2>
|
|
|
|
<p>An example of a main program:</p>
|
|
|
|
<pre><code class="cc">#include "G4MPImanager.hh"
|
|
#include "G4MPIsession.hh"
|
|
|
|
int main(int argc,char** argv)
|
|
{
|
|
// At first, G4MPImanager/G4MPIsession should be created.
|
|
G4MPImanager* g4MPI= new G4MPImanager(argc,argv);
|
|
|
|
// MPI session (G4MPIsession) instead of G4UIterminal
|
|
G4MPIsession* session= g4MPI-> GetMPIsession();
|
|
|
|
// user application setting
|
|
G4RunManager* runManager= new G4RunManager();
|
|
|
|
....
|
|
|
|
// After user application setting, just start a MPI session.
|
|
MPIsession treats both interactive and batch modes.
|
|
session-> SessionStart();
|
|
|
|
// Finally, terminate the program
|
|
delete g4MPI;
|
|
delete runManager;
|
|
}
|
|
</code></pre>
|
|
|
|
<h3>Notes about session shell</h3>
|
|
|
|
<p>LAM/MPI users can use "G4tcsh" as an interactive session shell.
|
|
For other users (Open MPI/MPICH2), plesae use G4csh (default).</p>
|
|
|
|
<p>In case of OpenMPI, <em>LD<em>LIBRARY</em>PATH</em> for OpenMPI runtime libraries
|
|
should be set at run time. Alternatively, you can add this path
|
|
to the dynamic linker configuration using <code>ldconfig</code>.
|
|
(needs sys-admin authorization)</p>
|
|
|
|
<h2>MPI runtime Environment</h2>
|
|
|
|
<ol>
|
|
<li>Make hosts/cluster configuration of your MPI environment.</li>
|
|
<li>Launch MPI runtime environment, typically executing
|
|
<code>lamboot</code> (LAM) / <code>mpdboot</code> (MPICH2) / <code>mpd</code> (Intel).</li>
|
|
</ol>
|
|
|
|
<h2>How to run</h2>
|
|
|
|
<p>For example,</p>
|
|
|
|
<pre><code>> mpiexec -n # <your application>
|
|
</code></pre>
|
|
|
|
<p>Instead, <code>mpirun</code> command is more convenient for LAM users.</p>
|
|
|
|
<h2>MPI G4UI commands</h2>
|
|
|
|
<p>G4UI commands handling the G4MPI interface are placed in /mpi/.</p>
|
|
|
|
<pre><code>Command directory path : /mpi/
|
|
|
|
Guidance :
|
|
MPI control commands
|
|
|
|
Sub-directories :
|
|
Commands :
|
|
verbose * Set verbose level.
|
|
status * Show mpi status.
|
|
execute * Execute a macro file. (=/control/execute)
|
|
beamOn * Start a parallel run w/ thread.
|
|
.beamOn * Start a parallel run w/o thread.
|
|
masterWeight * Set weight for master node.
|
|
showSeeds * Show seeds of MPI nodes.
|
|
setMasterSeed * Set a master seed for the seed generator.
|
|
setSeed * Set a seed for a specified node.
|
|
</code></pre>
|
|
|
|
<h3>Notes:</h3>
|
|
|
|
<p>While "/run/beamOn" and "/mpi/beamOn" commands invoke beam-on in background,
|
|
so you can input UI commands even while event processing. Note that drawing
|
|
tracks in OpenGL with these commands causes a crash. Please use /mpi/.beamOn
|
|
command instead.</p>
|
|
|
|
<p>The original "/control/execute" and "/run/beamOn" are overwritten
|
|
with "/mpi/execute" and "/mpi/beamOn" commands respectively,
|
|
that are customized for the MPI interface.</p>
|
|
|
|
<hr>
|
|
|
|
<h1>Examples</h1>
|
|
|
|
<p>There are a couple of examples for Geant4 MPI applications.</p>
|
|
|
|
<p>In some cases, you need to set some additional environment variables
|
|
for running examples:</p>
|
|
|
|
<ul>
|
|
<li><em>G4LEDATA</em> : directory path for low energy EM data</li>
|
|
<li><em>G4LEVELGAMMADATA</em> : directory path for photon evapolation</li>
|
|
<li><em>G4SAIDXSDATA</em> : directory path for nucleon cross section data</li>
|
|
</ul>
|
|
|
|
<p>For using ROOT libraries</p>
|
|
|
|
<ul>
|
|
<li><em>ROOTSYS</em> : root path of the ROOT package</li>
|
|
</ul>
|
|
|
|
<h2>exMPI01</h2>
|
|
|
|
<p>A simple application.</p>
|
|
|
|
<p><strong>Configuration:</strong></p>
|
|
|
|
<ul>
|
|
<li>Geometry : chamber / calorimeter</li>
|
|
<li>Primary : particle gun (200 MeV electron as default)</li>
|
|
<li>Physics List : FTFP_BERT</li>
|
|
</ul>
|
|
|
|
<p><strong>Features:</strong></p>
|
|
|
|
<ul>
|
|
<li>Particles are transported in a geometry without any scoring.</li>
|
|
<li>Learn how to parallelized your G4 session.</li>
|
|
</ul>
|
|
|
|
<h2>exMPI02 (ROOT application)</h2>
|
|
|
|
<p>An example of dosimetry in a water phantom.</p>
|
|
|
|
<p><strong>Configuration:</strong></p>
|
|
|
|
<ul>
|
|
<li>Geometry : water phantom</li>
|
|
<li>Primary : broad beam (200 MeV proton)</li>
|
|
<li>Physics List : FTFP_BERT</li>
|
|
<li>Analysis : ROOT histogramming</li>
|
|
</ul>
|
|
|
|
<p><strong>Features:</strong></p>
|
|
|
|
<ul>
|
|
<li>Score dose distribution in a water phantom.</li>
|
|
<li>Learn how to parallelized your applications.</li>
|
|
<li>Create a ROOT file containing histograms/trees in each node.</li>
|
|
</ul>
|
|
|
|
</body>
|
|
</html> |