Unverified Commit 1b419210 authored by Bolea Sanchez, Vicente Adolfo's avatar Bolea Sanchez, Vicente Adolfo Committed by GitHub
Browse files

Merge pull request #4128 from vicentebolea/backports-from-master

Backports from master
parents 1f50ea27 12184579
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -188,7 +188,7 @@ jobs:
      - name: Build
        run: gha/scripts/ci/gh-actions/run.sh build
      - name: Print ccache statistics
        run: ccache -s
        run: ccache -s | tee $GITHUB_STEP_SUMMARY
      - name: Save cache
        uses: actions/cache/save@v3
        if: ${{ github.ref_name == 'master' && steps.restore-cache.outputs.cache-hit != 'true' }}
+16 −4
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ adios_option(Profiling "Enable support for profiling" AUTO)
adios_option(Endian_Reverse "Enable support for Little/Big Endian Interoperability" AUTO)
adios_option(Sodium     "Enable support for Sodium for encryption" AUTO)
adios_option(Catalyst   "Enable support for in situ visualization plugin using ParaView Catalyst" AUTO)
adios_option(Campaign   "Enable support for Campaigns (requires SQLite3 and ZLIB)" OFF)
adios_option(Campaign   "Enable support for Campaigns (requires SQLite3 and ZLIB)" AUTO)
adios_option(AWSSDK     "Enable support for S3 compatible storage using AWS SDK's S3 module" OFF)
adios_option(Derived_Variable    "Enable support for derived variables" OFF)
adios_option(PIP        "Enable support for pip packaging" OFF)
@@ -443,9 +443,21 @@ foreach(opt IN LISTS ADIOS2_CONFIG_OPTS)
  endif()
endforeach()

if (ADIOS2_HAVE_SST AND (ADIOS2_SST_HAVE_LIBFABRIC OR ADIOS2_SST_HAVE_UCX))
message("    RDMA Transport for Staging: Available")
set (HPCDataPlaneList "")
if (ADIOS2_HAVE_SST)
  if (ADIOS2_SST_HAVE_LIBFABRIC)
     set (HPCDataPlaneList "${HPCDataPlaneList} fabric")
  endif()
  if (ADIOS2_SST_HAVE_UCX)
     set (HPCDataPlaneList "${HPCDataPlaneList} UCX")
  endif()
  if (ADIOS2_SST_HAVE_MPI_DP)
     set (HPCDataPlaneList "${HPCDataPlaneList} MPI")
  endif()
endif()
if ({HPCDataPlaneList} STREQUAL  "")
  message("    Possible RDMA DataPlanes for SST: <none>")
else()
message("    RDMA Transport for Staging: Unconfigured")
  message("    Possible RDMA DataPlanes for SST: ${HPCDataPlaneList}")
endif()
+37 −0
Original line number Diff line number Diff line
@@ -150,6 +150,43 @@ adios2_error adios2_set_transport_parameter(adios2_io *io, const size_t transpor
    }
}

#ifdef ADIOS2_HAVE_DERIVED_VARIABLE
adios2_derived_variable *adios2_define_derived_variable(adios2_io *io, const char *name,
                                                        const char *expression,
                                                        const adios2_derived_var_type type)
{
    adios2_derived_variable *variable = nullptr;

    try
    {
        adios2::helper::CheckForNullptr(io, "for adios2_io, in call to adios2_define_variable");
        adios2::core::IO &ioCpp = *reinterpret_cast<adios2::core::IO *>(io);
        adios2::DerivedVarType typeCpp = adios2::DerivedVarType::MetadataOnly;
        switch (type)
        {
        case adios2_derived_var_type_metadata_only:
            typeCpp = adios2::DerivedVarType::MetadataOnly;
            break;
        case adios2_derived_var_type_expression_string:
            typeCpp = adios2::DerivedVarType::ExpressionString;
            break;
        case adios2_derived_var_type_store_data:
            typeCpp = adios2::DerivedVarType::StoreData;
            break;
        }
        adios2::core::VariableDerived *variableCpp = nullptr;
        variableCpp = &ioCpp.DefineDerivedVariable(name, expression, typeCpp);
        variable = reinterpret_cast<adios2_derived_variable *>(variableCpp);
    }
    catch (...)
    {

        adios2::helper::ExceptionToError("adios2_define_variable");
    }
    return variable;
}
#endif

adios2_variable *adios2_define_variable(adios2_io *io, const char *name, const adios2_type type,
                                        const size_t ndims, const size_t *shape,
                                        const size_t *start, const size_t *count,
+20 −0
Original line number Diff line number Diff line
@@ -122,6 +122,26 @@ adios2_variable *adios2_define_variable(adios2_io *io, const char *name, const a
                                        const size_t *start, const size_t *count,
                                        const adios2_constant_dims constant_dims);

#ifdef ADIOS2_HAVE_DERIVED_VARIABLE
/**
 * @brief Define a derived variable within io
 * @param io handler that owns the variable
 * @param name unique variable identifier
 * @param type primitive type from enum adios2_type in adios2_c_types.h
 * @param ndims number of dimensions
 * @param shape global dimension
 * @param start local offset
 * @param count local dimension
 * @param constant_dims adios2_constant_dims_true:: shape, start, count
 * won't change; adios2_constant_dims_false: shape, start, count will change
 * after definition
 * @return success: handler, failure: NULL
 */
adios2_derived_variable *adios2_define_derived_variable(adios2_io *io, const char *name,
                                                        const char *expression,
                                                        const adios2_derived_var_type type);
#endif

/**
 * @brief Retrieve a variable handler within current io handler
 * @param io handler to variable io owner
+20 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ extern "C" {
typedef struct adios2_adios adios2_adios;
typedef struct adios2_io adios2_io;
typedef struct adios2_variable adios2_variable;
typedef struct adios2_derived_variable adios2_derived_variable;
typedef struct adios2_attribute adios2_attribute;
typedef struct adios2_engine adios2_engine;
typedef struct adios2_operator adios2_operator;
@@ -139,6 +140,16 @@ typedef enum
    adios2_arrayordering_auto
} adios2_arrayordering;

#ifdef ADIOS2_HAVE_DERIVED_VARIABLE
/** Type of derived variables */
typedef enum
{
    adios2_derived_var_type_metadata_only = 0,
    adios2_derived_var_type_expression_string = 1,
    adios2_derived_var_type_store_data = 2
} adios2_derived_var_type;
#endif

static const size_t adios2_string_array_element_max_size = 4096;

static const size_t adios2_local_value_dim = SIZE_MAX - 2;
@@ -159,6 +170,15 @@ union adios2_PrimitiveStdtypeUnion
    char *str;
};

typedef enum
{
    adios2_memory_space_detect = 0,
    adios2_memory_space_host = 1,
#ifdef ADIOS2_HAVE_GPU_SUPPORT
    adios2_memory_space_gpu = 2,
#endif
} adios2_memory_space;

typedef struct
{
    int WriterID;
Loading