Skip to content
Snippets Groups Projects
  1. Apr 22, 2024
  2. Apr 11, 2024
    • Jakob Kaiser's avatar
      fix: hw test execution · a40c5792
      Jakob Kaiser authored
      The partition for hardware runs was changed. Do no longer use partition
      to decide if hw tests should be executed but other env var.
      
      Change-Id: I9331007ec4f1aaf7200da04fe887732a096f9a3c
      a40c5792
  3. Feb 29, 2024
  4. Sep 18, 2023
  5. May 15, 2023
  6. Apr 06, 2023
    • Christian Mauch's avatar
      Fix dependencies · aa421b0c
      Christian Mauch authored
      * dynamically extract downstream dependencies for repo state
      
      Change-Id: If98f68dce3bddfab7087b2a6332b62019f766b6a
      aa421b0c
  7. Mar 22, 2023
  8. Feb 15, 2023
  9. Sep 21, 2022
  10. Jun 13, 2022
  11. Feb 15, 2022
  12. Feb 03, 2022
  13. Jan 19, 2022
  14. Jan 18, 2022
  15. Dec 01, 2021
  16. Oct 13, 2021
  17. Oct 05, 2021
    • Oliver Breitwieser's avatar
      Add quiggeldy-query-version · eb12d3a4
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      Add tool to query remote version information from quiggeldy connection
      via RCF-interface.
      
      ```
      Query remote version information of running quiggeldy instance.
      
      Allowed options:
        -h [ --help ]         produce help message
        -i [ --ip ] arg       IP to connect to
        -p [ --port ] arg     Port to connect to
      ```
      
      Depends-On: 13092
      Change-Id: I68ab5f2e6e6abf21ceaec27065a75c0d2925d0e7
      eb12d3a4
  18. Oct 01, 2021
    • Oliver Breitwieser's avatar
      quiggeldy: Add at-compile version information · 33e10387
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      Quiggeldy is planned to be auto-deployed in a nightly fashion. Because
      from time to time there are bugfixes/new features added, we need a way
      to track in which state quiggeldy was compiled.
      
      This is meant for expert users to ensure a specific version of quiggeldy
      is deployed upon debugging.
      
      At a later time, we will add a versioned interface, preventing users
      from connecting when versions mismatch.
      
      * Add `-v`/`--version` switch to quiggeldy that prints out with which
        repository at what commit-state it was compiled.
      * Add `get_version_string`-method to RCF-interface to allow for remote
        querying of build information.
      
      Depends-On: 13086
      Change-Id: I9734f1d1d0214c4953f97e3835534f0e4d93520c
      33e10387
    • Oliver Breitwieser's avatar
      Add wriggeldy · d55196e1
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      * Add `wriggeldy`, a wrapper to run processeses with a local quiggeldy.
      
      * Wriggeldy is meant for debugging purposes to see if adding quiggeldy
        inbetween hardware and executing script has any detrimental effects
        (hint: it should not).
      
      * Additionally, also add `wrap_with_quiggeldy`, a more verbose symlink
        to wriggeldy (that noone wants to type).
      
      Change-Id: I0996832348a3a3132f9bb9adc84a96a53c6a27b5
      d55196e1
    • Oliver Breitwieser's avatar
      Implement "xiggeldy" in hxcomm · a73916db
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      (Adapted from c/9752. Change moved from fisch to hxcomm.)
      
      * QuiggeldyClient
        * Implemented as yet another connection thanks to the new architecture
          rework.
        * Since quiggeldy is only to be used for "complete" PlaybackPrograms
          sent to the FPGA, the corresponding Stream instance only supports a
          `submit_blocking`-method that - as the name suggests - blocks until
          results are ready.
        * A correspdonding `submit_future`-method that returns a future to the
          results is planned (but currently only in proof-of-concept stage).
      
      * Provide serialization to SF via translation function that uses
        PortableBinaryArchives from cereal.
      
      * Generic versions of `Quiggeldy{Connection,Server,Worker}` implemented in
        `hxcomm/common/{,,detail/}quiggeldy_{rcf,common,connection,server}.*`
        * then specialized in
          `hxcomm/vx/{,,detail/}quiggeldy_{rcf,common,connection,server}.*`
          -> users only have to include specialized-headers (see tests)
        * allows straight-forward port to different sets of
          connectionparamters
      
      * `hxcomm/{common,vx}/quiggeldy_rcf.{h,tcc}`
        * have single RCF-interface for all types of connections per
          architecture
        * SF serialization via cereal
      
      * `hxcomm/common/quiggeldy_common.{h,tcc}`
        * needed munge auth routines for connection (client) and server
          (defined inline, should be changed if hxcomm ceases to be
          header-only)
      
      * Seperate client and server implementation:
        * client-side implementation in `hxcomm/{common,vx}/quiggeldy_connection.{h,tcc}`
        * if not given, client-side infers remote connection parameters from
          `QUIGGELDY_{IP,PORT}` environment variables
        * server-side implemtation in
          `hxcomm/{common,vx}/detail/quiggeldy_server.{h,tcc}`
      
      * automatic detection checks for "QUIGGELDY_ENABLED" defined in
        environment to be a non-zero integer
      
      * add simple mock-test verifying that quiggeldy can be started and
        connected to
      
      * add StreamRC-class that implements a stream interface with Reduced
        Capabilities for Remote exeCution
      
      NOTE:
      * slurm allocation is not tested yet!
      
      Depends-On: 12362
      
      Change-Id: I7600b3925c56597aedf16cdbf4147c0846a00b1b
      a73916db
    • Eric Müller's avatar
      Fix build HXCOMM_LOG_THRESHOLD wasn't used before · a3ee48b0
      Eric Müller authored
      Change-Id: I880ed4cfcda3fb8f5ddb0adea4822468fc47c5d6
      a3ee48b0
  19. Aug 05, 2021
  20. Jun 09, 2021
  21. May 17, 2021
  22. May 10, 2021
  23. Apr 27, 2021
  24. Apr 15, 2021
  25. Dec 11, 2020
    • Yannik Stradmann's avatar
      Add ZeroMockConnection · b22241fc
      Yannik Stradmann authored and Philipp Spilger's avatar Philipp Spilger committed
      * Full software connection which responds on reads with zero and shall ignore all other messages
      * Adjustable ns_per_message can be used for performance testing of higher software layers
      ** defaults to 125M Messages/s, matching the 8 GBit/s FPGA-chip links for our parameterization
         for HX
      
      Change-Id: I845be742f853786aaf5bdedc41db7a7120fc8e95
      b22241fc
  26. Dec 08, 2020
  27. Oct 23, 2020
    • Philipp Spilger's avatar
      Add receive_all() function to connections, replaces {,try_}receive() · 9dcd72e1
      Philipp Spilger authored
      * replace tbb::concurrent_queue by std::vector and mutex
        because the concurrent queue does not support thread-safe swap
      * allows fast acquisition of _all_ messages from the connection
      * in the typical use case of sending, waiting until halt and receiving
        this leads to less time spend with exclusive access to the connection
        and therefore more possible parallelism
      * remove single-message receive() and try_receive() interface
      
      Depends-On: 11113
      Change-Id: Ifd6cebfcea3b9bc56699aaf9db741579ca074a81
      9dcd72e1
  28. Aug 14, 2020
  29. Aug 12, 2020
  30. Jul 22, 2020
    • Philipp Spilger's avatar
      Unify test main files · c1781766
      Philipp Spilger authored
      * use logger instead of direct cout in throughputtests
      
      Change-Id: I343e55338499c827e8afab79c7ffd687413e8bdb
      c1781766
    • Philipp Spilger's avatar
      Unify hw and sim test targets · 92318655
      Philipp Spilger authored
      * use get_connection_from_env followed by a visit
      * remove unused dispatch headers
      
      Change-Id: I4b69d959443e4d1a6a57284ae8e96ffad69a6519
      92318655
  31. Jul 03, 2020
    • Philipp Spilger's avatar
      Add ConnectionTimeInfo struct · 3ebb1eb9
      Philipp Spilger authored
      * A connection logs time of encode, decode, commit and
        execute operations
      * Add logging to execute_messages, which logs in/out message count
        and time expenditure as difference of the time information before
        and after execution
      * change default loglevel from info to warning in order to be able to have
        the time info print in execute_messages on info loglevel without spamming
        the normal user
      
      Depends-On: 11111
      Change-Id: I17835a9ae7f089da72a9004a18b967c117b6132d
      3ebb1eb9
  32. Jun 12, 2020
    • Oliver Breitwieser's avatar
      Move test helper into proper namespace · 536eac25
      Oliver Breitwieser authored and Philipp Spilger's avatar Philipp Spilger committed
      In preparation of the upcoming integration of quiggeldy, some more
      test-helper will be added that are also to be used in fisch tests. Hence
      properly seperating helpers into different namespaces will prevent
      possible clashes in the future.
      
      Change-Id: I5786fde928674435f19323a27259faa09b936e50
      536eac25
  33. Jun 10, 2020
    • Oliver Breitwieser's avatar
      Rework connection interface · b4c4b793
      Oliver Breitwieser authored
      * As discussed on 2020-04-07 after the Softie's meeting (ECM, YS, PSP,
        CM, OJB), we want to have a streamlined connection interfaces for all
        the possible ways we turn FPGA words into other FPGA words in
        hardware.
      
      * C++-API: Split old Connection objects into two parts:
        * The connection object that the user can only create and destroy but
          which holds state necessary for communication with the backend (hw,
          CoSim, QuiggelyClient, etc) and allows some state to be set.
        * Introduce hxcomm/common/stream.h:
          * The Stream-object featuring a uniform interface handling how to
            feed and read words to/from the backend.
          * The interface is defined via templated `Stream`-class that has to
            be befriended in the corresponding connection implementations
          * The Stream-interface is verified at compile time via the
            Streamable helper-struct.
      
      * Move `execute_words` from fisch as more generic
        `execute_messages`-function that is the entry point for all upper
        layers when communcating with backends.
        * Overloading is possible by fully or partially-specializing the
          detail::ExecutorMessages-helper struct's operator() method (not
          needed once partial function specialization arrives, so never)
        * default implementation in common namespace by adding explicit
          `send_halt_message_type` to ConnectionParameter template argument
      
      * Rework hxcomm/common/{arq,sim}connection.{h,tcc} to use the new Stream
        interface.
      
      * Update all tests to use streams for interacting with the hardware.
      
      * Rename init_parameters_t -> init_parameters_type to be consistent
        (they will be used by quiggeldy but that change is not merged -> no
        API break)
      
      * Provide get_connection_from_env-function that returns a connection
        variant over all possible connections (and is used in pyhxcomm, see
        below).
      
      * Introduce seperate `pyhxcomm`-namespace that is private to hxcomm and
        only to be accessed from Python. It adds convenience context-wrappers
        for connections ensuring connections get closed upon exiting contexts
        in Python
        * pyhxcomm::Managed<Connection> provides enter/exit-methods
        * enter() returns pyhxcom::Handle<Connection> holding the connection
        * if Handle<Connection> gets destroyed, connection gets freed (i.e.
          disconnected)
        * Managed<Connection> also holds a weak-ptr to the returned
          ConnectionHandle object and disconnects the Handle upon exit()-ing
        * Expose union over all Connections as `pyhxcomm_vx.ConnectionHandle`
          that can be used in type annotations in Python.
        * Expose special context manager `pyhxcomm_vx.ManagedConnection` that
          automatically creates a new connection from the environment and
          returns `ConnectionHandle` (which is a concrete `<Connection>Handle`
          in python rather than the cumbersome variant type).
      
      * Introduce hxcomm::visit_connection that allows for applying operations
        on connections wrapped in Handle-objects such as variants for hxcomm
        and pyhxcomm::ConnectionHandles. It is used in
        hxcomm::execute_messages as well as stadls::run-pybind11 bindings.
        * Functions templated over connections can be easily specialized for
          all wrapped connections via:
          * `ConnectionIsPlainGuard<Connection> = 0`
          * `ConnectionIsWrappedGuard<Connection> = 0`
        * Another possibility is to perform compile time checks using
          `ConnectionIsPlain<Connection>::value` (see `run`-implementation in
          haldls for example).
      
      * Add `static char const name[]` attributes for all connection for more
        informative logging.
      
      Depends-On: 10346,10335,10703,10978,11027
      
      Change-Id: I3ff901db53a5cb94a1faa50b18dc36786246f389
      b4c4b793
  34. May 25, 2020