summaryrefslogtreecommitdiffstats
path: root/openmp
Commit message (Collapse)AuthorAgeFilesLines
...
* Force the readelf call to be in EnglishSylvestre Ledru2015-09-161-0/+5
| | | | | | | | | | | | Summary: For example, when readelf is called on a french localization, it will find "Librairie partagées" instead of "shared library" Reviewers: AndreyChurbanov, jcownie Differential Revision: http://reviews.llvm.org/D12902 llvm-svn: 247787
* Removing the Makefile/Perl build system.Jonathan Peyton2015-09-1433-7357/+80
| | | | | | | | | | | | This change deletes the Makefile+Perl build system and all files used by it which aren't used by the CMake build system. This included many Perl files, *.mk files, iomp* files. This change also updates the README's and index.html to instruct the user to use the CMake build system. All mentioning of the Perl+Makefile based system are removed. Differential Revision: http://reviews.llvm.org/D12331 llvm-svn: 247583
* [OMPT] Fix assertion that arises when waiting for proxy tasks on runtime ↵Jonathan Peyton2015-09-102-11/+19
| | | | | | | | | | | | | | shutdown This only triggered when built in debug mode with OMPT enabled: __kmp_wait_template expected the state of the current thread to be either ompt_state_idle or ompt_state_wait_barrier{,_implicit,_explicit}. Patch by Jonas Hahnfeld Differential Revision: http://reviews.llvm.org/D12754 llvm-svn: 247339
* Fix depth field bug and resize() function in hierarchical barrierJonathan Peyton2015-09-102-12/+26
| | | | | | | | | | | This is a follow up to the hierarchy cleanup patch. Added some clarifying comments to hierarchy_info. Fixed a bug with the depth field not being updated cleanly during a resize. Fixed resize to first check capacity as determined by maxLevels before actually doing the full resize. Differential Revision: http://reviews.llvm.org/D12562 llvm-svn: 247333
* Cleanup of affinity hierarchy code.Jonathan Peyton2015-09-104-456/+310
| | | | | | | | | | | | Some of this is improvement to code suggested by Hal Finkel. Four changes here: 1.Cleanup of hierarchy code to handle all hierarchy cases whether affinity is available or not 2.Separated this and other classes and common functions out to a header file 3.Added a destructor-like fini function for the hierarchy (and call in __kmp_cleanup) 4.Remove some redundant code that is hopefully no longer needed Differential Revision: http://reviews.llvm.org/D12449 llvm-svn: 247326
* Fix hanging barriers if number of parallel regions exceeds UINT_MAXJonathan Peyton2015-09-104-24/+24
| | | | | | | | | | The fix is to make b_arrived flag 64 bit in both structures - kmp_balign_team_t and kmp_balign_t. Otherwise when flag in kmp_balign_team_t wrapped over UINT_MAX the library hangs. Differential Revision: http://reviews.llvm.org/D12563 llvm-svn: 247320
* Remove duplicate of num_threads assignment.Jonathan Peyton2015-09-021-1/+0
| | | | | | | The th.th_team_nproc is assigned in __kmp_allocate_thread() just 3 lines above, so there is no need to assign the same value again. llvm-svn: 246703
* Remove fork_context argument from __kmp_join_call() when OMPT is offJonathan Peyton2015-08-314-7/+28
| | | | | | | | | Conditionally include the fork_context parameter to __kmp_join_call() only if OMPT_SUPPORT=1 Differential Revision: http://reviews.llvm.org/D12495 llvm-svn: 246460
* Follow up to r246426 (Break Fortran Module Files build)Jonathan Peyton2015-08-311-6/+7
| | | | | | | The CMAKE_CURRENT_BINARY_DIR is only necessary on the DEPENDS part of the add_custom_command to build the Fortran Modules. llvm-svn: 246448
* D12403: Fix GCC warning 'always_inline function might not be inlinable'Andrey Churbanov2015-08-313-3/+6
| | | | llvm-svn: 246434
* Fix for Fortran modules build (from C.Bergstrom)Andrey Churbanov2015-08-311-6/+6
| | | | llvm-svn: 246426
* Add kmp_config.h.cmakeJonathan Peyton2015-08-281-0/+92
| | | | | | | In r246314 (Removing expand-vars.pl) patch, I forgot to add kmp_config.h.cmake This patch just adds it. llvm-svn: 246317
* [OpenMP] [CMake] Removing expand-vars.pl in favor of CMake's configure_file()Jonathan Peyton2015-08-2824-230/+128
| | | | | | | | | | | | | | | | | | | Currently, the libomp CMake build system uses a Perl script to configure files (tools/expand-vars.pl). This patch replaces the use of the Perl script by using CMake's configure_file() function. The major changes include: 1. *.var has every $KMP_* variable changed to @LIBOMP_*@ 2. kmp_config.h.cmake is a new file which contains all the feature macros and #cmakedefine lines 3. Most of the -D lines have been moved from LibompDefinitions.cmake but some OS specific MACROs (e.g., _GNU_SOURCE) remain. 4. All expand-vars.pl related logic is removed from the CMake files. One important note about this change is that it breaks the old Perl+Makefile build system because it can't create kmp_config.h properly. Differential Review: http://reviews.llvm.org/D12211 llvm-svn: 246314
* Update README.txt to include table of supported Power processorsJonathan Peyton2015-08-272-0/+28
| | | | | | | | | | | Small patch to the README.txt file which adds a table that shows what compiler version works on what Power processor. Patch by Carlo Bertolli http://lists.llvm.org/pipermail/openmp-commits/2015-August/000595.html llvm-svn: 246165
* Put taskdata variables under KMP_DEBUG guards.Jonathan Peyton2015-08-262-4/+6
| | | | | | | These variables are only used in the TRACE macros and so don't need to be defined unless compiling in debug mode. llvm-svn: 246067
* Replace variables with definitions inside KMP_DEBUG_ASSERT statementsJonathan Peyton2015-08-262-7/+3
| | | | | | | | This change just removes the variables created solely for KMP_DEBUG_ASSERT statements and puts the definition of the removed variables inside the KMP_DEBUG_ASSERT statements. llvm-svn: 246065
* Remove redundant definition of thr in kmp_gsupport.cJonathan Peyton2015-08-261-2/+1
| | | | | | | There is a thr variable with the same definition at the top of this function as the thr variable inside the if block. llvm-svn: 246064
* Remove unused caller_gtid variable in both z_Linux_util.c and ↵Jonathan Peyton2015-08-262-4/+0
| | | | | | z_Windows_NT_util.c llvm-svn: 246059
* Fix machine topology pruning.Jonathan Peyton2015-08-251-17/+22
| | | | | | | | | | | 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
* Update z_Linux_asm.s to use platform macrosJonathan Peyton2015-08-203-35/+34
| | | | | | | | 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
* D11990: Lock-free start of serialized parallel regionsAndrey Churbanov2015-08-181-25/+30
| | | | llvm-svn: 245286
* D11988: Force serial reduction when team size is 1Andrey Churbanov2015-08-171-4/+3
| | | | llvm-svn: 245209
* D11157: Fixed missed threads re-binding in case team size reduced via ↵Andrey Churbanov2015-08-171-1/+2
| | | | | | omp_set_num_threads llvm-svn: 245206
* Remove unused KMP_SETVERSION macroJonathan Peyton2015-08-132-12/+0
| | | | | | | 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
* Fix two typos in documentationJonathan Peyton2015-08-122-2/+2
| | | | llvm-svn: 244811
* One line fix for hierarchical barrierJonathan Peyton2015-08-121-0/+1
| | | | | | There was a missing implicit task init for the ICV PUSH case in hierarchical barrier. llvm-svn: 244807
* Add recognition of the Intel 16.0 compiler in kmp_version.cJonathan Peyton2015-08-121-0/+2
| | | | llvm-svn: 244799
* Tidy statistics collectionJonathan Peyton2015-08-1112-131/+233
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix link error on Windows when LIBOMP_USE_DEBUGGER is offJonathan Peyton2015-08-062-2/+3
| | | | | | | | Two symbols for the external debugger support were incorrectly exported when LIBOMP_USE_DEBUGGER=off. Differential Revision: http://reviews.llvm.org/D11763 llvm-svn: 244217
* D11156: Fix comments by eliminating possible trademark conflictsAndrey Churbanov2015-08-053-9/+8
| | | | llvm-svn: 244034
* D11301: Remove the __kmp_invoke_microtask() that relies on libffiAndrey Churbanov2015-08-051-55/+1
| | | | llvm-svn: 244031
* D11159: Fixing the stack offset functionalityAndrey Churbanov2015-08-051-3/+8
| | | | llvm-svn: 244030
* Update to lists.llvm.orgTanya Lattner2015-08-051-3/+3
| | | | llvm-svn: 244008
* Update Build_With_CMake.txt to reflect changes in CMake refactorJonathan Peyton2015-07-271-131/+91
| | | | | | This just updates the documentation regarding how to build libomp with CMake. llvm-svn: 243276
* LibompMicroTests.cmake: Invoke 'test' instead of using '[ x -eq y ]'Hans Wennborg2015-07-241-1/+1
| | | | | | | | | | | | | | I was getting this cmake error on Mac OS X: CMake Error: Error in cmake code at /tmp/openmp/runtime/cmake/LibompMicroTests.cmake:140: Parse error. Function missing ending ")". Instead found bad character with text "[". Perhaps invoking 'test' is less confusing for cmake. Differential Revision: http://reviews.llvm.org/D11493 llvm-svn: 243165
* Patch out a fatal assertion in OpenMP runtime until preconditions are metJonathan Peyton2015-07-231-0/+4
| | | | | | | | | | | | | | Compiling simple testcase with g++ and linking it to the LLVM OpenMP runtime compiled in debug mode trips an assertion that produces a fatal error. When the assertion is skipped, the program runs successfully to completion and produces the same answer as the sequential code. Intel will restore the assertion with a patch that fixes the issues that cause it to trip. Patch by John Mellor-Crummey Differential Revision: http://reviews.llvm.org/D11269 llvm-svn: 243032
* [CMake] Fix libomp_check_linker_flag functionJonathan Peyton2015-07-231-1/+1
| | | | | | | | | | | | | | libomp_check_linker_flag rewrites src_to_link.c and CMakeLists.txt in build directory for test project, but cmake does not rebuild the project. The root cause is that on some filesystems (ext3, reiserfs) timestamp resoultion is 1 second. So cmake does not rebuild test project if check takes less than 1 second. This patch puts each test in its own directory to avoid the timestamp problem. Patch by Chris Bergstrom http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-July/000817.html llvm-svn: 243017
* Fix OMPT support for task frames, parallel regions, and parallel regions + loopsJonathan Peyton2015-07-218-34/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* [cmake] Support enabling -Werror in the OpenMP runtime CMake build andChandler Carruth2015-07-183-7/+38
| | | | | | | | | | | | | | | | 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
* Re-indent the CMake refactor to two-space indentionJonathan Peyton2015-07-1511-1011/+1010
| | | | | | | | | | | 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
* Large Refactor of CMake build systemJonathan Peyton2015-07-1528-2390/+1553
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Rename OMPT placeholder type names to be in the OMPT name spaceJonathan Peyton2015-07-143-15/+15
| | | | | | | | | | | | r242052 changed the name of OMPT placeholder functions to move them from the omp_ name space to the ompt_ name space. This patch moves the names of the types of these functions into the OMPT name space as well. Patch by John Mellor-Crummey Differential Revision: http://reviews.llvm.org/D11171 llvm-svn: 242155
* Fix some bugs in OMPT supportJonathan Peyton2015-07-138-35/+80
| | | | | | | | | | | | | | | | | | | | | | | 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
* fixed typo in debug assertion reported by John Mellor-CrummeyAndrey Churbanov2015-07-131-1/+1
| | | | llvm-svn: 242043
* Turn debugger interface off by default.Jonathan Peyton2015-07-091-1/+1
| | | | | | Just changed LIBOMP_USE_DEBUGGER to false. llvm-svn: 241852
* Follow up to safe API patchJonathan Peyton2015-07-092-4/+2
| | | | | | | | | | | | | | 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
* Enable debugger supportJonathan Peyton2015-07-0913-6/+469
| | | | | | | | | | | | 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
* Fix OMPT event_barrer_endJonathan Peyton2015-07-011-1/+1
| | | | | | | | | | | | 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
* Remove _KMP_BUILD_TIME macro from kmp_version.cJonathan Peyton2015-06-291-1/+1
| | | | | | | | 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
* Remove use of assignment to multiple struct fields using .fieldname (OMPT)Jonathan Peyton2015-06-291-6/+4
| | | | | | | | | | | 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
OpenPOWER on IntegriCloud