Seltsames Problem mit Bibliotheken



  • Hallo

    Da ich keine Ahnung habe, worauf mein Problem basiert, werde ich es erstmal nur ziemlich abstrakt formulieren:

    Ich habe ein Programm, welches an einigen Stellen Zwischenergebnisse zur Überprüfung der Rechnung und am Ende ein Endergebnis ausspuckt.

    Ich habe dieses Programm zweimal durchlaufen lassen, einmal habe ich dabei auf Llapack zugegriffen und beim zweiten mal mkl. (Die Math kernel library von Intel). Aus den Bibliotheken habe ich die Funktion zheev benutzt, die eine hermitesche Matrix diagonalisiert.

    Vor der Diagonalisierung habe ich ein paar Subroutinen, die die Matrixelemente eintragen.

    Das Problem ist nun folgendes: Beide Durchläufe (des identischen Programms mit verschiedenen Bibliotheken) produzieren verschiedene Zwischenergebnisse vor der Diagonalisierung, aber offenbar ein identisches Endergebnis. Hat jemand eine Ahnung, woran sowas liegt?



  • Viele Wege fuehren nach Rom. Es werden halt unterschiedliche Varianten des gleichen Algorithmuses oder unterschiedliche Algorithmen verwendet. Nur weil eine Funktion blub heisst, mussen nicht alle Implementierungen mit dem gleichen Namen auch das gleiche machen. Beispiel: 7+3+1 -> (7+3)+1 = 7+(3+1). Dort habe ich bei Variante a) ein Zwischenergebnis von 10, bei Variante b) eins von 4.



  • Ich bin äußerst skeptisch, ob deine Erklärung zutrifft. Immerhin läuft der gleiche Algorithmus ab. Allerdings habe ich soweit ich weiß beim Zugriff auf die zweite Bibliothek noch eine automatische omp-Routine drin, die das Programm irgendwie selbstständig parallelisiert. Kann das die Ursache für die Differenz sein?



  • Wird das jetzt ein Ratespiel? Es kann viele Ursachen geben. Warum spielt das ueberhaupt eine Rolle, wenn doch das Endergebnis stimmt?



  • Ich bin selbst ratlos. 😞
    Es ist aber deshalb relevant, weil ich mich möglicherweise in Zukunft auch auf die Zwischenergebnisse verlassen können will. Und ich weiß auch nicht, ob das mit dem richtigen Endergebnis nicht nur Zufall ist.



  • Das Problem ist gelöst. Ich weiß zwar nicht, wieso es vorher funktioniert hat, aber ich weiß zumindest, dass das nicht wieder auftritt 😃


Anmelden zum Antworten