Runtime API: Check Features
We would like to request runtime APIs to query the build-time features of ADIOS2 downstream.
This includes:
- available engines (e.g. SST, SSC available or not)
- available compressors
Why is this feature important?
We want to conditionally let users set/tune compressors in their input sets of our applications and provide at runtime options for interactive workflows of what I/O features are available. Relying one an exception once an "unavailable" option was already selected by a user is not ideal for such workflows.
What is the potential impact of this feature in the community?
We need this in applications to build modern, interactive applications and data workflows.
Is your feature request related to a problem? Please describe.
Those are the described downstream issues.
Describe the solution you'd like and potential required effort
We would like simple, free standing functions. For example:
std::list< std::string > get_available_engines()std::list< std::string > get_available_compressors()
Adding sub-options of compressors, e.g. the available algorithms in blosc would also be super helpful.
Further runtime APIs to query available ADIOS2 features are also welcome, just not on our radar atm.
Describe alternatives you've considered and potential required effort
At least for SST, we can currently fall-back as a work-around to a compile-time define check from ADIOSConfig.h named ADIOS2_HAVE_SST. Nonetheless, since we pass such features at runtime as strings it makes sense to also provide them as runtime APIs. Also, runtime APIs make packaging easier, allowing us to swap dynamic libs with one set of features for another without recompiling the whole downstream stack.
Additional context
As discussed in the weekly WarpX - ADIOS2 calls.
CC's
@pnorbert @guj @dmitry-ganyushin @franzpoeschel