Skip to content
Snippets Groups Projects
  1. Oct 05, 2021
    • Oliver Breitwieser's avatar
      quiggeldy: Reset connection on timeout · 0a29b19b
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      * Add FPGA timeout nofication excplicitly to ConnectionParameters for
        immediate access.
      * Introduces QuiggeldyWorker<T>::check_for_timeout(response) checking
        for responses that are timeouts; triggers a reconnect if encountered.
      
      Change-Id: Ib290317b6fe1c36a44e24600a535964ef0ebf52f
      0a29b19b
    • Oliver Breitwieser's avatar
      quiggeldy: Factor out setup_connection() · 675ac379
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      Change-Id: I92b6a3ab17de0ad0dbbaff7dfe1dfd0ef3eeed64
      675ac379
    • 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
    • Oliver Breitwieser's avatar
      Track users by name instead of UIDs · c2fd2225
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      For non-munge use, display the user supplied username. For munge usage,
      convert uid to string.
      
      Makes for much more informative log messages especially when not using
      munge.
      
      Unfortunately, despite avoiding copying, using strings as user-id seems
      to cause memory corruption after about five minutes of intense usage.
      Investigation pending.
      
      Change-Id: If4626e078a41ce8d4b7059492fea1137db94bfa4
      c2fd2225
    • Oliver Breitwieser's avatar
      QuiggeldyConnection check if remote uses munge · e713be0b
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      The error messages resulting from misconfigured munge-support are rather
      cryptic. Therefore, we have the client ask the server if it expects
      munge to be used and then:
      
      * deactivate munge support on the client if server does not use it.
      * throw an error if client has no munge support but server expects it.
      
      Change-Id: I833b141c6658c6db95a0d06e924a4467c260935c
      e713be0b
    • Oliver Breitwieser's avatar
      quiggeldy: Ensure get_unique_identifier succeeding · 83ec320a
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      Right now, get_unique_identifier() requires an active connection because
      it is not implemented as a static method that checks the environment
      rather than an existing connection.
      
      Because hxtorch depends on this information during set up, we need to
      ensure the connection is established.
      
      Depends-On: 13932
      
      Change-Id: I167c5ced640921cde62d6d40effe6f68b04b8f51
      83ec320a
    • Oliver Breitwieser's avatar
      Allow for custom quiggeldy user via env · 840d9c47
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      This change allows clients to specify a custom username when using
      quiggeldy: QUIGGELDY_USER_NO_MUNGE
      
      As the name indicates, this will disable munge-based authentication to
      quiggeldy and hence requires that munge support is disabled on the
      running quiggeldy.
      
      This is useful if several users are emulated by a single unix user, as
      was the case at the NICE2021 demo.
      
      Depends-On: 13915
      
      Change-Id: Iadacd1fbf25a57d3c3745bfb26140cd44291181a
      840d9c47
    • Oliver Breitwieser's avatar
      Add ReinitStackEntry · 7bd495e0
      Oliver Breitwieser authored and Eric Müller's avatar Eric Müller committed
      * Add templated hxcomm::ReinitStackEntry
        * Allows registration of UTMessage-vectors to be executed after
          relinquishing control of remote hardware resources.
        * Is a no-op for all connections but QuiggeldyClient as only quiggeldy
          supports this mode of operation.
        * In Python, entries should be .pop()-ed from the stack because we
          cannot rely on the garbage collector to call the destructor in time.
      
      * Add specialized hxcomm::vx::RegisterReinit
      
      * Add helpers to wrap RegisterReinit in upper layers that can be
        constructed from Handles
      
      Dependendcies:
      
      Real dependency:
      Depends-On: 11390,14013
      
      We should also ensure the tests get built:
      Depends-On: 11391
      
      Change-Id: I33d640aa569aa4d10802469542bc41f40018ed5b
      7bd495e0
  2. 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
    • Eric Müller's avatar
      Fix(wriggeldy) error handling when spawning quiggeldy · 517d3035
      Eric Müller authored
      Change-Id: I1c8b6aa70aea911a0351372ca540c3fa58eda8f2
      517d3035
    • 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
  3. Sep 30, 2021
  4. Aug 05, 2021
  5. Jul 01, 2021
  6. Jun 09, 2021
  7. May 18, 2021
  8. May 17, 2021
  9. May 10, 2021
  10. Apr 28, 2021
  11. Apr 27, 2021
  12. Apr 26, 2021
  13. Apr 15, 2021
  14. Dec 14, 2020
  15. Dec 12, 2020
  16. 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
  17. Dec 08, 2020
  18. Dec 07, 2020
  19. Dec 01, 2020
    • Oliver Breitwieser's avatar
      Add supports_full_stream_interface · 0f94e016
      Oliver Breitwieser authored
      Based on a discussion between PSP and OJB:
      
      We only want one `friend` declaration in each connection; and that is
      for `Stream`.
      
      Stream then has a nested Streamable struct, that performs that checks
      because it has a right to access private/protected members. It is
      implemented as a series of static_asserts that give a helpful error
      message indicating what failed exactly. But, that means that when we
      instantiate the default-constructed Stream it is effectively a
      declaration of intend (i.e., "we intend this connection instance to
      support the full Stream interface and hard-fail if it doesn't"). We
      cannot perform a "check" if the Connection is even supposed to fulfill
      the full Stream interface beforehand. A separate checker would require
      to also be friends with all connections..
      
      Hence, up until now we provide a manual hint
      ("has_full_stream_interface") that can be used to separate the
      connections into those that are supposed to fulfill the full stream
      interface (and are then used for in-depth hxcomm-tests) and those that
      aren't.
      
      Better:
      We should have the indication if a Connection is supposed to be
      Streamable in a separate type so that Stream only ever gets instantiated
      via its default implementation where a failure to fulfil Streamable
      should result in a compile error with helpful error message.
      
      This struct is supports_full_stream_interface.
      
      Change-Id: I402df2115373d7becfd3d5a3c76c60b3f1e94c66
      0f94e016
    • Oliver Breitwieser's avatar
      Update clang-format · 4ec333f4
      Oliver Breitwieser authored
      Change-Id: I716c34a9f48755c6b1b35fa1cddb9e2a097c6e48
      4ec333f4
  20. Nov 20, 2020
  21. Nov 09, 2020
  22. Oct 30, 2020
  23. Oct 23, 2020