DIFX Call Sequence

The following are essential “private” notes to sort out the call sequence used as data flows through DataStream processes and Core processes.

DataStream

Initialization

  • Started with DataStream::execute
    • Calls DataStream::initialiseMemoryBuffer
      • Launches DataStream::launchNewFileReadThread or DataStream::launchNewNetworkReadThread
        • Calls DataStream::loopfileread or DataStream::loopnetworkread
  • Continues running execute

Main Loop (execute)

  • Loops managing MPI requests and data sends

Disk Reading

  • loopfileread loops over
    • DataStream::openfile
      • initialiseFile (Overloaded in mk5.cpp)
    • DataStream::diskToMemory
      • read (System call)
      • testForSync (Overloaded in mk5.cpp)

Core

Initialization

  • Core::Core
    • Initialises arrays/mutexes etc and
  • Started with Core::execute
    • Create threads with pthread_create calling launchNewProcessThread
      • Calls loopprocess
        • Loops over processdata
          • Loops over Mode::process for each batch of FFTs
            • Calls Mode::unpack Overloaded in mk5mode.cpp
    • Loops over Core::receivedata
      • This calls a few MPI_Irecv and locks/unlocks mutexes
difx/difx_call_sequence.txt · Last modified: 2011/12/08 23:13 by chrisphillips
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki