Octave ist ein C++-Programm zur interaktiven - oder batchgesteuerten - Matrixbearbeitung, das weitgehend zu Matlab kompatibel ist. Es wurde entwickelt von John W. Eaton von der University of Texas at Austin und ist unter den GNU (Copyleft)-Bedingungen frei verfügbar. Weitere Einzelheiten zu Octave selbst entnehme man der Dokumentation, die im RZ-WWW verfügbar ist.
Octave benutzt für die grundlegenden Operationen die LAPACK-Bibliothek, die in der Veclib enthalten ist. Damit muß man ``nur noch'' Octave auf der hydra übersetzen und statt der mitgelieferten Matrix-Routinen die Veclib einbinden. Dies gestaltete sich aus verschiedenen Gründen als langwieriges Unterfangen, wobei das Hauptproblem mit der Nicht-Verfügbarkeit eines generischen SPP-UX-C++-Compilers zusammenhing. [1]
  Schließlich gelang es aber, eine lauffähige Version
  herzustellen, die immer, wenn von Octave eine LAPACK-Routine benutzt wird,
  automatisch die parallele Veclib-Version benutzt. Damit muß man nur noch
  sein Matlab-Programm auch Octave-kompatibel machen, was laut Octave-Reklame
  eine Kleinigkeit sein sollte [2],
  und schon hat man ein paralleles Matlab-Programm. Abfallprodukt dieser Aktion
  ist eine Octave-Version für HP-UX, die die Veclib benutzt. Welche
  Geschwindigkeitsgewinne man damit erzielt, zeigt eindrucksvoll die folgende
  Tabelle: 
|      |  
                                      | |||
| Zeit [s] | Beschleun. | Zeit [s] | Beschleun. | |
| matlab | 2916.0 | 1 | 1009.4 | 1 | 
| octave | 1473.3 | 2.0 | 927.6 | 1.1 | 
| octave/veclib, 1 CPU | 133.4 | 21.9 | 210.5 | 4.8 | 
| octave/veclib, 6 CPUs | 29.9 | 97.5 | 71.3 | 14.2 | 
Alle Zahlen wurden auf der hydra gemessen, a ist jeweils eine 2000x2000 große Matrix gleichverteilter Zufallszahlen.
[1] Für Gurus: Ein C++-System startet normalerweise vor der
    main-Routine Konstruktoren für alle statischen Objekte.
    Davon weiß das Startup-File der SPP natürlich nichts. Hier
    half ein GNU-Tool namens collect2, das beim gcc
    mitgeliefert wird. Außerdem muß das Thread-Laufzeit-System
    für parallele Programme initialisiert werden, was
    normalerweise automatisch geschieht, hier aber von Hand eingefügt
    werden mußte. 
[2] vgl. Erfahrungsbericht von Stephan Busch