VF_storeVD_storeVE_store
VCF_storeVCD_storeVCE_store
VPF_storeVPD_storeVPE_store
VI_storeVBI_storeVSI_storeVLI_storeVQI_store 
VU_storeVUB_storeVUS_storeVUL_storeVUQ_storeVUI_store
FunktionSpeichern im Maschinenformat in einem Stream
Syntax C/C++#include <VFstd.h>
int VF_store( FILE *stream, fVector X, ui size );
C++ VecObj#include <OptiVec.h>
int vector<T>::store( FILE *stream );
Pascal/Delphiuses VFstd;
function VF_store( var Stream:FILE; X:fVector; size:UIntSize ): Integer;
CUDA-Funktion C/C++#include <cudaVFstd.h>
void cudaVF_store( FILE *stream, fVector d_X, ui size );
void cudaVF_store_buf( FILE *stream, fVector d_X, ui size, fVector h_Wk );
CUDA-Funktion Pascal/Delphiuses VFstd;
procedure cudaVF_store( var Stream:FILE; d_X:fVector; size:UIntSize );
procedure cudaVF_store_buf( var Stream:FILE; d_X:fVector; size:UIntSize; h_Wk:fVector );
Beschreibungsize Elemente von X werden im Maschinenformat (d.h. binär) in stream abgelegt. stream muss bereits für Schreib-Operationen im Binärfomat geöffnet sein.
Die VecObj-Version speichert nicht nur die Vektor-Elemente, sondern ein ganzes Vektor-Objekt, indem zuerst size und dann die einzelnen Elemente in stream abgelegt werden. Man beachte, dass VF_recall etc. daher nur Vektoren lesen kann, die mit den "normalen" Funktionen VF_store etc. gespeichert wurden, während die VecObj-Funktion recall zum Einlesen von Vektor-Objekten gebraucht wird, die zuvor mit der VecObj-Member-Funktion store gespeichert wurden. Man kann allerdings die Sequenz
VUI_store( stream, &size, 1 );
VF_store( stream, X, size );   /* C/C++ */

oder
VU_store( stream, @size, 1 );
VF_store( stream, X, size );   (* Pascal/Delphi *)

verwenden, um den gespeicherten Vektor X später als Vektor-Objekt einlesen zu können.

nur CUDA-Versionen: cudaV?_store_buf übernimmt einen Host-Vektor h_Wk als zusätzliches Argument. Dieser dient als Pufferspeicher und muss (mindestens) dieselbe Größe haben wie X. Hierdurch wird die interne Bereitstellung von Pufferspeicher bei cudaV?_store eingespart, so dass cudaV?_store_buf etwas schneller ist.

Nur GCC und 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 VE_store / VE_recall, VCE_store / VCE_recall und VPE_store / VPE_recall stets im 10-byte-Format.

Thread-SicherheitVerschiedene 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.
Fehlerbehandlungwird durch die C-Funktion fwrite bzw. die Delphi-Funktion BlockWrite durchgeführt, auf der MF_store etc. basieren
Rückgabewert0, wenn fehlerfrei; ansonsten 1. Um mehr Information im Falle eines Fehlers zu erhalten, inspiziere man errno (C/C++) oder IOResult (Delphi).
QuerverweisVF_recall,   VF_write,   VF_cprint,   VF_print

VectorLib Inhaltsverzeichnis  OptiVec Home