Supported Operators
The Operator abstraction allows ADIOS2 to act upon the user application data,
either from a adios2::Variable
or a set of Variables in an adios2::IO
object. Current supported operations are:
Data compression/decompression, lossy and lossless.
This section provides a description of the supported operators in ADIOS2 and their specific parameters to allow extra-control from the user. Parameters are passed in key-value pairs for:
Operator general supported parameters.
Operator specific supported parameters.
Parameters are passed at:
Compile time: using the second parameter of the method
ADIOS2::DefineOperator
Runtime Configuration Files in the ADIOS component.
CompressorZFP
The CompressorZFP
Operator is compressor that uses a lossy but optionally
error-bounded compression to achieve high compression ratios.
ZFP provides compressed-array classes that support high throughput read and write random access to individual array elements. ZFP also supports serial and parallel (OpenMP and CUDA) compression of whole arrays, e.g., for applications that read and write large data sets to and from disk.
ADIOS2 provides a CompressorZFP
operator that lets you compress an
decompress variables. Below there is an example of how to invoke
CompressorZFP
operator:
adios2::IO io = adios.DeclareIO("Output");
auto ZFPOp = adios.DefineOperator("CompressorZFP", adios2::ops::LossyZFP);
auto var_r32 = io.DefineVariable<float>("r32", shape, start, count);
var_r32.AddOperation(ZFPOp, {{adios2::ops::zfp::key::rate, rate}});
CompressorZFP Specific parameters
The CompressorZFP
operator accepts the following operator specific
parameters:
|
|
---|---|
|
Fixed absolute error tolerance |
|
Fixed number of bits in a compression unit |
|
Fixed number of uncompressed bits per value |
|
Backend device: |
CompressorZFP Execution Policy
CompressorZFP
can run in multiple backend devices: GPUs (CUDA), OpenMP, and
in the host CPU. By default CompressorZFP
will choose its backend following
the above order upon the availability of the device adapter.
Exceptionally, if its corresponding ADIOS2 variable contains a CUDA memory address, this is a CUDA buffer, the CUDA backend will be called if available.
In any case, the user can manually set the backend using the ZFPOperator
specific parameter backend
.
Plugin Operator
For details on using the Plugin Operator, see the Plugins documentation.
Encryption
The Encryption Operator uses the Plugins interface. This operator uses libsodium for encrypting and decrypting data. If ADIOS can find libsodium at configure time, this plugin will be built.
This operator will generate a secret key and encrypts the data with the key and a nonce as described in the libsodium secret key cryptography docs.
The key is saved to the specified SecretKeyFile
and will be used for decryption. The key should be kept confidential since it is used to both encrypt and decrypt the data.
Parameters to use with the Encryption operator:
Key |
Value Format |
Explanation |
---|---|---|
PluginName |
string |
Required. Name to refer to plugin, e.g., |
PluginLibrary |
string |
Required. Name of shared library, |
SecretKeyFile |
string |
Required. Path to secret key file |