1. 23 Aug, 2019 1 commit
    • Nicolas Denoyelle's avatar
      ### Cuda implementation of areas. · df3b0f85
      Nicolas Denoyelle authored
      New area allow to allocate data on cuda devices.
      Allocation optionally include the ability to map
      host memory on device memory. See cuda area
      documentation.
      
      Includes libtool helper to link cuda device object files
      with the remaining of the library.
      
      An additional error code has been added to aml errors for handling busy cuda devices
      Also, all CI stages as been set not to run on branches name starting with wip.
      df3b0f85
  2. 02 Jul, 2019 2 commits
  3. 27 Jun, 2019 1 commit
  4. 01 May, 2019 1 commit
    • Swann Perarnau's avatar
      [doc] working makefiles, configure · 6b9687d2
      Swann Perarnau authored
      Ensure that autoconf and automake can build the docs, and are
      distributing it properly.
      
      Still one issue: if we detect doxygen and sphinx on configure, we
      rebuild the docs, even if the user is using a distributed release.
      6b9687d2
  5. 25 Apr, 2019 1 commit
  6. 27 Mar, 2019 1 commit
  7. 26 Mar, 2019 1 commit
  8. 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
  9. 21 Mar, 2019 1 commit
  10. 13 Mar, 2019 1 commit
    • Nicolas Denoyelle's avatar
      [refactor] reorganize repository · 2ad4488c
      Nicolas Denoyelle authored
      - create one directory per building block in src and include
      - keep one directory for tests, \
        otherwise automake make them "test suites"
      - move to AC_OPENMP, which is from autoconf 2.62 (2008)
      2ad4488c
  11. 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
  12. 26 Jul, 2018 1 commit
  13. 25 Jul, 2018 2 commits
    • Brian Suchy's avatar
      [feature] add matrix multiply benchmarks · 2c452094
      Brian Suchy authored
      Implement 3 dgemm benchmarks versions:
      - standard mkl code on total matrix
      - prefetch scheme based on UTK/INRIA/ANL on-going collaboration
      - same tiling but no prefetch version of the code
      
      This is the version ready for merging, after several weeks of work on
      independant branch. Further improvements to API/code will continue after
      it reaches master.
      2c452094
    • 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
  14. 20 Jul, 2018 1 commit
    • Swann Perarnau's avatar
      [refactor] move functional tests, proper OpenMP · 51167d12
      Swann Perarnau authored
      We are starting to work on benchmarks to evaluate the usefulness of this
      library. Instead of integrating them into the testing infrastructure, it
      makes more sense for them to have their own directory and a different
      way of handling them.
      
      This patch:
       - creates a benchmark directory for actual codes that we want to use as
         benchmarks of our library.
       - moves functional tests into it.
       - add proper OpenMP detection for these codes
      51167d12
  15. 08 Mar, 2018 1 commit
    • Swann Perarnau's avatar
      [feature] Add initial tiling and binding support · bcb6c923
      Swann Perarnau authored
      Implement 1d tiling and simple binding support. The idea is to allow
      an application to explain the AML how data should be organized, and to
      be able to reuse this info when dealing with memory movement.
      
      The current interfaces are not great, but they work.
      bcb6c923
  16. 01 Feb, 2018 1 commit
    • Swann Perarnau's avatar
      [fix] Make jemalloc link properly with aml · f8e57eeb
      Swann Perarnau authored
      Using both --with-jemalloc-prefix=jemk_ and --with-install-suffix=-aml
      ensures that the libjemalloc we build for our internal use has unique
      functions names and library names.
      
      This patch fixes a problem with the libtool configuration, where we had
      to link a static jemalloc library into the shared aml library to make
      everything work. Instead, we can now use the proper LIBADD variables
      with the unique library.
      
      Note that with this patch the `make check` target requires a `make
      install` beforehand.
      f8e57eeb
  17. 06 Oct, 2017 1 commit
    • Swann Perarnau's avatar
      [refactor] Implement new API, based on jemalloc · 66564c2f
      Swann Perarnau authored
      This is a redesign of the library, as a hierarchy of core objects
      implementing its various features. The idea is to create an API that is
      as flexible and customizable as possible, by exposing as much as
      possible of its internals, so that users can create customs versions
      easily.
      
      We also move away from memkind as a possible backend, opting instead to
      vendor the jemalloc interface and implement everything ourselves on top
      of that.
      
      We expect to start building the low-level pieces using hwloc as a
      backend soon, at least in terms of accessing available devices.
      66564c2f
  18. 22 Aug, 2017 1 commit
    • Swann Perarnau's avatar
      [refactor] Rework code for better abstractions · a41b0412
      Swann Perarnau authored
      This is a rewrite of the existing code into a memory library exposing
      more of its internal abstractions. This refactoring is required to:
      - make progress faster by focusing on the core new features
      - abstract more of the underlying components and expose those
      abstractions
      - build upon existing libraries (memkind) for the internal stuff.
      
      Memkind is used as a crutch here, we do not intend to use it in the long
      term, as some of its internal are opposed to what we want (topology
      management in particular).
      
      Nevertheless, it currently provides a good allocator internally, and
      decent access to deep memory, for now.
      
      Over time, we figured out that the best way to build this API was to
      create several layers of APIs, each with more abstractions over the
      devices. At the same time, we want each layer to expose its internal
      mechanisms, so that a user can customize any of them.
      
      This is why we end up with areas and dma engines, and we will add in the
      future other stuff, like data decomposition and distribution methods, as
      well as direct support for "pipelining".
      a41b0412
  19. 30 Jun, 2016 1 commit
    • Swann Perarnau's avatar
      Add first working version: limit numa allocs · 80669c37
      Swann Perarnau authored
      This is the first working version of the library. It does very little:
      - only numa support
      - one allocation per node only
      - limited tests
      - limited set of functions
      
      Nevertheless, this gives a good idea of what the API should look like, and the
      kind of benchmarks we can write with it.
      80669c37