1. 26 Mar, 2019 3 commits
  2. 25 Mar, 2019 1 commit
  3. 22 Mar, 2019 1 commit
    • Swann Perarnau's avatar
      [refactor] use autoconf + m4 for version mngmt · d8803390
      Swann Perarnau authored
      Use m4 to define autoconf-level version variables, following the naming
      scheme of semver.org
      
      To make use of these variables in the headers and sources, a
      generated-header is added in aml/utils/version.h
      
      Also add a simple test for that part of the lib.
      d8803390
  4. 21 Mar, 2019 4 commits
  5. 20 Mar, 2019 2 commits
  6. 14 Mar, 2019 1 commit
  7. 13 Mar, 2019 2 commits
  8. 08 Mar, 2019 1 commit
    • Swann Perarnau's avatar
      [fix] Embed custom jemalloc into libaml · ac85bab6
      Swann Perarnau authored
      Force libtool to static link the PIC version of our jemalloc import into
      libaml, making libaml standalone. This requires us to test some
      additional libraries in our own configure (pthread, and dlopen).
      
      This also solves the long-standing issue of `make check` only working after
      `make install`, while removing our custom jemalloc from the installed
      libraries.
      
      Fixes #26.
      ac85bab6
  9. 15 Feb, 2019 1 commit
  10. 27 Aug, 2018 1 commit
    • Swann Perarnau's avatar
      [feature/refactor] add tileid function · 55500ab0
      Swann Perarnau authored
      Instead of asking the user to provide the offsets into a tiling, add a
      function providing a tileid. This tileid corresponds to the in-memory
      order of tiles, making the tilestart functions a lot simpler.
      
      We still need to split the tileid for tilestart because scratchpads
      create requests based on tileids.
      
      Also add a unit test for tiling_2d, to make sure we're not doing
      anything crazy.
      55500ab0
  11. 24 Aug, 2018 1 commit
  12. 20 Aug, 2018 2 commits
  13. 06 Aug, 2018 4 commits
    • Swann Perarnau's avatar
      [fix] Align mbind arguments properly. · 30d3840a
      Swann Perarnau authored
      mbind requires that the input ptr be aligned on a page.
      
      NOTE: we could also figure out a way to ask jemalloc
      for page-aligned allocations, but that would probably
      be too much for each alloc.
      30d3840a
    • Swann Perarnau's avatar
      [fix] Force mbind on allocation from arena · 759ec35a
      Swann Perarnau authored
      The way jemalloc handles big allocations can often result in surprising
      calls to mmap/mbind (splitting allocations, rounded up sizes). It also
      makes the path between an aml_alloc and mbind quite difficult to see.
      More worrying, if jemalloc reuses a previous allocation, the mbind will
      not be called again, which might result in the wrong binding happening.
      
      To fix those issues, we move the mbind logic to be around the
      allocations returned from jemalloc. This will ensure that we always bind
      properly. The only issue is that it might slow down allocations.
      
      It can also cause issues if the same arena is used by multiple areas, as
      allocations might be overlapping a page. We will move away from sharing
      arenas for benchmarks from now on.
      759ec35a
    • Swann Perarnau's avatar
      [feature/fix] add column-major 2D tiling · 9764f3c6
      Swann Perarnau authored
      Fix dgemm_noprefetch to match pattern from @suchyb in #19.
      In order to do so we split our 2d tiling into column-major and
      row-major ones. Note that those are refering to the order of the tiles,
      not the internal data of a tile, as a tiling should be agnostic to it.
      9764f3c6
    • Swann Perarnau's avatar
      [feature] add 2d tiling of contiguous tiles · 508c4695
      Swann Perarnau authored
      Add a tiling representing a 2d array of contiguous tiles. Also add a
      ndims function to retrieve the dimensions in tiles of the tiling.
      
      It also became quite obvious that the iterators are useless right now.
      We should think about changing that.
      508c4695
  14. 30 Jul, 2018 1 commit
  15. 25 Jul, 2018 2 commits
    • Brian Suchy's avatar
      [feature] add 2D tiling, additional methods. · a13ddad2
      Brian Suchy authored and Swann Perarnau's avatar Swann Perarnau committed
      Implement a 2D tiling with continuous tiles in memory, with tiles
      organized in row-major order inside the virtual address range.
      
      Also adds functions to query the size of a tile inside the tiling.
      a13ddad2
    • Swann Perarnau's avatar
      [fix] Avoid conflicts when jemalloc is used twice · c1ec7da8
      Swann Perarnau authored
      When a code using aml is also linking against jemalloc, errors can occur
      because we use the default jemk prefix for the aml specific jemalloc
      install. To fix these issues, we instead use a prefix aml-specific.
      
      Discovered when using mkl on a knl box.
      c1ec7da8
  16. 05 Jul, 2018 1 commit
  17. 30 Mar, 2018 2 commits
    • Swann Perarnau's avatar
      [fix] unlocks are too early in dma_linux_* · c445b498
      Swann Perarnau authored
      We were unlocking the dma before the request type get set to a
      proper value, resulting in requests sometimes overlapping when
      multiple threads were used in benchmarks.
      c445b498
    • Swann Perarnau's avatar
      [feature] add function to release a scratch tile · 7260868d
      Swann Perarnau authored
      When a user doesn't need a tile to be pushed back into the scratchpad,
      it is better to just `release` that tile instead. This is particularly
      useful for read-only data for applications that are bandwidth limited.
      7260868d
  18. 29 Mar, 2018 2 commits
  19. 28 Mar, 2018 7 commits
    • Swann Perarnau's avatar
      [feature] make scratch_par thread-safe · 1e1f1ced
      Swann Perarnau authored
      Add mutex to make request creation and destruction thread-safe. As for
      scratch_seq, we need to deal both with requests and tiles during these
      functions, so we lock the entire section.
      1e1f1ced
    • Swann Perarnau's avatar
      [feature] make scratch_seq thread-safe · cd9dba51
      Swann Perarnau authored
      Add mutex to make request creation and destruction thread-safe. As we
      need to deal both we requests and tiles during these functions, we lock
      the entire section.
      cd9dba51
    • Swann Perarnau's avatar
      [feature] make dma_linux_par thread-safe · 7a69c840
      Swann Perarnau authored
      Add mutex to make request creation and destruction thread-safe. Same as
      dma_linux_seq, the changes are quite simple, as we only need to protect
      modifications to the requests array.
      7a69c840
    • Swann Perarnau's avatar
      [feature] make dma_linux_seq thread-safe · 9f2b685d
      Swann Perarnau authored
      Add a mutex to make request creation and destruction thread-safe. As the
      code here is quite simple, we only need to protect modifications to the
      request array.
      9f2b685d
    • Swann Perarnau's avatar
      [refactor] remove extra tiling from request · b52f0e52
      Swann Perarnau authored
      scratch_request_seq contains one extra tiling that is unnecessary.
      Remove it.
      b52f0e52
    • Swann Perarnau's avatar
      [refactor] remove unnecessary data from request · 22063684
      Swann Perarnau authored
      The request type contains two much stuff, remove extra pointers to win
      some space.
      22063684
    • Swann Perarnau's avatar
      [feature] add a pthread based scratchpad · fa51aea5
      Swann Perarnau authored
      Add a scratchpad that creates one pthread per request, to call
      synchronous dma operations.
      
      The intent is to end up with a cross product of programming language
      support between dma and scratch:
      - scratch_par + dma_seq gives users parallel scratch requests
      - scratch_seq + dma_par gives users sequential access to parallel moves
      
      The two other options don't make as much sense though.
      fa51aea5
  20. 27 Mar, 2018 1 commit
    • Swann Perarnau's avatar
      [refactor] use vector in scratch · 20354336
      Swann Perarnau authored
      Replace custom code with generic vectors for the scratch implementation.
      In the process, fix a bug in the management of tiles, as they were being
      freed on pull completion, which is wrong.
      20354336