From bcefa8f61f573b01698128da371d57c785dd7b74 Mon Sep 17 00:00:00 2001 From: Kai Germaschewski Date: Sat, 29 Jun 2019 05:35:24 -0400 Subject: [PATCH 1/2] fix MSVC/conda build This simply renames `helper::CopyMemory` to `helper::CopyMemoryBlock` to avoid a name clash with the `CopyMemory` defined in the MSVC build in #1485. (cherry picked from commit 5f9bdb4e42a108ec19c2bf4034a3a2ddb0c5d951) --- source/adios2/helper/adiosMemory.h | 16 ++++++++-------- source/adios2/helper/adiosMemory.inl | 12 ++++++------ .../adios2/toolkit/format/bp3/BP3Serializer.tcc | 2 +- .../adios2/toolkit/format/bp4/BP4Serializer.tcc | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/source/adios2/helper/adiosMemory.h b/source/adios2/helper/adiosMemory.h index 91d5f13534..44a773c1be 100644 --- a/source/adios2/helper/adiosMemory.h +++ b/source/adios2/helper/adiosMemory.h @@ -111,14 +111,14 @@ T ReadValue(const std::vector &buffer, size_t &position, * @param srcMemCount */ template -void CopyMemory(T *dest, const Dims &destStart, const Dims &destCount, - const bool destRowMajor, const U *src, const Dims &srcStart, - const Dims &srcCount, const bool srcRowMajor, - const bool endianReverse = false, - const Dims &destMemStart = Dims(), - const Dims &destMemCount = Dims(), - const Dims &srcMemStart = Dims(), - const Dims &srcMemCount = Dims()) noexcept; +void CopyMemoryBlock(T *dest, const Dims &destStart, const Dims &destCount, + const bool destRowMajor, const U *src, + const Dims &srcStart, const Dims &srcCount, + const bool srcRowMajor, const bool endianReverse = false, + const Dims &destMemStart = Dims(), + const Dims &destMemCount = Dims(), + const Dims &srcMemStart = Dims(), + const Dims &srcMemCount = Dims()) noexcept; void CopyPayload(char *dest, const Dims &destStart, const Dims &destCount, const bool destRowMajor, const char *src, const Dims &srcStart, diff --git a/source/adios2/helper/adiosMemory.inl b/source/adios2/helper/adiosMemory.inl index e130030e92..7ff9d88de6 100644 --- a/source/adios2/helper/adiosMemory.inl +++ b/source/adios2/helper/adiosMemory.inl @@ -252,12 +252,12 @@ void ClipVector(std::vector &vec, const size_t start, } template -void CopyMemory(T *dest, const Dims &destStart, const Dims &destCount, - const bool destRowMajor, const U *src, const Dims &srcStart, - const Dims &srcCount, const bool srcRowMajor, - const bool endianReverse, const Dims &destMemStart, - const Dims &destMemCount, const Dims &srcMemStart, - const Dims &srcMemCount) noexcept +void CopyMemoryBlock(T *dest, const Dims &destStart, const Dims &destCount, + const bool destRowMajor, const U *src, + const Dims &srcStart, const Dims &srcCount, + const bool srcRowMajor, const bool endianReverse, + const Dims &destMemStart, const Dims &destMemCount, + const Dims &srcMemStart, const Dims &srcMemCount) noexcept { // transform everything to payload dims const Dims destStartPayload = PayloadDims(destStart, destRowMajor); diff --git a/source/adios2/toolkit/format/bp3/BP3Serializer.tcc b/source/adios2/toolkit/format/bp3/BP3Serializer.tcc index a66b9dc62c..7d54681e6c 100644 --- a/source/adios2/toolkit/format/bp3/BP3Serializer.tcc +++ b/source/adios2/toolkit/format/bp3/BP3Serializer.tcc @@ -862,7 +862,7 @@ void BP3Serializer::PutPayloadInBuffer( ProfilerStart("memcpy"); if (!blockInfo.MemoryStart.empty()) { - helper::CopyMemory( + helper::CopyMemoryBlock( reinterpret_cast(m_Data.m_Buffer.data() + m_Data.m_Position), blockInfo.Start, blockInfo.Count, sourceRowMajor, blockInfo.Data, blockInfo.Start, blockInfo.Count, sourceRowMajor, false, Dims(), diff --git a/source/adios2/toolkit/format/bp4/BP4Serializer.tcc b/source/adios2/toolkit/format/bp4/BP4Serializer.tcc index 315ae9b46b..fbc62c3573 100644 --- a/source/adios2/toolkit/format/bp4/BP4Serializer.tcc +++ b/source/adios2/toolkit/format/bp4/BP4Serializer.tcc @@ -883,7 +883,7 @@ void BP4Serializer::PutPayloadInBuffer( if (!blockInfo.MemoryStart.empty()) { // TODO make it a BP4Serializer function - helper::CopyMemory( + helper::CopyMemoryBlock( reinterpret_cast(m_Data.m_Buffer.data() + m_Data.m_Position), blockInfo.Start, blockInfo.Count, sourceRowMajor, blockInfo.Data, blockInfo.Start, blockInfo.Count, sourceRowMajor, false, Dims(), From 29b1b0ce4f74339f6424e505e2a9bc21b886bfdf Mon Sep 17 00:00:00 2001 From: Kai Germaschewski Date: Sat, 29 Jun 2019 07:40:26 -0400 Subject: [PATCH 2/2] fix HDF5Reader build with MSVC Sadly, variable-sized stack arrays are only a feature of C99, but not C++11, so this patch uses std::vector instead. (cherry picked from commit 14f613bdfd939cfde6dc38d29f0d4df858d2d2e7) --- source/adios2/engine/hdf5/HDF5ReaderP.cpp | 8 ++++---- source/adios2/toolkit/interop/hdf5/HDF5Common.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/adios2/engine/hdf5/HDF5ReaderP.cpp b/source/adios2/engine/hdf5/HDF5ReaderP.cpp index f018718afc..7c81f9f152 100644 --- a/source/adios2/engine/hdf5/HDF5ReaderP.cpp +++ b/source/adios2/engine/hdf5/HDF5ReaderP.cpp @@ -146,7 +146,7 @@ size_t HDF5ReaderP::ReadDataset(hid_t dataSetId, hid_t h5Type, } else { - hsize_t start[ndims], count[ndims], stride[ndims]; + std::vector start(ndims), count(ndims), stride(ndims); bool isOrderC = helper::IsRowMajor(m_IO.m_HostLanguage); for (int i = 0; i < ndims; i++) @@ -164,12 +164,12 @@ size_t HDF5ReaderP::ReadDataset(hid_t dataSetId, hid_t h5Type, slabsize *= count[i]; stride[i] = 1; } - hid_t ret = H5Sselect_hyperslab(fileSpace, H5S_SELECT_SET, start, - stride, count, NULL); + hid_t ret = H5Sselect_hyperslab(fileSpace, H5S_SELECT_SET, start.data(), + stride.data(), count.data(), NULL); if (ret < 0) return 0; - hid_t memDataSpace = H5Screate_simple(ndims, count, NULL); + hid_t memDataSpace = H5Screate_simple(ndims, count.data(), NULL); interop::HDF5TypeGuard g_mds(memDataSpace, interop::E_H5_SPACE); int elementsRead = 1; diff --git a/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp b/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp index 1173e9137f..83bcda2511 100644 --- a/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp +++ b/source/adios2/toolkit/interop/hdf5/HDF5Common.cpp @@ -419,8 +419,8 @@ void HDF5Common::AddVar(core::IO &io, std::string const &name, hid_t datasetId, { hid_t dspace = H5Dget_space(datasetId); const int ndims = H5Sget_simple_extent_ndims(dspace); - hsize_t dims[ndims]; - H5Sget_simple_extent_dims(dspace, dims, NULL); + std::vector dims(ndims); + H5Sget_simple_extent_dims(dspace, dims.data(), NULL); H5Sclose(dspace); Dims shape;