Commit c1a6b766 authored by Jason Wang's avatar Jason Wang
Browse files

heat transfer worked with the new ndcopy function with memSelect enabled

parent 366d6dcc
Loading
Loading
Loading
Loading
+16 −7
Original line number Diff line number Diff line
@@ -32,20 +32,29 @@ void DataManReader::GetSyncCommon(Variable<T> &variable, T *data)
template <class T>
void DataManReader::GetDeferredCommon(Variable<T> &variable, T *data)
{
    if (m_WorkflowMode == "subscribe")
    if (m_IsRowMajor)
    {
        while (m_DataManDeserializer.Get(data, variable.m_Name,
                                         variable.m_Start, variable.m_Count,
                                         m_CurrentStep) != 0)
                                         m_CurrentStep, variable.m_MemoryStart,
                                         variable.m_MemoryCount) != 0)
        {
        }
    }
    else if (m_WorkflowMode == "p2p")
    else
    {
        while (m_DataManDeserializer.Get(data, variable.m_Name,
                                         variable.m_Start, variable.m_Count,
                                         m_CurrentStep, variable.m_MemoryStart,
                                         variable.m_MemoryCount) != 0)

        Dims start = variable.m_Start;
        Dims count = variable.m_Count;
        Dims memstart = variable.m_MemoryStart;
        Dims memcount = variable.m_MemoryCount;
        std::reverse(start.begin(), start.end());
        std::reverse(count.begin(), count.end());
        std::reverse(memstart.begin(), memstart.end());
        std::reverse(memcount.begin(), memcount.end());
        while (m_DataManDeserializer.Get(data, variable.m_Name, start, count,
                                         m_CurrentStep, memstart,
                                         memcount) != 0)
        {
        }
    }
+21 −29
Original line number Diff line number Diff line
@@ -51,42 +51,34 @@ void DataManWriter::PutDeferredCommon(Variable<T> &variable, const T *values)
        variable.m_Start.assign(variable.m_Count.size(), 0);
    }

    if (m_IsRowMajor == false)
    {
        std::reverse(variable.m_Start.begin(), variable.m_Start.end());
        std::reverse(variable.m_Count.begin(), variable.m_Count.end());
        std::reverse(variable.m_Shape.begin(), variable.m_Shape.end());
        std::reverse(variable.m_MemoryStart.begin(),
                     variable.m_MemoryStart.end());
        std::reverse(variable.m_MemoryCount.begin(),
                     variable.m_MemoryCount.end());
    }

    if (m_Format == "dataman")
    if (m_IsRowMajor)
    {
        for (size_t i = 0; i < m_TransportChannels; ++i)
        {
            if (m_WorkflowMode == "subscribe")
        {
            m_DataManSerializer[i]->Put(variable, m_Name, CurrentStep(),
                                        m_MPIRank, "",
                                        m_IO.m_TransportsParameters[i]);
        }
    }
    else
    {
                m_DataManSerializer[i]->Put(variable, m_Name, CurrentStep(),
                                            m_MPIRank, "",
                                            m_IO.m_TransportsParameters[i]);
            }
        }
    }
    else if (m_Format == "binary")
        Dims start = variable.m_Start;
        Dims count = variable.m_Count;
        Dims shape = variable.m_Shape;
        Dims memstart = variable.m_MemoryStart;
        Dims memcount = variable.m_MemoryCount;
        std::reverse(start.begin(), start.end());
        std::reverse(count.begin(), count.end());
        std::reverse(shape.begin(), shape.end());
        std::reverse(memstart.begin(), memstart.end());
        std::reverse(memcount.begin(), memcount.end());
        for (size_t i = 0; i < m_TransportChannels; ++i)
        {
            m_DataManSerializer[i]->Put(variable.m_Data, variable.m_Name, shape,
                                        start, count, memstart, memcount,
                                        m_Name, CurrentStep(), m_MPIRank, "",
                                        m_IO.m_TransportsParameters[i]);
        }
    else
    {
        throw(std::invalid_argument(
            "[DataManWriter::PutSyncCommon] invalid format " + m_Format));
    }
}

+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ TEST_F(DataManEngineTest, WriteRead_1D_P2P)
    std::vector<adios2::Params> transportParams = {{{"Library", "ZMQ"},
                                                    {"IPAddress", "127.0.0.1"},
                                                    {"Port", "12306"},
                                                    {"Timeout", "2"}}};
                                                    {"Timeout", "5"}}};

    // run workflow
    auto r = std::thread(DataManReaderP2P, shape, start, count, steps,