Skip to content
  1. Aug 26, 2015
  2. Aug 25, 2015
    • Jonathan Peyton's avatar
      Fix machine topology pruning. · 62f3840c
      Jonathan Peyton authored
      This patch fixes a bug when eliminating layers in the machine topology (namely
      cores, and threads). Before this patch, if a user specifies using only one 
      thread per socket, then affinity is not set properly due to bad topology
      pruning.
      
      Differential Revision: http://reviews.llvm.org/D11158
      
      llvm-svn: 245966
      62f3840c
  3. Aug 20, 2015
    • Jonathan Peyton's avatar
      Update z_Linux_asm.s to use platform macros · 621743b9
      Jonathan Peyton authored
      z_Linux_asm.s can use the KMP_OS_* / KMP_MIC macros instead of the predefined
      compiler macro checks.  The macro logic to determine KMP_MIC is moved from
      kmp_os.h to kmp_platform.h.
      
      llvm-svn: 245602
      621743b9
  4. Aug 18, 2015
  5. Aug 17, 2015
  6. Aug 13, 2015
    • Jonathan Peyton's avatar
      Remove unused KMP_SETVERSION macro · 221104be
      Jonathan Peyton authored
      This macro and the small amount of code along with it are unused and
      can be removed.  The macro is never defined in any build script or source file.
      
      llvm-svn: 244899
      221104be
  7. Aug 12, 2015
  8. Aug 11, 2015
    • Jonathan Peyton's avatar
      Tidy statistics collection · 45be4500
      Jonathan Peyton authored
      This removes some statistics counters and timers which were not used,
      adds new counters and timers for some language features that were not
      monitored previously and separates the counters and timers into those
      which are of interest for investigating user code and those which are
      only of interest to the developer of the runtime itself.
      The runtime developer statistics are now ony collected if the
      additional #define KMP_DEVELOPER_STATS is set.
      
      Additional user statistics which are now collected include:
      * Count of nested parallelism (omp parallel inside a parallel region)
      * Count of omp distribute occurrences
      * Count of omp teams occurrences
      * Counts of task related statistics (taskyield, task execution, task
        cancellation, task steal)
      * Values passed to omp_set_numtheads
      * Time spent in omp single and omp master
      
      None of this affects code compiled without stats gathering enabled,
      which is the normal library build mode.
      
      This also fixes the CMake build by linking to the standard c++ library
      when building the stats library as it is a requirement.  The normal library
      does not have this requirement and its link phase is left alone.
      
      Differential Revision: http://reviews.llvm.org/D11759
      
      llvm-svn: 244677
      45be4500
  9. Aug 06, 2015
  10. Aug 05, 2015
  11. Jul 27, 2015
  12. Jul 24, 2015
  13. Jul 23, 2015
  14. Jul 21, 2015
    • Jonathan Peyton's avatar
      Fix OMPT support for task frames, parallel regions, and parallel regions + loops · 3fdf3294
      Jonathan Peyton authored
      This patch makes it possible for a performance tool that uses call stack
      unwinding to map implementation-level call stacks from master and worker
      threads into a unified global view. There are several components to this patch.
      
      include/*/ompt.h.var
        Add a new enumeration type that indicates whether the code for a master task
          for a parallel region is invoked by the user program or the runtime system
        Change the signature for OMPT parallel begin/end callbacks to indicate whether
          the master task will be invoked by the program or the runtime system. This
          enables a performance tool using call stack unwinding to handle these two
          cases differently. For this case, a profiler that uses call stack unwinding
          needs to know that the call path prefix for the master task may differ from
          those available within the begin/end callbacks if the program invokes the
          master.
      
      kmp.h
        Change the signature for __kmp_join_call to take an additional parameter
        indicating the fork_context type. This is needed to supply the OMPT parallel
        end callback with information about whether the compiler or the runtime
        invoked the master task for a parallel region.
      
      kmp_csupport.c
        Ensure that the OMPT task frame field reenter_runtime_frame is properly set
          and cleared before and after calls to fork and join threads for a parallel
          region.
        Adjust the code for the new signature for __kmp_join_call.
        Adjust the OMPT parallel begin callback invocations to carry the extra
          parameter indicating whether the program or the runtime invokes the master
          task for a parallel region.
      
      kmp_gsupport.c
        Apply all of the analogous changes described for kmp_csupport.c for the GOMP
          interface
        Add OMPT support for the GOMP combined parallel region + loop API to
          maintain the OMPT task frame field reenter_runtime_frame.
      
      kmp_runtime.c:
        Use the new information passed by __kmp_join_call to adjust the OMPT
          parallel end callback invocations to carry the extra parameter indicating
          whether the program or the runtime invokes the master task for a parallel
          region.
      
      ompt_internal.h:
        Use the flavor of the parallel region API (GNU or Intel) to determine who
          invokes the master task.
      
      Differential Revision: http://reviews.llvm.org/D11259
      
      llvm-svn: 242817
      3fdf3294
  15. Jul 18, 2015
    • Chandler Carruth's avatar
      [cmake] Support enabling -Werror in the OpenMP runtime CMake build and · 5145156a
      Chandler Carruth authored
      clean up the build.
      
      This disables all of the Clang warnings that fire for me when building
      libomp.so on Linux with a recent Clang binary. Lots of these should
      probably be fixed, but I want to at least get the build warning-clean
      and make it easy to keep that way.
      
      I also switched a bunch of the warnings that are used both for C and C++
      compiles to check the flag with C compilation test.
      
      Differential Revision: http://reviews.llvm.org/D11253
      
      llvm-svn: 242604
      5145156a
  16. Jul 15, 2015
    • Jonathan Peyton's avatar
      Re-indent the CMake refactor to two-space indention · 5b4acbd6
      Jonathan Peyton authored
      I apologize for this nasty commit, but I somehow overlooked Chandler's
      comment to re-indent these files to two space indention.  I know this
      is a horrible commit, but I figured if it was done quickly after the 
      first one, not too many conflicts would arise.
      
      Again, I'm sorry and won't do this again.
      
      llvm-svn: 242301
      5b4acbd6
    • Jonathan Peyton's avatar
      Large Refactor of CMake build system · 2e013352
      Jonathan Peyton authored
      This commit improves numerous functionalities of the OpenMP CMake build 
      system to be more conducive with LLVM's build system and build philosophies.
      The CMake build system, as it was before this commit, was not up to LLVM's 
      standards and did not implement the configuration stage like most CMake based
      build systems offer (check for compiler flags, libraries, etc.) In order to
      improve it dramatically in a short period of time, a large refactoring had 
      to be done.
      The main changes done with this commit are as follows:
      
      * Compiler flag checks - The flags are no longer grabbed from compiler specific
        directories.  They are checked for availability in config-ix.cmake and added
        accordingly inside LibompHandleFlags.cmake.
      * Feature checks were added in config-ix.cmake.  For example, the standard CMake
        module FindThreads is probed for the threading model to use inside the OpenMP
        library.
      * OS detection - There is no longer a LIBOMP_OS variable, OS-specifc build logic
        is wrapped around the WIN32 and APPLE macros with !(WIN32 OR APPLE) meaning 
        a Unix flavor of some sort.
      * Got rid of vestigial functions/macros/variables
      * Added new libomp_append() function which is used everywhere to conditionally
        or undconditionally append to a list
      * All targets have the libomp prefix so as not to interfere with any other
        project
      * LibompCheckLinkerFlag.cmake module was added which checks for linker flags
        specifically for building shared libraries.
      * LibompCheckFortranFlag.cmake module was added which checks for fortran flag
        availability.
      * Removed most of the cruft from the translation between the perl+Makefile based
        build system and this one.  The remaining components that they share are
        perl scripts which I'm in the process of removing.
      
      There is still more left to do.  The perl scripts still need to be removed, and
      a config.h.in file (or similarly named) needs to be added with #cmakedefine lines
      in it.  But this is a much better first step than the previous system.
      
      Differential Revision: http://reviews.llvm.org/D10656
      
      llvm-svn: 242298
      2e013352
  17. Jul 14, 2015
  18. Jul 13, 2015
    • Jonathan Peyton's avatar
      Fix some bugs in OMPT support · 122dd76f
      Jonathan Peyton authored
      1.) in kmp_csupport.c, move computation of parameters only needed for OMPT tracing
      inside a conditional to reduce overhead if not receiving ompt_event_master_begin
      callbacks.
      2.) in kmp_gsupport.c, remove spurious reset of OMPT reenter_runtime_frame (which 
      is set in its caller, GOMP_parallel_start correct placement of #if OMP_TRACE so 
      that state is maintained even if tracing support not included.  
      3.) in z_Linux_util.c, add architecture independent support for OMPT by setting 
      and resetting OMPT's exit_frame_ptr before and after invoking a microtask.  
      4.) On the Intel MIC, the loader refuses to retain static symbols in the 
      libomp.so shared library, even though tools need them. The loader could not be
      bullied into doing so. To accommodate this, I changed the visibility of OMPT 
      placeholder functions to public. This required additions in exports.so.txt, 
      adding extern "C" scoping in ompt-general.c so that the public placeholder
      symbols won't be mangled.
      
      Patch by John Mellor-Crummey
      
      Differential Revision: http://reviews.llvm.org/D11062
      
      llvm-svn: 242052
      122dd76f
    • Andrey Churbanov's avatar
      fixed typo in debug assertion reported by John Mellor-Crummey · 9ad5c3a3
      Andrey Churbanov authored
      llvm-svn: 242043
      9ad5c3a3
  19. Jul 09, 2015
    • Jonathan Peyton's avatar
      Turn debugger interface off by default. · 3bbcb4d7
      Jonathan Peyton authored
      Just changed LIBOMP_USE_DEBUGGER to false.
      
      llvm-svn: 241852
      3bbcb4d7
    • Jonathan Peyton's avatar
      Follow up to safe API patch · 01b58b7d
      Jonathan Peyton authored
      A while back, we made an initial change where dangerous C API functions were
      replaced with macros that translated the dangerous API function calls to safer
      function calls e.g., sprintf() replaced with KMP_SPRINTF() which translates to 
      sprintf_s() on Windows. Currently, the only operating system where this is 
      applicable is Windows. Unix-like systems are still using the dangerous API 
      e.g., KMP_SPRINTF() translates to sprintf().  Our own testing showed no
      performance differences.
      
      Differential Revision: http://reviews.llvm.org/D9918
      
      llvm-svn: 241833
      01b58b7d
    • Jonathan Peyton's avatar
      Enable debugger support · 8fbb49ab
      Jonathan Peyton authored
      These changes enable external debuggers to conveniently interface with 
      the LLVM OpenMP Library.  Structures are added which describe the important
      internal structures of the OpenMP Library e.g., teams, threads, etc.
      This feature is turned on by default (CMake variable LIBOMP_USE_DEBUGGER)
      and can be turned off with -DLIBOMP_USE_DEBUGGER=off.
      
      Differential Revision: http://reviews.llvm.org/D10038
      
      llvm-svn: 241832
      8fbb49ab
  20. Jul 01, 2015
    • Jonathan Peyton's avatar
      Fix OMPT event_barrer_end · 48281516
      Jonathan Peyton authored
      The OMPT status is never equal to ompt_status_track. ompt_status_track = 0x2 
      and ompt_status_track_callback = 0x6 just share a bit, so that we can check 
      for traceing and callbacks with the same status.
      
      Patch by Tim Cramer
      
      Differential Revision: http://reviews.llvm.org/D10863
      
      llvm-svn: 241167
      48281516
  21. Jun 29, 2015
    • Jonathan Peyton's avatar
      Remove _KMP_BUILD_TIME macro from kmp_version.c · 6e19ed89
      Jonathan Peyton authored
      At the suggestion of Chandler Carruth, I've removed the timestamp macro,
      _KMP_BUILD_TIME, that cmake currently sets to "No_Timestamp" and replaced it with standard
      __DATE__ and __TIME__ macros inside kmp_version.c.
      
      llvm-svn: 240985
      6e19ed89
    • Jonathan Peyton's avatar
      Remove use of assignment to multiple struct fields using .fieldname (OMPT) · da7c8ab5
      Jonathan Peyton authored
      Remove use of assignment to multiple struct fields using .fieldname syntax. 
      This doesn't work with gcc 4.8 and earlier.  Replace with elementwise field assignments.
      
      Patch by John Mellor-Crummey
      
      Differential Revision: http://reviews.llvm.org/D10798
      
      llvm-svn: 240972
      da7c8ab5
    • Jonathan Peyton's avatar
      Fix OMPT state maintenance for barriers and missing init of implicit task id. · 117a94ff
      Jonathan Peyton authored
      Fix OMPT support for barriers so that state changes occur even if OMPT_TRACE turned off. 
      These state changes are needed by performance tools that use callbacks for either 
      ompt_event_wait_barrier_begin or ompt_event_wait_barrier_end.  Change ifdef flag to OMPT_BLAME 
      for callbacks ompt_event_wait_barrier_begin or ompt_event_wait_barrier_end rather than 
      OMPT_TRACE -- they were misclassified.  Without this patch, when the runtime is compiled with 
      LIBOMP_OMPT_SUPPORT=true, LIBOMP_OMPT_BLAME=true, and LIBOMP_OMPT_TRACE=false, and a callback 
      is registered for either ompt_event_wait_barrier_begin or ompt_event_wait_barrier_end, then an 
      assertion will trip.  Fix the scoping of one OMPT_TRACE ifdef, which should not have surrounded 
      an update of an OMPT state.  Add a missing initialization of an OMPT task id for an implicit task.
      
      Patch by John Mellor-Crummey
      
      Differential Revision: http://reviews.llvm.org/D10759
      
      llvm-svn: 240970
      117a94ff
  22. Jun 22, 2015
    • Jonathan Peyton's avatar
      Allow machine hierarchy expansion · 7f09a98a
      Jonathan Peyton authored
      This fix allows the machine hierarchy to be expanded in case it needs to handle 
      more threads. It adds a resize function to accomplish this.
      
      Differential Revision: http://reviews.llvm.org/D9900
      
      llvm-svn: 240292
      7f09a98a
    • Jonathan Peyton's avatar
      Re-enable Visual Studio Builds. · 7be07533
      Jonathan Peyton authored
      I tried to compile with Visual Studio using CMake and found these two sections of code 
      causing problems for Visual Studio.  The first one removes the use of variable length 
      arrays by instead using KMP_ALLOCA().  The second part eliminates a redundant cpuid 
      assembly call by using the already existing __kmp_x86_cpuid() call instead.
      
      llvm-svn: 240290
      7be07533
  23. Jun 17, 2015
  24. Jun 11, 2015
Loading