<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 ParGAP-package of GAP; see [Coo04]. In this chapter, we outline the basic usage of this parallel part of the lpres-package. For further details on the parallel GAP-sessions we refer to the ParGAP-manual [Coo04]. We note that the ParGAP-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 lpres-package.
<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_mj.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 ParGAP-session may crash. On a linux machine you can simply use `patch < ../../nql/gap/pargap/patch' from within the directory `pargap/lib/'.
<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.
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 ist noch experimentell.