1. 02 Feb, 2015 1 commit
    • Lorenz Huedepohl's avatar
      Measure RAM access with Linux perf API · 49797bea
      Lorenz Huedepohl authored
      There is currently no reliable way to measure RAM accesses with PAPI,
      the previous way by counting load and store instructions is not very
      useful, as it is unknown how many bytes are transferred in each
      On certain CPUs there is a reliable way to measure this via an "uncore"
      performance counter, one can check if your CPU (and/or Linux kernel
      version) support this by checking if the files
      To access these counter from an unprivileged program one has to set the
      "paranoia" level of the perf subsystem to at most 0, adjustable via the
      Along with this change there is a small API/ABI breakage as some keyword
      arguments related to the memory measurement have been renamed/split-up.
  2. 21 Jul, 2014 3 commits
  3. 18 Jun, 2014 2 commits
  4. 28 May, 2014 2 commits
  5. 13 May, 2014 1 commit
    • Lorenz Huedepohl's avatar
      Counter for memory bandwidth (loads + stores) · 803a3959
      Lorenz Huedepohl authored
      Additionally one can now also measure load and stores, and thus the
      memory bandwidth. Therefore, also the arithmetic intensity.
      One caveat, though: The user is responsible to provide a meaningful
      value for the amount of bytes transferred in one load/store, via the
      "bytes_per_ldsr" parameter of the new function %set_print_options.
      Till now, I have now way of obtaining this value programmatically, and
      it also can and will vary for different sections of a program.
      For example, a SSE movapd instructions loads/stores 16 byte, but is
      still counted as one "load and store" instruction, just as well as a
      1-byte mov. Feel free to advise me on a better set of machine counters..
      Also, somewhat updated documentation.
  6. 07 May, 2014 1 commit
  7. 06 May, 2014 1 commit
    • Lorenz Huedepohl's avatar
      Allow the user to activate FLOPS/RAM measurements · 3fe6c3d1
      Lorenz Huedepohl authored
      Now, one can select which kind of measurements are taken by calling the
      member functions %measure_flops, and %measure_memory of a timer_t
      object. For example
        type(timer_t) :: timer
        call timer%measure_flops(.true.)
        call timer%measure_memory(.true.)
        call timer%enable()
      An explicit ftimings_init() call is now no longer necessary, PAPI will
      be initialized on the first %measure_flops(.true.) call.
  8. 05 May, 2014 1 commit
  9. 02 May, 2014 4 commits
  10. 31 Jan, 2014 1 commit
  11. 27 Jan, 2014 2 commits
  12. 17 Jan, 2014 1 commit
  13. 14 Jan, 2014 1 commit
  14. 18 Jun, 2013 4 commits