Skip to content
  1. 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
  2. Jul 14, 2015
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. Jun 17, 2015
  9. Jun 11, 2015
    • Jonathan Peyton's avatar
      Remove unused variables '__kmp_build_check_*' for non assert builds. · 9919dfc3
      Jonathan Peyton authored
      Add new LIBOMP_ENABLE_ASSERTIONS macro which can be set in a standalone build
      or takes the value of LLVM_ENABLE_ASSERTIONS when inside llvm/projects.  This
      change also defines the KMP_BUILD_ASSERT() macro to do nothing when ENABLE_ASSERTIONS
      is off.  This means the __kmp_build_check_* types won't be defined and thus, no warnings.
      http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000719.html
      
      Patch by Jack Howarth and Jonathan Peyton
      
      llvm-svn: 239546
      9919dfc3
    • Jonathan Peyton's avatar
      Implement recursive CMake. · 5215890c
      Jonathan Peyton authored
      Most CMake build systems put CMakeLists.txt files inside source directories where 
      items need to get built. This change follows that convention by adding a new 
      runtime/src/CMakeLists.txt file. An additional benefit is this helps logically 
      seperate configuring with building as well. This change is mostly just copying and 
      pasting the bottom half of runtime/CMakeLists.txt into runtime/src/CMakeLists.txt, 
      but a few changes had to be made to get it to work. Most of those changes were to 
      directory prefixes.
      
      Differential Revision: http://reviews.llvm.org/D10344
      
      llvm-svn: 239542
      5215890c
  10. Jun 08, 2015
  11. Jun 05, 2015
    • Jonathan Peyton's avatar
      Fix extern warnings produced by ittnotify_static.c · 4959fda7
      Jonathan Peyton authored
      when compiling with gcc or clang numerous warnings concerning the usage 
      of extern "C" linkage.  All the __kmp_itt_sync* variables are declared
      like: extern "C" type __kmp_itt_sync... = definition; through various macros.
      This note from cppreference.com explains why this is a problem.
      // From http://en.cppreference.com/w/cpp/language/language_linkage
      extern "C" int x; // a declaration and not a definition
      // The above line is equivalent to extern "C" { extern int x; }
      extern "C" { int x; } // a declaration and definition
      Since the __kmp_itt_* variables are being declared and defined, these variables 
      should use the bracketed version instead.
      
      llvm-svn: 239184
      4959fda7
  12. Jun 04, 2015
    • Jonathan Peyton's avatar
      Fix some sign compare warnings. · 1e7a1ddc
      Jonathan Peyton authored
      This change changes kmp_bstate.old_tid to sign integer instead of unsigned integer.
      It also defines two new macros KMP_NSEC_PER_SEC and KMP_USEC_PER_SEC which lets us take
      control of the sign (we want them to be longs).  Also, in kmp_wait_release.h, the byteref()
      function's return type is changed from char to unsigned char.
      
      llvm-svn: 239057
      1e7a1ddc
  13. Jun 03, 2015
  14. Jun 02, 2015
  15. Jun 01, 2015
    • Jonathan Peyton's avatar
      Apply name change to Makefile build system. · 32be447d
      Jonathan Peyton authored
      This change produces a dynamic library named libomp instead of
      libiomp5.  Similar to the CMake change, it produces symlinks of libiomp5
      in the exports/ directory for Unix systems and copies for Windows.
      
      llvm-svn: 238720
      32be447d
    • Jonathan Peyton's avatar
      Apply name change to CMake build system. · 227e1aeb
      Jonathan Peyton authored
      This change has the CMake build system create a dynamic library named
      libomp instead of libiomp5.  Also any reference to libiomp is replaced
      with libomp.  One can still use the LIBOMP_LIB_NAME variable to enforce
      a different name, and everything will still work as expected.  An important
      note is that libiomp5 and libgomp symlinks are created at install time when
      on Unix systems.  On Windows, copies are created with the legacy names.
      
      llvm-svn: 238715
      227e1aeb
    • Jonathan Peyton's avatar
      Apply name change to tools/* files. · f0efbb54
      Jonathan Peyton authored
      These changes are all in comments.  Change libiomp references to
      libomp.
      
      llvm-svn: 238713
      f0efbb54
    • Jonathan Peyton's avatar
      Apply name change to src/* files. · 66338295
      Jonathan Peyton authored
      These changes are mostly in comments, but there are a few
      that aren't.  Change libiomp5 => libomp everywhere.  One internal
      function name is changed in kmp_gsupport.c, and in kmp_i18n.c, the
      static char[] variable 'name' is changed to "libomp".
      
      llvm-svn: 238712
      66338295
    • Jonathan Peyton's avatar
      Apply name change to doxygen files. · 469dcc63
      Jonathan Peyton authored
      This change only affects the doxygen file that contains a
      reference to libiomp5.  change libiomp5 to libomp.
      
      llvm-svn: 238711
      469dcc63
    • Jonathan Peyton's avatar
      Adding libomp.rc.var for name change · 1fdcb8b5
      Jonathan Peyton authored
      Adding a new file libomp.rc.var in anticipation of more
      name change commits.  This file is a copy of libiomp.rc.var.
      
      llvm-svn: 238710
      1fdcb8b5
  16. May 29, 2015
  17. May 28, 2015
Loading