Speedup mit tbb::concurrent_unordered_set

Die C++ Standard-Klassen std::set und std::map bzw. ihre unsortierten Varianten std::unordered_set und std::unordered_map (assoziative Container) sind nicht thread-safe. Eine thread-safe Alternative sind die entsprechenden Container (tbb::concurrent_set, tbb::concurrent_unordered_set, …) aus der frei verfügbaren Intel-Bibliothek Threading Building Blocks (TBB). Dazu ein Beispiel: für eine FEM-Berechnung sei ein 3D-Modells mittels Tetraeder trianguliert. Üblicherweise […]

Modulares Potenzieren

\(\newcommand{\Mod}[1]{\ \mathrm{mod}\ #1}\)Für einen Primzahltest (kleiner Fermatscher Satz) wird die Auswertung von$$a^{p-1} \Mod{p} , \qquad 0< a < p , \quad a,p \in \mathbb{N}$$ für große Zahlen $a$ und $p$ benötigt. Die Operatiom $a^q \Mod{p}$ wird als diskrete Exponentialfunktion (auch modulare Exponentiation oder modulares Potenzieren) bezeichnet. Die naive Berechnung, bestimme […]