Skip to content

multiple states and faster ipc #9

@imyxh

Description

@imyxh

So, two related things:

  1. Sometimes a loop might want to have multiple vectors/matrices/etc.; for example, maybe device A wants to output two things which are then read by devices B and C, or maybe device D wants to send something to device F, but without replacing the main pipeline state because device E needs it too.
  2. The current paradigm for doing IPC between anyloop and e.g. a plotting program in Julia is to use a named pipe. However, this has two disadvantages:
    1. named pipes have a limited buffer size, so Julia will eventually start blocking anyloop
      • this is good for applications where we don't want to miss data, but not for e.g. a realtime view of a matrix
    2. named pipes involve copying to kernel space and back, which can be slow.

My current proposal is to fix both of these issues by using proper mmaped shared memory. There are a few considerations for this, however:

  1. We can't use pointers in shared memory.
  2. Care will have to be taken with regards to allocating GSL objects to make their underlying data reside in shared memory.
  3. We probably want mutexes too.
  4. Julia will need a package or something.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions