415 lines
14 KiB
HTML
415 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<style>
|
|
::selection {
|
|
background: #b7ffb7;
|
|
}
|
|
::-moz-selection {
|
|
background: #b7ffb7;
|
|
}
|
|
|
|
body {
|
|
font-family: Arial, Helvetica, sans-serif;
|
|
font-size: 16px;
|
|
width: 800px;
|
|
margin: 0 auto;
|
|
}
|
|
#banner {
|
|
/* Div for banner */
|
|
float:left;
|
|
margin: 0px;
|
|
margin-bottom: 10px;
|
|
width: 100%;
|
|
background-color: #0071C5;
|
|
z-index: 0;
|
|
}
|
|
#banner .logo {
|
|
/* Apply to logo in banner. Add as class to image tag. */
|
|
float: left;
|
|
margin-right: 20px;
|
|
margin-left: 20px;
|
|
margin-top: 15px;
|
|
padding-bottom: 5px;
|
|
}
|
|
h1 {
|
|
text-align: center;
|
|
font-size: 36px;
|
|
}
|
|
h1.title {
|
|
/* Add as class to H1 in banner */
|
|
font-family: "Intel Clear", Verdana, Arial, sans-serif;
|
|
font-weight:normal;
|
|
color: #FFFFFF;
|
|
font-size: 170%;
|
|
margin-right: 40px;
|
|
margin-left: 40px;
|
|
padding-right: 20px;
|
|
text-indent: 20px;
|
|
}
|
|
.h3-alike {
|
|
display:inline;
|
|
font-size: 1.17em;
|
|
font-weight: bold;
|
|
color: #0071C5;
|
|
}
|
|
h3 {
|
|
font-size: 1.17em;
|
|
font-weight: bold;
|
|
color: #0071C5;
|
|
}
|
|
.h4-alike {
|
|
display:inline;
|
|
font-size: 1.05em;
|
|
font-weight: bold;
|
|
}
|
|
pre {
|
|
font-family: "Consolas", Monaco, monospace;
|
|
font-size:small;
|
|
background: #fafafa;
|
|
margin: 0;
|
|
padding-left:20px;
|
|
}
|
|
#footer {
|
|
font-size: small;
|
|
}
|
|
code {
|
|
font-family: "Consolas", Monaco, monospace;
|
|
}
|
|
.code-block
|
|
{
|
|
padding-left:20px;
|
|
}
|
|
.changes {
|
|
margin: 1em 0;
|
|
}
|
|
.changes input:active {
|
|
position: relative;
|
|
top: 1px;
|
|
}
|
|
.changes input:hover:after {
|
|
padding-left: 16px;
|
|
font-size: 10px;
|
|
content: 'More';
|
|
}
|
|
.changes input:checked:hover:after {
|
|
content: 'Less';
|
|
}
|
|
.changes input + .show-hide {
|
|
display: none;
|
|
}
|
|
.changes input:checked + .show-hide {
|
|
display: block;
|
|
}
|
|
|
|
ul {
|
|
margin: 0;
|
|
padding: 0.5em 0 0.5em 2.5em;
|
|
}
|
|
ul li {
|
|
margin-bottom: 3px;
|
|
}
|
|
ul li:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.disc {
|
|
list-style-type:disc
|
|
}
|
|
.circ {
|
|
list-style-type:circle
|
|
}
|
|
|
|
.single {
|
|
padding: 0 0.5em;
|
|
}
|
|
|
|
/* ------------------------------------------------- */
|
|
/* Table styles */
|
|
table{
|
|
margin-bottom:5pt;
|
|
border-collapse:collapse;
|
|
margin-left:0px;
|
|
margin-top:0.3em;
|
|
font-size:10pt;
|
|
}
|
|
tr{
|
|
vertical-align:top;
|
|
}
|
|
th,
|
|
th h3{
|
|
padding:4px;
|
|
text-align:left;
|
|
background-color:#0071C5;
|
|
font-weight:bold;
|
|
margin-top:1px;
|
|
margin-bottom:0;
|
|
color:#FFFFFF;
|
|
font-size:10pt;
|
|
vertical-align:middle;
|
|
}
|
|
th{
|
|
border:1px #dddddd solid;
|
|
padding-top:2px;
|
|
padding-bottom:0px;
|
|
padding-right:3px;
|
|
padding-left:3px;
|
|
}
|
|
td{
|
|
border:1px #dddddd solid;
|
|
vertical-align:top;
|
|
font-size:100%;
|
|
text-align:left;
|
|
margin-bottom:0;
|
|
}
|
|
td,
|
|
td p{
|
|
margin-top:0;
|
|
margin-left:0;
|
|
text-align:left;
|
|
font-size:inherit;
|
|
line-height:120%;
|
|
}
|
|
td p{
|
|
margin-bottom:0;
|
|
padding-top:5px;
|
|
padding-bottom:5px;
|
|
padding-right:5px;
|
|
padding-left:1px;
|
|
}
|
|
.noborder{
|
|
border:0px none;
|
|
}
|
|
.noborder1stcol{
|
|
border:0px none;
|
|
padding-left:0pt;
|
|
}
|
|
td ol{
|
|
font-size:inherit;
|
|
margin-left:28px;
|
|
}
|
|
td ul{
|
|
font-size:inherit;
|
|
margin-left:24px;
|
|
}
|
|
.DefListTbl{
|
|
width:90%;
|
|
margin-left:-3pt;
|
|
}
|
|
.syntaxdiagramtbl{
|
|
margin-left:-3pt;
|
|
}
|
|
.sdtbl{
|
|
}
|
|
.sdrow{
|
|
}
|
|
.sdtblp{
|
|
border:0px none;
|
|
font-size:inherit;
|
|
line-height:120%;
|
|
margin-bottom:0;
|
|
padding-bottom:0px;
|
|
padding-top:5px;
|
|
padding-left:0px;
|
|
padding-right:5px;
|
|
vertical-align:top;
|
|
}
|
|
.idepara, .ide_para{
|
|
border:0px none;
|
|
font-size:inherit;
|
|
line-height:120%;
|
|
margin-bottom:0;
|
|
padding-bottom:0px;
|
|
padding-top:5px;
|
|
padding-left:0px;
|
|
padding-right:5px;
|
|
vertical-align:top;
|
|
}
|
|
|
|
.specs {
|
|
border-collapse:collapse;
|
|
}
|
|
.specs td, .specs th {
|
|
font-size: 14px;
|
|
}
|
|
.specs td {
|
|
border: 1px solid black;
|
|
}
|
|
.specs td td, .specs td th {
|
|
border: none;
|
|
}
|
|
.specs td, .specs td td, .specs td th {
|
|
padding: 0 0.2em 0.2em;
|
|
text-align: center;
|
|
}
|
|
.specs td tr:last-child td,
|
|
.specs td tr:last-child th {
|
|
padding: 0 0.2em;
|
|
}
|
|
.serial-time {
|
|
}
|
|
.modified-time {
|
|
width: 6.5em;
|
|
}
|
|
.compiler {
|
|
}
|
|
.comp-opt {
|
|
}
|
|
.sys-specs {
|
|
width: 18em;
|
|
}
|
|
.note {
|
|
font-size:small;
|
|
font-style: italic;
|
|
}
|
|
</style>
|
|
<title>Intel® Threading Building Blocks. Cholesky sample</title>
|
|
</head>
|
|
<body>
|
|
|
|
<div id="banner">
|
|
<img class="logo" src="data:image/png;base64,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
|
|
9Or1LzUmVVz+HJXDAAAAAElFTkSuQmCC">
|
|
<h1 class="title">Intel® Threading Building Blocks.<br>Cholesky sample</h1>
|
|
</div>
|
|
|
|
<p>
|
|
This directory contains an example of several versions of Cholesky Factorization algorithm.
|
|
<br>
|
|
<br><b>dpotrf</b>: An implementation that calls the Intel® Math Kernel Library (Intel® MKL) dpotrf function to directly perform the factorization. This can be a serial implementation or threaded implementation depending on the version of the Intel MKL library that is linked against.
|
|
<br>
|
|
<br><b>crout</b>: A serial implementation that uses the Crout-Cholesky algorithm for factorization. The same approach is parallelized for the other Intel® Threading Building Blocks (Intel® TBB) based approaches below.
|
|
<br>
|
|
<br><b>depend</b>: A parallel version of Crout-Cholesky factorization that uses an Intel TBB flow graph. This version uses a dependence graph made solely of continue_node objects. This an inspector-executor approach, where a loop nest that is similar to the serial implementation is used to create an unrolled version of the computation. Where the Intel MKL calls would have been made in the original serial implementation of Crout-Cholesky, instead nodes are created and these nodes are linked by edges to the other nodes that they are dependent upon. The resulting graph is relatively large, with a node for each instance of each Intel MKL call. For example, there are many nodes that call dtrsm; one for each invocation of dtrsm in the serial implementation. The is very little overhead in message management for this version and so it is often the highest performing.
|
|
<br>
|
|
<br><b>join</b>: A parallel version of Crout-Cholesky factorization that uses an Intel TBB flow graph. This version uses a data flow approach. This is a small, compact graph that passes tiles along its edges. There is one node per type of Intel MKL call, plus join_nodes that combine the inputs required for each call. So for example, there is only a single node that applies all calls to dtrsm. This node is invoked when the tiles that hold the inputs and outputs for an invocation are matched together in the tag-matching join_node that precedes it. The tag represents the iteration values of the i, j, k loops in the serial implementation at that invocation of the call. There is some overhead in message matching and forwarding, so it may not perform as well as the dependence graph implementation.
|
|
<br>
|
|
<br>This sample code requires a recent Intel TBB library (one that supports the flow graph). And also the Intel MKL library.
|
|
</p>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">System Requirements</div>
|
|
<input type="checkbox">
|
|
<div class="show-hide">
|
|
<p>
|
|
For the most up to date system requirements, see the <a href="http://software.intel.com/en-us/articles/intel-threading-building-blocks-release-notes">release notes.</a>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Files</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<dl>
|
|
<dt><a href="cholesky.cpp">cholesky.cpp</a>
|
|
<dd>Source code for example.
|
|
<dt><a href="init.cpp">init.cpp</a>
|
|
<dd>Source code for example.
|
|
<dt><a href="Makefile">Makefile</a>
|
|
<dd>Makefile for building the example.
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Directories</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<dl>
|
|
<dt><a href="msvs/">msvs</a>
|
|
<dd>Contains Microsoft* Visual Studio* workspace for building and running the example (Windows* systems only).
|
|
<dt><a href="xcode/">xcode</a>
|
|
<dd>Contains Xcode* IDE workspace for building and running the example (OS X* systems only).
|
|
</dl>
|
|
<p>For information about the minimum supported version of IDE, see <a href="http://software.intel.com/en-us/articles/intel-threading-building-blocks-release-notes">release notes.</a></p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Build instructions</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<p>General build directions can be found <a href="../../index.html">here</a>.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="changes">
|
|
<div class="h3-alike">Usage</div>
|
|
<input type="checkbox" checked="checked">
|
|
<div class="show-hide">
|
|
<dl>
|
|
<dt><tt>cholesky [<i>size=value</i>] [<i>blocksize=value</i>] [<i>num_trials=value</i>] [<i>output_prefix=value</i>] [<i>algorithm=value</i>] [<i>num_tbb_threads=value</i>] [<i>input_file=value</i>] [<i>-x</i>] [<i>-h</i>] [<i>size</i> [<i>blocksize</i> [<i>num_trials</i> [<i>output_prefix</i> [<i>algorithm</i> [<i>num_tbb_threads</i>]]]]]]</tt>
|
|
<dd>where:
|
|
<br><tt><i>size</i></tt> - the row/column size of NxN matrix (size <= 46000)
|
|
<br><tt><i>blocksize</i></tt> - the block size; size must be a multiple of the blocksize
|
|
<br><tt><i>num_trials</i></tt> - the number of times to run each algorithm
|
|
<br><tt><i>output_prefix</i></tt> - if provided the prefix will be preappended to output files:
|
|
<i>output_prefix_posdef.txt</i> and
|
|
<i>output_prefix_X.txt</i>; where <i>X</i> is the algorithm used
|
|
<br>if <tt><i>output_prefix</i></tt> is not provided, no output will be written
|
|
<br><tt><i>algorithm</i></tt> - name of the used algorithm - can be dpotrf, crout, depend or join
|
|
<br><tt><i>num_tbb_threads</i></tt> - number of started TBB threads
|
|
<br><tt><i>input_file</i></tt> - if provided it will be read to get the input matrix
|
|
<br><tt><i>-x</i></tt> - skips all validation
|
|
<br><tt><i>-h</i></tt> - show this message
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<br>
|
|
<a href="../index.html">Up to parent directory</a>
|
|
<hr>
|
|
<div class="changes">
|
|
<div class="h3-alike">Legal Information</div>
|
|
<input type="checkbox">
|
|
<div class="show-hide">
|
|
<p>
|
|
Intel and the Intel logo are trademarks of Intel Corporation in the U.S. and/or other countries.
|
|
<br>* Other names and brands may be claimed as the property of others.
|
|
<br>© 2016, Intel Corporation
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|