Skip to content
  1. Sep 14, 2016
    • Jonas Hahnfeld's avatar
      [OMPT] fix __ompt_get_teaminfo to consult lwt entries of parent teams · 28ea24bb
      Jonas Hahnfeld authored
      The comment already states, that this function should work similarly as __ompt_get_taskinfo.
      
      The function only looked for lwt entries of the current team, but not when unrolling the parents. This fix aligns the implementation to __ompt_get_taskinfo.
      
      The new test case creates a single theaded team (->lwt) and then a nested active team.
      Before the innermost print_id(1) would deliver a different team then the outer print_id(0).
      
      Patch by Joachim Protze!
      
      Differential Revision: https://reviews.llvm.org/D23309
      
      llvm-svn: 281466
      28ea24bb
    • Jonas Hahnfeld's avatar
      [OMPT] Align implementation of reenter frame address to latest (frozen) version of OMPT spec · fd0614d8
      Jonas Hahnfeld authored
      The latest OMPT spec changed the semantic of a tasks reenter frame to be the application frame, that will be entered, when the runtime frame drops.
      Before it was the last frame in the runtime. This doesn't work for some gcc execution pathes or even clang generated code for :
      Since there is no runtime frame between the executed task and the encountering task.
      
      The test case compares exit and reenter addresses against addresses captured in application code
      
      Patch by Joachim Protze!
      
      Differential Revision: https://reviews.llvm.org/D23305
      
      llvm-svn: 281464
      fd0614d8
  2. Oct 29, 2015
    • Jonathan Peyton's avatar
      [OMPT] Windows Support for OMPT · 69e596a5
      Jonathan Peyton authored
      The problem is that the ompt_tool() function (which must be implemented by a
      performance tool) should be defined in the RTL as well to cover the case when
      the tool is not present in the address space of the process. This functionality
      is accomplished with weak symbols in Unices. Unfortunately, Windows does not
      support weak symbols.
      
      The solution in these changes is to grab the list of all modules loaded by the
      process and then search for symbol "ompt_tool()" within them. The function
      ompt_tool_windows() performs the search of the ompt_tool symbol. If ompt_tool is
      found, then its return value is used to initialize the tool. If ompt_tool is not
      found, then ompt_tool_windows() returns NULL and OMPT is thus, disabled.
      
      While doing these changes, the OMPT_SUPPORT detection in CMake was changed to
      test for the required featuers for OMPT_SUPPORT, namely: builtin_frame_address()
      existence, weak attribute existence and psapi.dll existence. For
      LIBOMP_HAVE_OMPT_SUPPORT to be true, it must be that the builtin_frame_address()
      intrinsic exists AND one of: either weak attributes exist or psapi.dll exists.
      
      Also, since Process Status API is used I had to add new dependency -- psapi.dll
      to the library dependency micro test.
      
      Differential Revision: http://reviews.llvm.org/D14027
      
      llvm-svn: 251654
      69e596a5
  3. Oct 09, 2015
  4. Sep 21, 2015
    • Jonathan Peyton's avatar
      [OMPT] Overhaul OMPT initialization interface · 82a13bf3
      Jonathan Peyton authored
      The OMPT specification has changed. This revision brings the LLVM OpenMP
      implementation up to date.
      
      Technical overview of changes:
      Previously, a public weak symbol ompt_initialize was called after the OpenMP
      runtime is initialized. The new interface calls a global weak symbol ompt_tool
      prior to initialization. If a tool is present, ompt_tool returns a pointer to
      a function that matches the signature for ompt_initialize. After OpenMP is 
      initialized the function pointer is called to initialize a tool.
      Knowing that OMPT will be enabled before initialization allows OMPT support to
      be initialized as part of initialization instead of back patching
      initialization of OMPT support after the fact.
      Post OpenMP initialization support has been generalized moves from
      ompt-specific.c into ompt-general.c, since the OMPT initialization logic is no
      longer implementation specific.
      
      Patch by John Mellor-Crummey
      
      Differential Revision: http://reviews.llvm.org/D12998
      
      llvm-svn: 248187
      82a13bf3
  5. Apr 29, 2015
Loading