<h3>6 <span class="Heading">On a parallel nilpotent quotient algorithm</span></h3>
<p>We included a parallel version of <strong class="pkg">lpres</strong>'s nilpotent quotient algorithm using the <strong class="pkg">ParGAP</strong>-package of <strong class="pkg">GAP</strong>; see <a href="chapBib.html#biBParGap">[Coo04]</a>. In this chapter, we outline the basic usage of this parallel part of the <strong class="pkg">lpres</strong>-package. For further details on the parallel <strong class="pkg">GAP</strong>-sessions we refer to the <strong class="pkg">ParGAP</strong>-manual <a href="chapBib.html#biBParGap">[Coo04]</a>. We note that the <strong class="pkg">ParGAP</strong>-package has some bottlenecks in practice. Nevertheless the significant speed-up of our computations on a multiple-core system shows that this is a reasonable extension of the <strong class="pkg">lpres</strong>-package.</p>
<p>For using the parallel version of the nilpotent quotient algorithm, you will need to install the <strong class="pkg">ParGAP</strong>-package as described in its manual <a href="chapBib.html#biBParGap">[Coo04]</a>. When using Version 1.1.2 of the <strong class="pkg">ParGAP</strong>-package, you will need to apply the following patch to `pargap/lib/masslave.g' as otherwise the <strong class="pkg">ParGAP</strong>-session may crash. On a linux machine you can simply use `patch < ../../nql/gap/pargap/patch' from within the directory `pargap/lib/'.</p>
<pre class="normal">
--- masslave.g 2001-11-16 13:17:04.000000000 +0100
+++ masslave.g 2009-05-06 12:20:19.000000000 +0200
@@ -467,8 +467,9 @@
if Length(deltas)>1 then max2 := Maximum(max2, deltas[Length(deltas)-1]); fi;
max1 := deltas[Length(deltas)];
pos1 := Position( List(slaveArray, x->realtime-x.time), max1 );
- if max1 > slaveTaskTimeFactor and max1 > 30
- and slaveTaskTime[pos2].total > 60 then
+ if max1 > slaveTaskTimeFactor and
+ max1 > 30 and pos2 <> fail and
+ slaveTaskTime[pos2].total > 60 then
Print("SLAVE ",pos1," SEEMS DEAD!!\n");
fi;
end);
</pre>
<p>Now, you are ready for creating a <strong class="pkg">ParGAP</strong>-session and you can load the <strong class="pkg">lpres</strong>-package from within <strong class="pkg">ParGAP</strong> using `LoadPackage' as usual. The same methods as described previously are available. The following example shows the application of the `NilpotentQuotient'-method to the Grigorchuk group on a quad-core machine. Note that the significant speed-up of the nilpotent quotient algorithm is especially noticeable for large nilpotent quotients. This parallel version of <strong class="pkg">lpres</strong> successfully computes some nilpotent quotients which normally took more than a month to complete.</p>
<p>Note that the only difference in the parallel version of the <strong class="pkg">lpres</strong>-package is a parallel version of the operation `ExtendQuotientSystem'. This latter operation covers the induction step of the nilpotent quotient algorithm.</p>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.