Parallele Operationen

  • Vektorreduktion
    • Norm
    • Skalarprodukt
    • Ergebnis wird auf alle Prozessoren repliziert
    • Gleiche Syntax wie bei nicht-verteilter Reduktion
  • Vektorausdrücke
    • Gesamtes Spektrum wie bei nicht-verteilten Vektoren
    • Gleiche Syntax wie die letztgenannten
  • Matrixabbildungen mit verteilten Ansichten
    • Skalierung von links und rechts mit einem Skalarwert
    • Division einer Matrix durch einn Skalar
    • Konjugierte Ansicht
    • Wird durch lokales Mapping implementiert, und kann auf neue lokale Mappings angewandt werden (einschließlich benutzerdefinierter)
  • Transponieren mit verteilter Ansicht
    • Eine transponierte Matrix kann auch einer anderen zugewiesen werden
      B= trans(A);
      allerdings ist diese Operation recht aufwendig, da die Daten migriert werden
    • In vielen Operationen wird die Matrix jedoch nicht physisch transponiert, sondern stattdessen ein anderer Algorithmus verwandt, siehe Matrix-Vektor-Produkt
  • Hermitesche einer verteilten Matrix
    • Algorithmen können adjungierte lineare Projektion benutzen
  • Verteiltes Matrix-Vektor-Produkt
    • Quell- und Ziel-Vektor können verschiedene Verteilungen haben
    • Spezielle Implementierung für die transponierte Matrix, bei der die Matrix nicht transponiert wird
    • Funktioniert auch mit konjugierten und hermiteschen Matrizen
    • Kann als Term in einem Vektorausdruck verwendet werden
  • Verteiltes Vorkonditionieren, siehe oben
  • Serialisierung von nicht verteilten Containern
    • Vektoren
    • Dichte Matrizen
    • Komprimierte Matrizen
    • Nutzbar mit allen boost::mpi Kommandos
      • broadcast(world, A, 0) sendet A von Prozessor 0 zu allen anderen
    • Schnelle Serialisierung für MTL-Container mit intrinsischen MPI Typen
      • Zum Beispiel wird dense_vector<user_type> als MPI_Packed und dense_vector<double> als MPI_Double mit Pseudo-Serialisierung versendet
  • Initialisierung von verteilten Matrizen im Matrix-Market-Format

© 2017 SimuNova UG