- Jul 15, 2015
-
-
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
-
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
-
- Jul 14, 2015
-
-
Jonathan Peyton authored
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
-
- Jul 13, 2015
-
-
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
-
Andrey Churbanov authored
llvm-svn: 242043
-
- Jul 09, 2015
-
-
Jonathan Peyton authored
Just changed LIBOMP_USE_DEBUGGER to false. llvm-svn: 241852
-
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
-
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
-
- Jul 01, 2015
-
-
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
-
- Jun 29, 2015
-
-
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
-
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
-
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
-
- Jun 22, 2015
-
-
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
-
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
-
- Jun 17, 2015
-
-
Jonathan Peyton authored
Currently, OMPT support requires the weak attribute which isn't supported on Windows. This patch has CMake error out when LIBOMP_OMPT_SUPPORT=true and the users is building on Windows. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000692.html Patch by Jonas Hahnfeld llvm-svn: 239912
-
- Jun 11, 2015
-
-
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
-
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
-
- Jun 08, 2015
-
-
Jonathan Peyton authored
As an ongoing effort to sanitize the openmp code, this one word change eliminates creating 1 byte arrays named __kmp_build_check_* and instead creates one byte array types. The KMP_BUILD_ASSERT macro still offers the same functionality; array types with negative number of elements is illegal and will cause a compiler failure. llvm-svn: 239337
-
Jonathan Peyton authored
As an ongoing effort to sanitize the openmp code, these changes delete variables that aren't used at all. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000701.html Patch by Jack Howarth llvm-svn: 239334
-
Jonathan Peyton authored
As an ongoing effort to sanitize the openmp code, these changes move variables under already existing macro guards. Patch by Jack Howarth llvm-svn: 239331
-
Jonathan Peyton authored
As an ongoing effort to sanitize the openmp code, these changes remove unused variables by adding proper macros around both variables and functions. Patch by Jack Howarth llvm-svn: 239330
-
Jonathan Peyton authored
Some variables are convenient to keep around even if they aren't really used in a release build. This is often seen in DEBUG guarded code where the variable is only used in a DEBUG build. Patch by Jack Howarth llvm-svn: 239326
-
Jonathan Peyton authored
As an ongoing effort to sanitize the openmp code, these changes remove unused functions. The unused functions are: __kmp_fini_allocator_thread(), __kmp_env_isDefined(), __kmp_strip_quotes(), __kmp_convert_to_seconds(), and __kmp_convert_to_nanoseconds(). Patch by Jack Howarth llvm-svn: 239323
-
- Jun 05, 2015
-
-
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
-
- Jun 04, 2015
-
-
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
-
- Jun 03, 2015
-
-
Jonathan Peyton authored
The following change is needed to suppress the "variable 'retval' is used uninitialized whenever 'if' condition is false" warnings in runtime/src/kmp_csupport.c. This change just initializes 'retval' to 0. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000667.html Patch by Jack Howarth llvm-svn: 238954
-
Jonathan Peyton authored
It's undefined behavior to have arguments to macros be conditionally preprocessed. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000669.html Patch by Jack Howarth and Jonathan Peyton llvm-svn: 238950
-
Jonathan Peyton authored
in kmp_wait_release.h, there were some constructors where the initialization lists were out of order with the member declarations inside the class. This patch just reorders the initialization list so the compiler doesn't complain. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000670.html Patch by Jack Howarth and Jonathan Peyton llvm-svn: 238946
-
Jonathan Peyton authored
There is an anonym variable inside a macro that is declared and defined but never used. This patch removes it. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000666.html Patch by Jack Howarth and Jonathan Peyton llvm-svn: 238934
-
Jonathan Peyton authored
Some old references to RML and IOMP which aren't used anywhere are deleted. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000664.html Patch by Jack Howarth and Jonathan Peyton llvm-svn: 238878
-
- Jun 02, 2015
-
-
Jonathan Peyton authored
Getting rid of more iomp references. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-June/000659.html llvm-svn: 238847
-
Jonathan Peyton authored
Missed some places that referenced the Intel(R) OpenMP* Runtime Library. llvm-svn: 238840
-
- Jun 01, 2015
-
-
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
-
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
-
Jonathan Peyton authored
These changes are all in comments. Change libiomp references to libomp. llvm-svn: 238713
-
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
-
Jonathan Peyton authored
This change only affects the doxygen file that contains a reference to libiomp5. change libiomp5 to libomp. llvm-svn: 238711
-
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
-
- May 29, 2015
-
-
Jonathan Peyton authored
The CMAKE_OSX_ARCHITECTURES CMake variable allows users to build universal fat libraries that contain both i386 and x86_64 code. These changes allow this build by having the z_Linux_asm.s file detect the architecture itself instead of receiving it through the build system. Also, there was a LIBOMP_OSX_ARCHITECTURES CMake variable added to allow people to only build libomp as a fat library and not the entire LLVM/Clang system. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2015-May/000626.html llvm-svn: 238566
-
- May 28, 2015
-
-
Jonathan Peyton authored
A while back, Hal mentioned fixing a comment concerning balanced affinity. http://lists.cs.uiuc.edu/pipermail/openmp-dev/2014-December/000358.html I forgot about fixing it until now, but now is better than never. llvm-svn: 238378
-