MF_recall
| MD_recall |
ME_recall |
MCF_recall |
MCD_recall |
MCE_recall |
MI_recall | MBI_recall | MSI_recall | MLI_recall | MQI_recall |
MU_recall | MUB_recall | MUS_recall | MUL_recall | MUQ_recall |
|
Funktion | Matrix im Binär-Format aus einem Stream einlesen |
|
Syntax C/C++ | #include <MFstd.h>
int MF_recall( fMatrix MA, ui ht, ui len, FILE *stream); |
C++ MatObj | #include <OptiVec.h>
int matrix<T>::recall( FILE *stream ); |
Pascal/Delphi | uses MFstd;
function MF_recall( MA:fMatrix; ht, len:UIntSize; var Stream:FILE ): Integer; |
|
CUDA-Funktion C/C++ | #include <cudaMFstd.h>
int cudaMF_recall( fMatrix d_MA, ui ht, ui len, FILE *stream );
int cudaMF_recall_buf( fMatrix d_MA, ui ht, ui len, FILE *stream, fVector h_Wk );
|
CUDA-Funktion Pascal/Delphi | uses MFstd;
function cudaMF_recall( d_MA:fMatrix; ht, len:UIntSize; var Stream:File ): IntBool;
function cudaMF_recall_buf( d_MA:fMatrix; ht, len:UIntSize; var Stream:File; h_Wk:fVector ): IntBool;
|
|
Beschreibung | Die Matrix A mit ht*len Elementen wird im Binärformat aus stream gelesen. Normalerweise wird diese Funktion verwendet, um Matrizen zu importieren, die zuvor durch die entsprechende Funktion der MF_store-Familie gespeichert wurden.
In C/C++ werden Matrizen zeilenweise gespeichert, während Pascal/Delphi und Fortran mit Spalten-Matrizen arbeiten. Falls eine durch ein C/C++-Programm gespeicherte Matrix von einem Pascal/Delphi-Programm gelesen wird (oder umgekehrt), erhält man daher die Transponierte. In diesem Fall rufe man einfach
MF_transpose( MA, MA, ht, len );.
nur CUDA-Versionen: cudaM?_recall_buf übernimmt einen Host-Vektor h_Wk als zusätzliches Argument. Dieser dient als Pufferspeicher und muss (mindestens) dieselbe Größe (ht*len) haben wie d_MA. Hierdurch wird die interne Bereitstellung von Pufferspeicher bei cudaM?_recall eingespart, so dass cudaM?_recall_buf etwas schneller ist.
Nur GCC, CLang: GCC und CLang (einschließlich BCC32C) erweitern den 10-byte Datentyp long double zu 12 oder 16 bytes im Speicher (12 byte in 32-bit, 16 byte in 64 bit). Um für Kompatibilität zwischen den mit den verschiedenen Compilern erzeugten Dateien zu sorgen, schreiben und lesen die Funktionspaare ME_store / ME_recall und MCE_store / MCE_recall stets im 10-byte-Format. |
|
Thread-Sicherheit | Verschiedene Threads können gefahrlos mehrere Funktionen der VF_ / MF_store- und VF_ / MF_recall-Familien gleichzeitig aufrufen, solange sie auf verschiedene Streams zugreifen. Falls sie allerdings auf ein- und denselben Stream zugreifen, müssen unbedingt durch geeignete Maßnahmen (Critical Sections, Mutexes) Race-Conditions verhindert werden. |
|
Fehlerbehandlung | wird durch die C-Funktion fread bzw. die Delphi-Funktion BlockRead durchgeführt, auf der MF_recall etc. basieren |
|
Rückgabewert | 0, wenn fehlerfrei; ansonsten 1. Um mehr Information im Falle eines Fehlers zu erhalten, inspiziere man errno (C/C++) oder IOResult (Delphi). |