Skip to content
Snippets Groups Projects
Commit 633a001a authored by William F Godoy's avatar William F Godoy
Browse files

Fixing Issue #216 Python bindings

Copy constructor was implicitly removed for ADIOSPy due to m_ADIOS.

PyBind11 needed the copy constructor.

m_ADIOS is now a shared pointer to avoid copy constructor removal

Separated MPI nonMPI test as ctest failed for MPI
parent 2a30e6a7
No related branches found
No related tags found
1 merge request!217Fixing Issue #216 Python bindings
......@@ -19,7 +19,8 @@ namespace adios2
ADIOSPy::ADIOSPy(const std::string configFile, MPI_Comm mpiComm,
const bool debugMode)
: m_DebugMode(debugMode), m_ADIOS(configFile, mpiComm, debugMode)
: m_DebugMode(debugMode),
m_ADIOS(std::make_shared<adios2::ADIOS>(configFile, mpiComm, debugMode))
{
}
......@@ -29,7 +30,7 @@ ADIOSPy::ADIOSPy(MPI_Comm mpiComm, const bool debugMode)
}
ADIOSPy::ADIOSPy(const std::string configFile, const bool debugMode)
: ADIOSPy("", MPI_COMM_SELF, debugMode)
: ADIOSPy(configFile, MPI_COMM_SELF, debugMode)
{
}
......@@ -39,7 +40,7 @@ ADIOSPy::ADIOSPy(const bool debugMode) : ADIOSPy("", MPI_COMM_SELF, debugMode)
IOPy ADIOSPy::DeclareIO(const std::string name)
{
return IOPy(m_ADIOS.DeclareIO(name), m_DebugMode);
return IOPy(m_ADIOS->DeclareIO(name), m_DebugMode);
}
} // end namespace adios
......@@ -12,6 +12,7 @@
#define ADIOS2_BINDINGS_PYTHON_SOURCE_ADIOSPY_H_
/// \cond EXCLUDE_FROM_DOXYGEN
#include <memory> //std::shared_ptr
#include <string>
/// \endcond
......@@ -32,13 +33,14 @@ public:
ADIOSPy(MPI_Comm mpiComm, const bool debugMode);
ADIOSPy(const std::string configFile, const bool debugMode);
ADIOSPy(const bool debugMode);
~ADIOSPy() = default;
IOPy DeclareIO(const std::string name);
private:
const bool m_DebugMode;
adios2::ADIOS m_ADIOS;
std::shared_ptr<adios2::ADIOS> m_ADIOS;
};
} // end namespace adios
......
......@@ -68,7 +68,7 @@ adios2::ADIOSPy ADIOSPyInit(adios2::pyObject &object, const bool debugMode)
adios2::ADIOSPy ADIOSPyInitConfig(const std::string configFile,
const bool debugMode)
{
return adios2::ADIOSPy(debugMode);
return adios2::ADIOSPy(configFile, debugMode);
}
adios2::ADIOSPy ADIOSPyInit(const bool debugMode)
......
......@@ -3,4 +3,10 @@
# accompanying file Copyright.txt for details.
#------------------------------------------------------------------------------#
python_add_test(PythonBPWrite TestBPWriteTypes.py)
if(NOT ADIOS2_HAVE_MPI)
python_add_test(PythonBPWrite TestBPWriteTypes_nompi.py)
endif()
if(ADIOS2_HAVE_MPI)
python_add_test(PythonBPWrite TestBPWriteTypes.py)
endif()
\ No newline at end of file
......@@ -10,13 +10,15 @@
from adios2NPTypes import SmallTestData
from mpi4py import MPI
import adios2
# Test data
data = SmallTestData()
adios = adios2.ADIOS(adios2.DebugON)
comm = MPI.COMM_WORLD
adios = adios2.ADIOS(comm, adios2.DebugON)
bpIO = adios.DeclareIO("NPTypes")
......
#!/usr/bin/env python
#
# Distributed under the OSI-approved Apache License, Version 2.0. See
# accompanying file Copyright.txt for details.
#
# TestBPWriteTypes.py: test Python numpy types in ADIOS2 File Write
# Created on: Feb 2, 2017
# Author: William F Godoy godoywf@ornl.gov
from adios2NPTypes import SmallTestData
import adios2
# Test data
data = SmallTestData()
adios = adios2.ADIOS(adios2.DebugON)
bpIO = adios.DeclareIO("NPTypes")
# ADIOS Variable name, shape, start, offset, constant dims
# All local variables
varI8 = bpIO.DefineVariable(
"varI8", [], [], [data.I8.size], adios2.ConstantDims)
varI16 = bpIO.DefineVariable(
"varI16", [], [], [data.I16.size], adios2.ConstantDims)
varI32 = bpIO.DefineVariable(
"varI32", [], [], [data.I32.size], adios2.ConstantDims)
varI64 = bpIO.DefineVariable(
"varI64", [], [], [data.I64.size], adios2.ConstantDims)
varU8 = bpIO.DefineVariable(
"varUI8", [], [], [data.U8.size], adios2.ConstantDims)
varU16 = bpIO.DefineVariable(
"varUI16", [], [], [data.U16.size], adios2.ConstantDims)
varU32 = bpIO.DefineVariable(
"varUI32", [], [], [data.U32.size], adios2.ConstantDims)
varU64 = bpIO.DefineVariable(
"varUI64", [], [], [data.U64.size], adios2.ConstantDims)
varR32 = bpIO.DefineVariable(
"varR32", [], [], [data.R32.size], adios2.ConstantDims)
varR64 = bpIO.DefineVariable(
"varR64", [], [], [data.R64.size], adios2.ConstantDims)
# ADIOS Engine
bpFileWriter = bpIO.Open("npTypes.bp", adios2.OpenModeWrite)
bpFileWriter.Write(varI8, data.I8)
bpFileWriter.Write(varI16, data.I16)
bpFileWriter.Write(varI32, data.I32)
bpFileWriter.Write(varI64, data.I64)
bpFileWriter.Write(varU8, data.U8)
bpFileWriter.Write(varU16, data.U16)
bpFileWriter.Write(varU32, data.U32)
bpFileWriter.Write(varU64, data.U64)
bpFileWriter.Write(varR32, data.R32)
bpFileWriter.Write(varR64, data.R64)
bpFileWriter.Close()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment