Commit Graph
250 Commits
Author SHA1 Message Date
Jonathan Peyton a83f15dc1f [STATS] Add OMP_critical and OMP_critical_wait timers
OMP_critical - time spent in critical section
OMP_critical_wait - time spent waiting to enter a critical section


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263967 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-21 18:32:26 +00:00
Jonathan Peyton cc34ba0458 [STATS] separate noTotal bit flag from onlyInMaster and noUnits
This change logically separates the stats_flags_e::noTotal bit flag from the
stats_flags_e::onlyInMaster and stats_flags_e::noUnits bit flags. If no
TOTAL_foo output is wanted for a particular statistic, the flag must be
explicitly included in that statistic's flags.

Differential Revision: http://reviews.llvm.org/D18198


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263954 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-21 17:26:23 +00:00
Jonas Hahnfeld b5e41b49f7 [OMPT] Fix wrong parent_task_id in serialized parallel_begin with GCC
Without this patch a simple '#pragma omp parallel num_threads(1)' leads to
ompt_event_parallel_begin: parent_task_id=3, [...], parallel_id=2, [...]
ompt_event_parallel_end: parallel_id=2, task_id=4, [...]

Differential Revision: http://reviews.llvm.org/D16714

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263940 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-21 12:37:52 +00:00
Jonathan Peyton 8d0a576cf4 [CMake] Fix Windows build problem for CMake versions < 3.3
Building libomp using CMake versions < 3.3 caused a link time error.  These
errors occurred because when assembling z_Windows_NT-586_asm.asm, the
definitions: OMPT_SUPPORT, _M_AMD64|_M_IA32 weren't defined on the command line.
To fix the problem, the COMPILE_FLAGS property for the assembly file is appended
to instead of the COMPILE_DEFINITIONS property being set.  For whatever reason, the
COMPILE_DEFINITIONS property doesn't pick up the definitions for assembly files
for the older CMake versions.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263651 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-16 18:44:18 +00:00
Jonathan Peyton 4ceed43a1f Fix spelling error in comment
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263586 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-15 20:59:10 +00:00
Jonathan Peyton 03208f6d91 [STATS] Print "Unknown" for frequency if it wasn't able to be parsed
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263583 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-15 20:55:32 +00:00
Jonathan Peyton 9a5f28cca8 [STATS] Fix comments in kmp_stats.h
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263582 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-15 20:49:01 +00:00
Jonathan Peyton 85b4f2c9cf [STATS] Add header information to stats print out
This change adds a header to the printout of the statistics which includes the
time, machine name, and processor info if available. This change also includes
some cosmetic changes like using enum casting for timer and counter iteration.

Differential Revision: http://reviews.llvm.org/D18153


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263580 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-15 20:28:47 +00:00
Samuel Antao c0a469edc3 Initialize two variables in kmp_tasking.
Summary:
Two initialized local variables are causing clang to produce warnings:

```
./src/projects/openmp/runtime/src/kmp_tasking.c:3019:5: error: variable 'num_tasks' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized]
    default:
    ^~~~~~~
./src/projects/openmp/runtime/src/kmp_tasking.c:3027:21: note: uninitialized use occurs here
    for( i = 0; i < num_tasks; ++i ) {
                    ^~~~~~~~~
./src/projects/openmp/runtime/src/kmp_tasking.c:2968:28: note: initialize the variable 'num_tasks' to silence this warning
    kmp_uint64 i, num_tasks, extras;
                           ^
                            = 0
./src/projects/openmp/runtime/src/kmp_tasking.c:3019:5: error: variable 'extras' is used uninitialized whenever switch default is taken [-Werror,-Wsometimes-uninitialized]
    default:
    ^~~~~~~
./src/projects/openmp/runtime/src/kmp_tasking.c:3022:52: note: uninitialized use occurs here
    KMP_DEBUG_ASSERT(tc == num_tasks * grainsize + extras);
                                                   ^~~~~~
./src/projects/openmp/runtime/src/kmp_debug.h:62:60: note: expanded from macro 'KMP_DEBUG_ASSERT'
        #define KMP_DEBUG_ASSERT( cond )       KMP_ASSERT( cond )
                                                           ^
./src/projects/openmp/runtime/src/kmp_debug.h:60:51: note: expanded from macro 'KMP_ASSERT'
        #define KMP_ASSERT( cond )             ( (cond) ? 0 : __kmp_debug_assert( #cond, __FILE__, __LINE__ ) )
                                                  ^
./src/projects/openmp/runtime/src/kmp_tasking.c:2968:36: note: initialize the variable 'extras' to silence this warning
    kmp_uint64 i, num_tasks, extras;
                                   ^
                                    = 0
2 errors generated.
```

This patch initializes these two variables.

Reviewers: tlwilmar, jlpeyton

Subscribers: tlwilmar, openmp-commits

Differential Revision: http://reviews.llvm.org/D17909

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263316 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-12 00:55:17 +00:00
Jonathan Peyton d64c3d7995 [STATS] change TASK_execution name to OMP_task
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263291 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-11 20:23:05 +00:00
Jonathan Peyton 3d4a12f1c0 [STATS] Add a total statistics count
This change removes synthesized stats and instead has all timers print out a
total which is the aggregate statistics across threads. This is displayed as
"Total_foo" at the end of program. The stats_flags_e::synthesized flag is
removed and the printStats() function is split into two separate functions:
printTimerStats() which can display the aggregate total and printCounterStats().

Differential Revision: http://reviews.llvm.org/D17869


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@263290 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-11 20:20:49 +00:00
Jonathan Peyton 9a94fcde13 [STATS] fix output formatting when sample count is 0
Force 0.0 to be displayed for all statistics which have sample count equal to 0


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@262658 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-03 21:24:13 +00:00
Jonathan Peyton 33b0f4a88e [STATS] fix master and single timers
Only the thread which executes the single/master section will update its statistics.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@262656 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-03 21:21:05 +00:00
Jonathan Peyton ad1775a1cf Add new OpenMP 4.5 taskloop construct feature
From the standard: The taskloop construct specifies that the iterations of one
or more associated loops will be executed in parallel using OpenMP tasks. The
iterations are distributed across tasks created by the construct and scheduled
to be executed.

This initial implementation uses a simple linear tasks distribution algorithm.
Later we can add other algorithms to speedup generation of huge number of tasks
(i.e., tree-like tasks generation should be faster).

This needs to be put into the OpenMP runtime library in order for the
compiler team to develop the compiler side of the implementation.

Differential Revision: http://reviews.llvm.org/D17404


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@262535 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-02 22:47:51 +00:00
Jonathan Peyton 0c1f627ac8 Add new OpenMP 4.5 doacross loop nest feature
From the standard: A doacross loop nest is a loop nest that has cross-iteration
dependence. An iteration is dependent on one or more lexicographically earlier
iterations. The ordered clause parameter on a loop directive identifies the
loop(s) associated with the doacross loop nest.

The init/fini routines allocate/free doacross buffer(s) for each loop for each
thread.  The wait routine waits for a flag designated by the dependence vector.
The post routine sets the flag designated by current iteration vector.  We use
a similar technique of shared buffer indices that covers up to 7 nowait loops
executed simultaneously by different threads (number 7 has no real meaning,
just heuristic value).  Also, the size of structures are kept intact via
reducing dummy arrays.

This needs to be put into the OpenMP runtime library in order for the compiler
team to develop the compiler side of the implementation.

Differential Revision: http://reviews.llvm.org/D17399


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@262532 91177308-0d34-0410-b5e6-96231b3b80d8
2016-03-02 22:42:06 +00:00
Jonathan Peyton a5496bff70 Add new OpenMP 4.5 affinity API
This change introduces the new OpenMP 4.5 affinity api surrounding
OpenMP Places. There are six new entry points:

Typically called in serial region:
 * omp_get_num_places - returns the number of places available to the execution
       environment in the place list.
 * omp_get_place_num_procs - returns the number of processors available to the
       execution environment in the specified place.
 * omp_get_place_proc_ids - returns the numerical identifiers of the processors
       available to the execution environment in the specified place.

Typically called inside parallel region:
 * omp_get_place_num - returns the place number of the place to which the
       encountering thread is bound.
 * omp_get_partition_num_places - returns the number of places in the place
       partition of the innermost implicit task.
 * omp_get_partition_place_nums - returns the list of place numbers
       corresponding to the places in the place-var ICV of the innermost
       implicit task.

Differential Revision: http://reviews.llvm.org/D17417


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@261915 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-25 18:49:52 +00:00
Jonathan Peyton c62c0fa658 Add initial support for OpenMP 4.5 task priority feature
The maximum task priority value is read from envirable: OMP_MAX_TASK_PRIORITY.
But as of now, nothing is done with it.  We just handle the environment variable
and add the new api: omp_get_max_task_priority() which returns that value or
zero if it is not set.

Differential Revision: http://reviews.llvm.org/D17411


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@261908 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-25 18:04:09 +00:00
Jonathan Peyton 4255e2f88d dd new OpenMP 4.5 schedule clause modifiers (monotonic/non-monotonic) feature
The monotonic/non-monotonic flags are sent to the runtime via the sched_type by
setting the 30th (non-monotonic) or 29th (monotonic) bit in the sched_type.
Macros are added to probe if monotonic or non-monotonic is specified
(SCHEDULE_HAS_[NON]MONOTONIC & SCHEDULE_HAS_NO_MODIFIERS)
and also to to get the base sched_type (SCHEDULE_WITHOUT_MODIFIERS)

Currently, nothing is done with the modifiers.

Also, this patch adds some comments on the use of the enumerations in at least
 one place where it is subtle.

Differential Revision: http://reviews.llvm.org/D17406


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@261906 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-25 17:55:50 +00:00
Jonathan Peyton 373c7b45ae Remove unnecessary semicolons after braces
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@261249 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-18 19:38:25 +00:00
Jonas Hahnfeld e0df9a933b [OMPT] Frame information for openmp taskwait
For pragma omp taskwait the runtime is called from the task context.
Therefore, the reentry frame information should be updated.

The information should be available for both taskwait event calls; therefore,
set before the first event and reset after the last event.

Patch by Joachim Protze
Differential Revision: http://reviews.llvm.org/D17145

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@260674 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-12 12:19:59 +00:00
Jonathan Peyton 662997c02a Fix incorrect task_team in __kmp_give_task
When a target task finishes and it tries to access the th_task_team from the
threads in the team where it was created, th_task_team can be NULL or point to
a different place when that thread started a nested region that is still
running. Finding the exact task_team that the threads were using is difficult
as it would require to unwind the task_state_memo_stack. So a new field was added
in the taskdata structure to point to the active task_team when the task was
created.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@260615 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 23:07:30 +00:00
Jonathan Peyton 1251a47e34 Fix a couple of typos in comments
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@260613 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-11 22:58:29 +00:00
Jonathan Peyton cb7899d667 Proxy task fix: task_state stack push condition on fork
The problem is that the master's thread state was not saved before entering a
parallel region so it does not remember tasks when it returns.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@260306 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-09 22:32:41 +00:00
Jonas Hahnfeld 20e20fe91a [GCC] GOMP_task: Change argument type of if_cond from int to bool
(libgomp has bool as well)

This was causing a test failure in omp_test_if.c when building with GCC in
Debug mode. I have verified that GCC versions 4.9.2 and 5.3.0 now work and
compile-tested this change with clang 3.7.1 and Intel Compiler 16.0.

Differential Revision: http://reviews.llvm.org/D16921

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@260204 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-09 07:07:30 +00:00
Jonathan Peyton ccd4e436a1 Add LIBOMP_ENABLE_SHARED option for CMake
When building executables for Cray supercomputers, statically-linked executables
are preferred. This patch makes it possible to build the OpenMP runtime as an
archive for building statically-linked executables.  The patch adds the flag
LIBOMP_ENABLE_SHARED, which defaults to true. When true, a build of the OpenMP
runtime yields dynamic libraries. When false, a build of the OpenMP runtime
yields static libraries. There is no setting that allows both kinds of libraries
to be built.

Patch by John Mellor-Crummey

Differential Revision: http://reviews.llvm.org/D16525


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@259817 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-04 19:29:35 +00:00
Jonathan Peyton 0ccf0552f5 Fix task dependency performance problem
In: http://lists.llvm.org/pipermail/openmp-dev/2015-August/000858.html, a
performance issue was found with libomp's task dependencies.  The task
dependencies hash table has an issue with collisions. The current table size is
a power of two. This combined with the current hash function causes a large
number of collisions to occurr. Also, the current size (64) is too small for
larger applications so the table size is increased.

This patch creates a two level hash table approach for task dependencies. The
implicit task is considered the "master" or "top-level" task which has a large
static sized hash table (997), and nested tasks will have smaller hash
tables (97). Prime numbers were chosen to help reduce collisions.

Differential Revision: http://reviews.llvm.org/D16640


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@259113 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 23:10:44 +00:00
Jonas Hahnfeld 09d935a93e [OMPT] Add support for ompt_event_task_dependences and ompt_event_task_dependence_pair
The attached patch adds support for ompt_event_task_dependences and
ompt_event_task_dependence_pair events from the OMPT specification [1]. These
events only apply to OpenMP 4.0 and 4.1 (aka 4.5) because task dependencies
were introduced in 4.0.

With respect to the changes:

ompt_event_task_dependences
According to the specification, this event is raised after the task has been
created, thefore this event needs to be raised after ompt_event_task_begin
(in __kmp_task_start). However, the dependencies are known at
__kmpc_omp_task_with_deps which occurs before __kmp_task_start. My modifications
extend the ompt_task_info_t struct in order to store the dependencies of the
task when _kmpc_omp_task_with_deps occurs and then they are emitted in
__kmp_task_start just after raising the ompt_event_task_begin. The deps field
is allocated and valid until the event is raised and it is freed and set
to null afterwards.

ompt_event_task_dependence_pair
The processing of the dependences (i.e. checking whenever a dependence is
already satisfied) is done within __kmp_process_deps. That function checks
every dependence and calls the __kmp_track_dependence routine which gives some
support for graphical output. I used that routine to emit the dependence pair
but I also needed to know the sink_task. Despite the fact that the code within
KMP_SUPPORT_GRAPH_OUTPUT refers to task_sink it may be null because
sink->dn.task (there's a comment regarding this) and in fact it does not point
to a proper pointer value because the value is set in node->dn.task = task;
after the __kmp_process_deps calls in __kmp_check_deps. I have extended the
__kmp_process_deps and __kmp_track_dependence parameter list to receive the
sink_task.

[1] https://github.com/OpenMPToolsInterface/OMPT-Technical-Report/blob/target/ompt-tr.pdf

Patch by Harald Servat
Differential Revision: http://reviews.llvm.org/D14746

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@259038 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 10:39:52 +00:00
Jonas Hahnfeld 7ed52f6efa [OMPT] Avoid SEGV when a worker thread needs its parallel id behind the barrier
When the code behind the barrier is executed, the master thread may have
already resumed execution. That's why we cannot safely assume that *pteam
is not yet freed.

This has been introduced by r258866.

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@259037 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 10:39:45 +00:00
Jonas Hahnfeld 38c9e1422e [OMPT] Workaround clang failing with 'declare target'
Current clang trunk reports _OPENMP to be 201307 = OpenMP 4.0. It doesn't
recognize '#pragma omp declare target' though (patch still pending) and
therefore fails compilation.

Differential Revision: http://reviews.llvm.org/D16631

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@259026 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-28 07:14:44 +00:00
Jonathan Peyton 0355c11c1d Restore th_current_task first as suggested by John Mellor-Crummey
If an asynchronous inquiry peers into the runtime system
it doesn't see the freed task as the current task.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258990 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 21:20:26 +00:00
Jonathan Peyton 5b35c4a417 Formatting fixes
Removing extraneous { } bracket sections.  Unindenting blocks of
code as a result.  Also removing empty #ifdef KMP_STUB


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258986 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 21:02:04 +00:00
Jonathan Peyton fa6b30f80a Fixing comments.
Removing references to non-existent functions, fixing typos.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258985 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 20:57:32 +00:00
Jonathan Peyton 78e62243f9 Removing extra empty lines
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258984 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 20:44:49 +00:00
Jonas Hahnfeld 2db9469c66 Change whitespace to test commit access
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258910 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-27 07:24:03 +00:00
Jonathan Peyton b035b29274 [OMPT]: Fix the order of implicit_task_end_events
For implcit barriers in simple parallel for loops, the order of the OMPT events
was wrong.  The barrier_{begin,end} events came after the implcit_task_end
event for the implcit barrier at the end of the parallel region. This is wrong
because the implicit task executes the barrier before ending. This patch fixes
the order of the event: It will be triggerd now just before
__kmp_pop_current_task_from_thread() is called.

Patch by Tim Cramer

Differential Revision: http://reviews.llvm.org/D16347


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258866 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 21:45:21 +00:00
Jonathan Peyton dc8116e660 Bypass Perl modules in build system
This change fixes the bug: https://llvm.org/bugs/show_bug.cgi?id=25975
by bypassing the perl module files which try to deduce system information.
These perl modules files don't offer useful information and are from the 
original build system. They can be removed after this change.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258843 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 19:44:31 +00:00
Ismail Donmez bfffb780fe Fix compilations with msvc's /Zc:strictStrings
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258797 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-26 08:24:57 +00:00
Jonathan Peyton 306381bbda Add missing cleanup code for cached indirect lock pool.
This change fixes one issue reported at https://llvm.org/bugs/show_bug.cgi?id=26184
There was missing cleanup code for the cached indirect lock pool. The change
will fix the reported case where it tries to initialize a lock after runtime
cleanup/reinitialization, but it is still possible that the user program runs
into another problem because most test programs have a call to __kmpc_set_lock
after cleanup/reinitialization without calling __kmpc_init_lock causing a crash/hang.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@258528 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-22 19:16:14 +00:00
Hans Wennborg 444b0e1c07 Don't use __DATE__ or __TIME__; it breaks release builds (PR26145)
The release builds are configured to be reproducible, so that the
binaries compare equal between bootstrap iterations. The OpenMP
run-time build was failing like this:

runtime/src/kmp_version.c:108:79: error: expansion of date or time macro is not reproducible [-Werror,-Wdate-time]
char const __kmp_version_build_time[]     = KMP_VERSION_PREFIX "build time: " __DATE__ " " __TIME__;

Figuring as the build currently doesn't set LIBOMP_DATE, it's probably
OK to skip setting the build time here too.

git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@257833 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-14 23:18:20 +00:00
Jonathan Peyton 4f88c88870 New API for restoring current thread's affinity to init affinity of application
This new API, int kmp_set_thread_affinity_mask_initial(), is available for use
by other parallel runtime libraries inside a possibly OpenMP-registered thread.
This entry point restores the current thread's affinity mask to the affinity
mask of the application when it first began. If -1 is returned it can be assumed
that either the thread hasn't called affinity initialization or that the thread
isn't registered with the OpenMP library. If 0 is returned then, then the call
was successful. Any return value greater than zero indicates an error occurred
when setting affinity.

Differential Revision: http://reviews.llvm.org/D15867


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@257489 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-12 17:21:55 +00:00
Jonathan Peyton 3d9851ae3c Remove double negative in if() logic.
Change (__kmp_mic_type != non_mic) to (__kmp_mic_type == mic2)


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@257380 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-11 20:37:39 +00:00
Jonathan Peyton a632fb38bb Put function names on their own line.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@257378 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-11 20:28:55 +00:00
Jonathan Peyton c73da114f8 Removed unused __kmp_*_i8 functions.
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@256790 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-04 23:20:26 +00:00
Jonathan Peyton da540cd0d0 Fix for barrier problem: applications with many parallel regions (2^30) hang
The barrier states type doesn't need to be explicitly set.


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@256778 91177308-0d34-0410-b5e6-96231b3b80d8
2016-01-04 20:51:48 +00:00
Jonathan Peyton 7209df241a Fix build error: OMPT_SUPPORT=true was not tested after hinted lock changes
Recent changes to support dynamic locks didn't consider the code compiled when
OMPT_SUPPORT=true. As a result, the OMPT support was broken by recent changes
to nested locks to support dynamic locks. For OMPT to work with dynamic locks,
they need to provide a return code indicating whether a nested lock acquisition
was the first or not.

This patch moves the OMPT support for nested locks into the #else case when
DYNAMIC locks were not used. New support is needed for dynamic locks. This patch
fixes the build and leaves a placeholder where the missing OMPT callbacks can be
added either the author of the OMPT support for locks, or the dynamic
locking support.

Patch by John Mellor-Crummey

Differential Revision: http://reviews.llvm.org/D15656


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@256314 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-23 02:34:03 +00:00
Jonathan Peyton 0d9b4ce671 Prevent monitor thread creation when KMP_BLOCKTIME="infinite"
When users sets envirable KMP_BLOCKTIME to "infinite" (the time one busy-waits
at barrieres, etc.), the monitor thread is not useful and can be ignored. This
change prevents the creation of the monitor thread when the users sets
KMP_BLOCKTIME to "infinite".

Differential Revision: http://reviews.llvm.org/D15628


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@256061 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-18 23:20:36 +00:00
Jonathan Peyton 98c0f1f794 Remove some extra spaces
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@256060 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-18 23:15:35 +00:00
Jonathan Peyton ac919e8776 [STATS] Have CMake do real check for stats functionality
This change allows clang to build the stats library for every architecture
which supports __builtin_readcyclecounter().  CMake also checks for all
necessary features for stats and will error out if the platform does not
support it.

Patch by Hal Finkel and Johnny Peyton


git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@256002 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-18 16:19:35 +00:00
Jonathan Peyton ef79bf6744 [STATS] Properly guard the tick_time() function and its uses
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@255910 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-17 17:27:51 +00:00
Jonathan Peyton 3c0db8d0f0 [STATS] replace __cpuid() intrinsic with already existing __kmp_x86_cpuid() function
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@255907 91177308-0d34-0410-b5e6-96231b3b80d8
2015-12-17 16:58:26 +00:00