This file is indexed.

/usr/share/doc/libomp-doc/html/kmp__global_8cpp_source.html is in libomp-doc 5.0.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>LLVM OpenMP* Runtime Library: kmp_global.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">LLVM OpenMP* Runtime Library
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">kmp_global.cpp</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * kmp_global.cpp -- KPTS global variables for runtime support library</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment">//                     The LLVM Compiler Infrastructure</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment">// This file is dual licensed under the MIT and the University of Illinois Open</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment">// Source Licenses. See LICENSE.txt for details.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &quot;kmp.h&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &quot;kmp_affinity.h&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;kmp_key_t __kmp_gtid_threadprivate_key;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#if KMP_ARCH_X86 || KMP_ARCH_X86_64</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;kmp_cpuinfo_t __kmp_cpuinfo = {0}; <span class="comment">// Not initialized</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#if KMP_STATS_ENABLED</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;kmp_stats.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment">// lock for modifying the global __kmp_stats_list</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;kmp_tas_lock_t __kmp_stats_lock;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="comment">// global list of per thread stats, the head is a sentinel node which</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="comment">// accumulates all stats produced before __kmp_create_worker is called.</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;kmp_stats_list *__kmp_stats_list;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="comment">// thread local pointer to stats node within list</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;__thread kmp_stats_list *__kmp_stats_thread_ptr = NULL;</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="comment">// gives reference tick for all events (considered the 0 tick)</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;tsc_tick_count __kmp_stats_start_time;</div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="comment">/* ----------------------------------------------------- */</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="comment">/* INITIALIZATION VARIABLES */</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="comment">/* they are syncronized to write during init, but read anytime */</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_serial = FALSE;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_gtid = FALSE;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_common = FALSE;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_middle = FALSE;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_parallel = FALSE;</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#if KMP_USE_MONITOR</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_monitor =</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    0; <span class="comment">/* 1 - launched, 2 - actually started (Windows* OS only) */</span></div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_init_user_locks = FALSE;</div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="comment">/* list of address of allocated caches for commons */</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;kmp_cached_addr_t *__kmp_threadpriv_cache_list = NULL;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="keywordtype">int</span> __kmp_init_counter = 0;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keywordtype">int</span> __kmp_root_counter = 0;</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="keywordtype">int</span> __kmp_version = 0;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="keyword">volatile</span> kmp_uint32 __kmp_team_counter = 0;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="keyword">volatile</span> kmp_uint32 __kmp_task_counter = 0;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> __kmp_init_wait =</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    KMP_DEFAULT_INIT_WAIT; <span class="comment">/* initial number of spin-tests   */</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> __kmp_next_wait =</div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;    KMP_DEFAULT_NEXT_WAIT; <span class="comment">/* susequent number of spin-tests */</span></div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keywordtype">size_t</span> __kmp_stksize = KMP_DEFAULT_STKSIZE;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;<span class="preprocessor">#if KMP_USE_MONITOR</span></div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;<span class="keywordtype">size_t</span> __kmp_monitor_stksize = 0; <span class="comment">// auto adjust</span></div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="keywordtype">size_t</span> __kmp_stkoffset = KMP_DEFAULT_STKOFFSET;</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="keywordtype">int</span> __kmp_stkpadding = KMP_MIN_STKPADDING;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="keywordtype">size_t</span> __kmp_malloc_pool_incr = KMP_DEFAULT_MALLOC_POOL_INCR;</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;<span class="comment">// Barrier method defaults, settings, and strings.</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;<span class="comment">// branch factor = 2^branch_bits (only relevant for tree &amp; hyper barrier types)</span></div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#if KMP_ARCH_X86_64</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;kmp_uint32 __kmp_barrier_gather_bb_dflt = 2;</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="comment">/* branch_factor = 4 */</span> <span class="comment">/* hyper2: C78980 */</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;kmp_uint32 __kmp_barrier_release_bb_dflt = 2;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="comment">/* branch_factor = 4 */</span> <span class="comment">/* hyper2: C78980 */</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;kmp_uint32 __kmp_barrier_gather_bb_dflt = 2;</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;<span class="comment">/* branch_factor = 4 */</span> <span class="comment">/* communication in core for MIC */</span></div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;kmp_uint32 __kmp_barrier_release_bb_dflt = 2;</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;<span class="comment">/* branch_factor = 4 */</span> <span class="comment">/* communication in core for MIC */</span></div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;<span class="preprocessor">#endif // KMP_ARCH_X86_64</span></div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;<span class="preprocessor">#if KMP_ARCH_X86_64</span></div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;kmp_bar_pat_e __kmp_barrier_gather_pat_dflt = bp_hyper_bar; <span class="comment">/* hyper2: C78980 */</span></div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;kmp_bar_pat_e __kmp_barrier_release_pat_dflt =</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;    bp_hyper_bar; <span class="comment">/* hyper2: C78980 */</span></div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;kmp_bar_pat_e __kmp_barrier_gather_pat_dflt = bp_linear_bar;</div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;kmp_bar_pat_e __kmp_barrier_release_pat_dflt = bp_linear_bar;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;kmp_uint32 __kmp_barrier_gather_branch_bits[bs_last_barrier] = {0};</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;kmp_uint32 __kmp_barrier_release_branch_bits[bs_last_barrier] = {0};</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;kmp_bar_pat_e __kmp_barrier_gather_pattern[bs_last_barrier] = {bp_linear_bar};</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;kmp_bar_pat_e __kmp_barrier_release_pattern[bs_last_barrier] = {bp_linear_bar};</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *__kmp_barrier_branch_bit_env_name[bs_last_barrier] = {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;    <span class="stringliteral">&quot;KMP_PLAIN_BARRIER&quot;</span>, <span class="stringliteral">&quot;KMP_FORKJOIN_BARRIER&quot;</span></div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;<span class="preprocessor">#if KMP_FAST_REDUCTION_BARRIER</span></div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;    ,</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="stringliteral">&quot;KMP_REDUCTION_BARRIER&quot;</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="preprocessor">#endif // KMP_FAST_REDUCTION_BARRIER</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;};</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *__kmp_barrier_pattern_env_name[bs_last_barrier] = {</div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="stringliteral">&quot;KMP_PLAIN_BARRIER_PATTERN&quot;</span>, <span class="stringliteral">&quot;KMP_FORKJOIN_BARRIER_PATTERN&quot;</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="preprocessor">#if KMP_FAST_REDUCTION_BARRIER</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    ,</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    <span class="stringliteral">&quot;KMP_REDUCTION_BARRIER_PATTERN&quot;</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor">#endif // KMP_FAST_REDUCTION_BARRIER</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;};</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *__kmp_barrier_type_name[bs_last_barrier] = {<span class="stringliteral">&quot;plain&quot;</span>, <span class="stringliteral">&quot;forkjoin&quot;</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">#if KMP_FAST_REDUCTION_BARRIER</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;                                                        ,</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;                                                        <span class="stringliteral">&quot;reduction&quot;</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">#endif // KMP_FAST_REDUCTION_BARRIER</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;};</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *__kmp_barrier_pattern_name[bp_last_bar] = {<span class="stringliteral">&quot;linear&quot;</span>, <span class="stringliteral">&quot;tree&quot;</span>,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;                                                       <span class="stringliteral">&quot;hyper&quot;</span>, <span class="stringliteral">&quot;hierarchical&quot;</span>};</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="keywordtype">int</span> __kmp_allThreadsSpecified = 0;</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="keywordtype">size_t</span> __kmp_align_alloc = CACHE_LINE;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="keywordtype">int</span> __kmp_generate_warnings = kmp_warnings_low;</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="keywordtype">int</span> __kmp_reserve_warn = 0;</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="keywordtype">int</span> __kmp_xproc = 0;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="keywordtype">int</span> __kmp_avail_proc = 0;</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="keywordtype">size_t</span> __kmp_sys_min_stksize = KMP_MIN_STKSIZE;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="keywordtype">int</span> __kmp_sys_max_nth = KMP_MAX_NTH;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="keywordtype">int</span> __kmp_max_nth = 0;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="keywordtype">int</span> __kmp_threads_capacity = 0;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="keywordtype">int</span> __kmp_dflt_team_nth = 0;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="keywordtype">int</span> __kmp_dflt_team_nth_ub = 0;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="keywordtype">int</span> __kmp_tp_capacity = 0;</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;<span class="keywordtype">int</span> __kmp_tp_cached = 0;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;<span class="keywordtype">int</span> __kmp_dflt_nested = FALSE;</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;<span class="keywordtype">int</span> __kmp_dispatch_num_buffers = KMP_DFLT_DISP_NUM_BUFF;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">int</span> __kmp_dflt_max_active_levels =</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;    KMP_MAX_ACTIVE_LEVELS_LIMIT; <span class="comment">/* max_active_levels limit */</span></div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor">#if KMP_NESTED_HOT_TEAMS</span></div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;<span class="keywordtype">int</span> __kmp_hot_teams_mode = 0; <span class="comment">/* 0 - free extra threads when reduced */</span></div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;<span class="comment">/* 1 - keep extra threads when reduced */</span></div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="keywordtype">int</span> __kmp_hot_teams_max_level = 1; <span class="comment">/* nesting level of hot teams */</span></div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="keyword">enum</span> library_type __kmp_library = library_none;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keyword">enum</span> <a class="code" href="group__WORK__SHARING.html#gadcaf200537aaa0218a60c398438f81be">sched_type</a> __kmp_sched =</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;    <a class="code" href="group__WORK__SHARING.html#ggadcaf200537aaa0218a60c398438f81bea317dd63053ef79e3b3cea2ce2b676b38">kmp_sch_default</a>; <span class="comment">/* scheduling method for runtime scheduling */</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="keyword">enum</span> <a class="code" href="group__WORK__SHARING.html#gadcaf200537aaa0218a60c398438f81be">sched_type</a> __kmp_static =</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;    kmp_sch_static_greedy; <span class="comment">/* default static scheduling method */</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="keyword">enum</span> <a class="code" href="group__WORK__SHARING.html#gadcaf200537aaa0218a60c398438f81be">sched_type</a> __kmp_guided =</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;    kmp_sch_guided_iterative_chunked; <span class="comment">/* default guided scheduling method */</span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="keyword">enum</span> <a class="code" href="group__WORK__SHARING.html#gadcaf200537aaa0218a60c398438f81be">sched_type</a> __kmp_auto =</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;    kmp_sch_guided_analytical_chunked; <span class="comment">/* default auto scheduling method */</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keywordtype">int</span> __kmp_dflt_blocktime = KMP_DEFAULT_BLOCKTIME;</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor">#if KMP_USE_MONITOR</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keywordtype">int</span> __kmp_monitor_wakeups = KMP_MIN_MONITOR_WAKEUPS;</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="keywordtype">int</span> __kmp_bt_intervals = KMP_INTERVALS_FROM_BLOCKTIME(KMP_DEFAULT_BLOCKTIME,</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;                                                      KMP_MIN_MONITOR_WAKEUPS);</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">#ifdef KMP_ADJUST_BLOCKTIME</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="keywordtype">int</span> __kmp_zero_bt = FALSE;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_ADJUST_BLOCKTIME */</span><span class="preprocessor"></span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor">#ifdef KMP_DFLT_NTH_CORES</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="keywordtype">int</span> __kmp_ncores = 0;</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="keywordtype">int</span> __kmp_chunk = 0;</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="keywordtype">int</span> __kmp_abort_delay = 0;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="preprocessor">#if KMP_OS_LINUX &amp;&amp; defined(KMP_TDATA_GTID)</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="keywordtype">int</span> __kmp_gtid_mode = 3; <span class="comment">/* use __declspec(thread) TLS to store gtid */</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="keywordtype">int</span> __kmp_adjust_gtid_mode = FALSE;</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor">#elif KMP_OS_WINDOWS</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keywordtype">int</span> __kmp_gtid_mode = 2; <span class="comment">/* use TLS functions to store gtid */</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="keywordtype">int</span> __kmp_adjust_gtid_mode = FALSE;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="keywordtype">int</span> __kmp_gtid_mode = 0; <span class="comment">/* select method to get gtid based on #threads */</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="keywordtype">int</span> __kmp_adjust_gtid_mode = TRUE;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_OS_LINUX &amp;&amp; defined(KMP_TDATA_GTID) */</span><span class="preprocessor"></span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="preprocessor">#ifdef KMP_TDATA_GTID</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="preprocessor">#if KMP_OS_WINDOWS</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;__declspec(thread) <span class="keywordtype">int</span> __kmp_gtid = KMP_GTID_DNE;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;__thread <span class="keywordtype">int</span> __kmp_gtid = KMP_GTID_DNE;</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_OS_WINDOWS - workaround because Intel(R) Many Integrated Core    \</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="comment">          compiler 20110316 doesn&#39;t accept __declspec */</span><span class="preprocessor"></span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_TDATA_GTID */</span><span class="preprocessor"></span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="keywordtype">int</span> __kmp_tls_gtid_min = INT_MAX;</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;<span class="keywordtype">int</span> __kmp_foreign_tp = TRUE;</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="preprocessor">#if KMP_ARCH_X86 || KMP_ARCH_X86_64</span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="keywordtype">int</span> __kmp_inherit_fp_control = TRUE;</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;kmp_int16 __kmp_init_x87_fpu_control_word = 0;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;kmp_uint32 __kmp_init_mxcsr = 0;</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_ARCH_X86 || KMP_ARCH_X86_64 */</span><span class="preprocessor"></span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="preprocessor">#ifdef USE_LOAD_BALANCE</span></div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="keywordtype">double</span> __kmp_load_balance_interval = 1.0;</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* USE_LOAD_BALANCE */</span><span class="preprocessor"></span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;kmp_nested_nthreads_t __kmp_nested_nth = {NULL, 0, 0};</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="preprocessor">#if KMP_USE_ADAPTIVE_LOCKS</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;kmp_adaptive_backoff_params_t __kmp_adaptive_backoff_params = {</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;    1, 1024}; <span class="comment">// TODO: tune it!</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;<span class="preprocessor">#if KMP_DEBUG_ADAPTIVE_LOCKS</span></div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="keywordtype">char</span> *__kmp_speculative_statsfile = <span class="stringliteral">&quot;-&quot;</span>;</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;<span class="preprocessor">#endif // KMP_USE_ADAPTIVE_LOCKS</span></div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;<span class="preprocessor">#if OMP_40_ENABLED</span></div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;<span class="keywordtype">int</span> __kmp_display_env = FALSE;</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;<span class="keywordtype">int</span> __kmp_display_env_verbose = FALSE;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<span class="keywordtype">int</span> __kmp_omp_cancellation = FALSE;</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;<span class="comment">/* map OMP 3.0 schedule types with our internal schedule types */</span></div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;<span class="keyword">enum</span> <a class="code" href="group__WORK__SHARING.html#gadcaf200537aaa0218a60c398438f81be">sched_type</a> __kmp_sch_map[kmp_sched_upper - kmp_sched_lower_ext +</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;                              kmp_sched_upper_std - kmp_sched_lower - 2] = {</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    kmp_sch_static_chunked, <span class="comment">// ==&gt; kmp_sched_static            = 1</span></div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    kmp_sch_dynamic_chunked, <span class="comment">// ==&gt; kmp_sched_dynamic           = 2</span></div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <a class="code" href="group__WORK__SHARING.html#ggadcaf200537aaa0218a60c398438f81bea52b66fc7ba82beb3d6fbdb82a6ef045d">kmp_sch_guided_chunked</a>, <span class="comment">// ==&gt; kmp_sched_guided            = 3</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    <a class="code" href="group__WORK__SHARING.html#ggadcaf200537aaa0218a60c398438f81bea270b6b98ec2f9ec4832f7a59b0a0d532">kmp_sch_auto</a>, <span class="comment">// ==&gt; kmp_sched_auto              = 4</span></div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;    kmp_sch_trapezoidal <span class="comment">// ==&gt; kmp_sched_trapezoidal       = 101</span></div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;    <span class="comment">// will likely not be used, introduced here just to debug the code</span></div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    <span class="comment">// of public intel extension schedules</span></div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;};</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;<span class="preprocessor">#if KMP_OS_LINUX</span></div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;<span class="keyword">enum</span> clock_function_type __kmp_clock_function;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<span class="keywordtype">int</span> __kmp_clock_function_param;</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_OS_LINUX */</span><span class="preprocessor"></span></div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;<span class="preprocessor">#if KMP_MIC_SUPPORTED</span></div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;<span class="keyword">enum</span> mic_type __kmp_mic_type = non_mic;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;<span class="preprocessor">#if KMP_AFFINITY_SUPPORTED</span></div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;KMPAffinity *__kmp_affinity_dispatch = NULL;</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;<span class="preprocessor">#if KMP_USE_HWLOC</span></div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;<span class="keywordtype">int</span> __kmp_hwloc_error = FALSE;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;hwloc_topology_t __kmp_hwloc_topology = NULL;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;<span class="preprocessor">#if KMP_OS_WINDOWS</span></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;<span class="preprocessor">#if KMP_GROUP_AFFINITY</span></div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;<span class="keywordtype">int</span> __kmp_num_proc_groups = 1;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_GROUP_AFFINITY */</span><span class="preprocessor"></span></div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;kmp_GetActiveProcessorCount_t __kmp_GetActiveProcessorCount = NULL;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;kmp_GetActiveProcessorGroupCount_t __kmp_GetActiveProcessorGroupCount = NULL;</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;kmp_GetThreadGroupAffinity_t __kmp_GetThreadGroupAffinity = NULL;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;kmp_SetThreadGroupAffinity_t __kmp_SetThreadGroupAffinity = NULL;</div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_OS_WINDOWS */</span><span class="preprocessor"></span></div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="keywordtype">size_t</span> __kmp_affin_mask_size = 0;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="keyword">enum</span> affinity_type __kmp_affinity_type = affinity_default;</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;<span class="keyword">enum</span> affinity_gran __kmp_affinity_gran = affinity_gran_default;</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_gran_levels = -1;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_dups = TRUE;</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;<span class="keyword">enum</span> affinity_top_method __kmp_affinity_top_method =</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    affinity_top_method_default;</div><div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_compact = 0;</div><div class="line"><a name="l00272"></a><span class="lineno">  272</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_offset = 0;</div><div class="line"><a name="l00273"></a><span class="lineno">  273</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_verbose = FALSE;</div><div class="line"><a name="l00274"></a><span class="lineno">  274</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_warnings = TRUE;</div><div class="line"><a name="l00275"></a><span class="lineno">  275</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_respect_mask = affinity_respect_mask_default;</div><div class="line"><a name="l00276"></a><span class="lineno">  276</span>&#160;<span class="keywordtype">char</span> *__kmp_affinity_proclist = NULL;</div><div class="line"><a name="l00277"></a><span class="lineno">  277</span>&#160;kmp_affin_mask_t *__kmp_affinity_masks = NULL;</div><div class="line"><a name="l00278"></a><span class="lineno">  278</span>&#160;<span class="keywordtype">unsigned</span> __kmp_affinity_num_masks = 0;</div><div class="line"><a name="l00279"></a><span class="lineno">  279</span>&#160;</div><div class="line"><a name="l00280"></a><span class="lineno">  280</span>&#160;<span class="keywordtype">char</span> <span class="keyword">const</span> *__kmp_cpuinfo_file = NULL;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_AFFINITY_SUPPORTED */</span><span class="preprocessor"></span></div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;<span class="preprocessor">#if OMP_40_ENABLED</span></div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;kmp_nested_proc_bind_t __kmp_nested_proc_bind = {NULL, 0, 0};</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;<span class="keywordtype">int</span> __kmp_affinity_num_places = 0;</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00289"></a><span class="lineno">  289</span>&#160;kmp_hws_item_t __kmp_hws_socket = {0, 0};</div><div class="line"><a name="l00290"></a><span class="lineno">  290</span>&#160;kmp_hws_item_t __kmp_hws_node = {0, 0};</div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;kmp_hws_item_t __kmp_hws_tile = {0, 0};</div><div class="line"><a name="l00292"></a><span class="lineno">  292</span>&#160;kmp_hws_item_t __kmp_hws_core = {0, 0};</div><div class="line"><a name="l00293"></a><span class="lineno">  293</span>&#160;kmp_hws_item_t __kmp_hws_proc = {0, 0};</div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="keywordtype">int</span> __kmp_hws_requested = 0;</div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;<span class="keywordtype">int</span> __kmp_hws_abs_flag = 0; <span class="comment">// absolute or per-item number requested</span></div><div class="line"><a name="l00296"></a><span class="lineno">  296</span>&#160;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;<span class="preprocessor">#if OMP_40_ENABLED</span></div><div class="line"><a name="l00298"></a><span class="lineno">  298</span>&#160;kmp_int32 __kmp_default_device = 0;</div><div class="line"><a name="l00299"></a><span class="lineno">  299</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00300"></a><span class="lineno">  300</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno">  301</span>&#160;kmp_tasking_mode_t __kmp_tasking_mode = tskm_task_teams;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;<span class="preprocessor">#if OMP_45_ENABLED</span></div><div class="line"><a name="l00303"></a><span class="lineno">  303</span>&#160;kmp_int32 __kmp_max_task_priority = 0;</div><div class="line"><a name="l00304"></a><span class="lineno">  304</span>&#160;kmp_uint64 __kmp_taskloop_min_tasks = 0;</div><div class="line"><a name="l00305"></a><span class="lineno">  305</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00306"></a><span class="lineno">  306</span>&#160;</div><div class="line"><a name="l00307"></a><span class="lineno">  307</span>&#160;<span class="comment">/* This check ensures that the compiler is passing the correct data type for the</span></div><div class="line"><a name="l00308"></a><span class="lineno">  308</span>&#160;<span class="comment">   flags formal parameter of the function kmpc_omp_task_alloc(). If the type is</span></div><div class="line"><a name="l00309"></a><span class="lineno">  309</span>&#160;<span class="comment">   not a 4-byte type, then give an error message about a non-positive length</span></div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;<span class="comment">   array pointing here.  If that happens, the kmp_tasking_flags_t structure must</span></div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;<span class="comment">   be redefined to have exactly 32 bits. */</span></div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;KMP_BUILD_ASSERT(<span class="keyword">sizeof</span>(kmp_tasking_flags_t) == 4);</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;</div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;kmp_int32 __kmp_task_stealing_constraint =</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;    1; <span class="comment">/* Constrain task stealing by default */</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;<span class="preprocessor">#ifdef DEBUG_SUSPEND</span></div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="keywordtype">int</span> __kmp_suspend_count = 0;</div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="keywordtype">int</span> __kmp_settings = FALSE;</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;<span class="keywordtype">int</span> __kmp_duplicate_library_ok = 0;</div><div class="line"><a name="l00323"></a><span class="lineno">  323</span>&#160;<span class="preprocessor">#if USE_ITT_BUILD</span></div><div class="line"><a name="l00324"></a><span class="lineno">  324</span>&#160;<span class="keywordtype">int</span> __kmp_forkjoin_frames = 1;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;<span class="keywordtype">int</span> __kmp_forkjoin_frames_mode = 3;</div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;PACKED_REDUCTION_METHOD_T __kmp_force_reduction_method =</div><div class="line"><a name="l00328"></a><span class="lineno">  328</span>&#160;    reduction_method_not_defined;</div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="keywordtype">int</span> __kmp_determ_red = FALSE;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="preprocessor">#ifdef KMP_DEBUG</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<span class="keywordtype">int</span> kmp_a_debug = 0;</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;<span class="keywordtype">int</span> kmp_b_debug = 0;</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="keywordtype">int</span> kmp_c_debug = 0;</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;<span class="keywordtype">int</span> kmp_d_debug = 0;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;<span class="keywordtype">int</span> kmp_e_debug = 0;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="keywordtype">int</span> kmp_f_debug = 0;</div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="keywordtype">int</span> kmp_diag = 0;</div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="comment">/* For debug information logging using rotating buffer */</span></div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;<span class="keywordtype">int</span> __kmp_debug_buf =</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;    FALSE; <span class="comment">/* TRUE means use buffer, FALSE means print to stderr */</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="keywordtype">int</span> __kmp_debug_buf_lines =</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;    KMP_DEBUG_BUF_LINES_INIT; <span class="comment">/* Lines of debug stored in buffer */</span></div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<span class="keywordtype">int</span> __kmp_debug_buf_chars =</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;    KMP_DEBUG_BUF_CHARS_INIT; <span class="comment">/* Characters allowed per line in buffer */</span></div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="keywordtype">int</span> __kmp_debug_buf_atomic =</div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;    FALSE; <span class="comment">/* TRUE means use atomic update of buffer entry pointer */</span></div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<span class="keywordtype">char</span> *__kmp_debug_buffer = NULL; <span class="comment">/* Debug buffer itself */</span></div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="keywordtype">int</span> __kmp_debug_count =</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;    0; <span class="comment">/* Counter for number of lines printed in buffer so far */</span></div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="keywordtype">int</span> __kmp_debug_buf_warn_chars =</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;    0; <span class="comment">/* Keep track of char increase recommended in warnings */</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="comment">/* end rotating debug buffer */</span></div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="preprocessor">#ifdef KMP_DEBUG</span></div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;<span class="keywordtype">int</span> __kmp_par_range; <span class="comment">/* +1 =&gt; only go par for constructs in range */</span></div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="comment">/* -1 =&gt; only go par for constructs outside range */</span></div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<span class="keywordtype">char</span> __kmp_par_range_routine[KMP_PAR_RANGE_ROUTINE_LEN] = {<span class="charliteral">&#39;\0&#39;</span>};</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;<span class="keywordtype">char</span> __kmp_par_range_filename[KMP_PAR_RANGE_FILENAME_LEN] = {<span class="charliteral">&#39;\0&#39;</span>};</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="keywordtype">int</span> __kmp_par_range_lb = 0;</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;<span class="keywordtype">int</span> __kmp_par_range_ub = INT_MAX;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* KMP_DEBUG */</span><span class="preprocessor"></span></div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="comment">/* For printing out dynamic storage map for threads and teams */</span></div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;<span class="keywordtype">int</span> __kmp_storage_map =</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;    FALSE; <span class="comment">/* True means print storage map for threads and teams */</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="keywordtype">int</span> __kmp_storage_map_verbose =</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;    FALSE; <span class="comment">/* True means storage map includes placement info */</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="keywordtype">int</span> __kmp_storage_map_verbose_specified = FALSE;</div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="comment">/* Initialize the library data structures when we fork a child process, defaults</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="comment"> * to TRUE */</span></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="keywordtype">int</span> __kmp_need_register_atfork =</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;    TRUE; <span class="comment">/* At initialization, call pthread_atfork to install fork handler */</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="keywordtype">int</span> __kmp_need_register_atfork_specified = TRUE;</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;<span class="keywordtype">int</span> __kmp_env_chunk = FALSE; <span class="comment">/* KMP_CHUNK specified?     */</span></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keywordtype">int</span> __kmp_env_stksize = FALSE; <span class="comment">/* KMP_STACKSIZE specified? */</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="keywordtype">int</span> __kmp_env_omp_stksize = FALSE; <span class="comment">/* OMP_STACKSIZE specified? */</span></div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;<span class="keywordtype">int</span> __kmp_env_all_threads =</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;    FALSE; <span class="comment">/* KMP_ALL_THREADS or KMP_MAX_THREADS specified? */</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="keywordtype">int</span> __kmp_env_omp_all_threads = FALSE; <span class="comment">/* OMP_THREAD_LIMIT specified? */</span></div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<span class="keywordtype">int</span> __kmp_env_blocktime = FALSE; <span class="comment">/* KMP_BLOCKTIME specified? */</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="keywordtype">int</span> __kmp_env_checks = FALSE; <span class="comment">/* KMP_CHECKS specified?    */</span></div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;<span class="keywordtype">int</span> __kmp_env_consistency_check = FALSE; <span class="comment">/* KMP_CONSISTENCY_CHECK specified? */</span></div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;kmp_uint32 __kmp_yield_init = KMP_INIT_WAIT;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;kmp_uint32 __kmp_yield_next = KMP_NEXT_WAIT;</div><div class="line"><a name="l00391"></a><span class="lineno">  391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno">  392</span>&#160;<span class="preprocessor">#if KMP_USE_MONITOR</span></div><div class="line"><a name="l00393"></a><span class="lineno">  393</span>&#160;kmp_uint32 __kmp_yielding_on = 1;</div><div class="line"><a name="l00394"></a><span class="lineno">  394</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00395"></a><span class="lineno">  395</span>&#160;<span class="preprocessor">#if KMP_OS_CNK</span></div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;kmp_uint32 __kmp_yield_cycle = 0;</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00398"></a><span class="lineno">  398</span>&#160;kmp_uint32 __kmp_yield_cycle = 1; <span class="comment">/* Yield-cycle is on by default */</span></div><div class="line"><a name="l00399"></a><span class="lineno">  399</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00400"></a><span class="lineno">  400</span>&#160;kmp_int32 __kmp_yield_on_count =</div><div class="line"><a name="l00401"></a><span class="lineno">  401</span>&#160;    10; <span class="comment">/* By default, yielding is on for 10 monitor periods. */</span></div><div class="line"><a name="l00402"></a><span class="lineno">  402</span>&#160;kmp_int32 __kmp_yield_off_count =</div><div class="line"><a name="l00403"></a><span class="lineno">  403</span>&#160;    1; <span class="comment">/* By default, yielding is off for 1 monitor periods. */</span></div><div class="line"><a name="l00404"></a><span class="lineno">  404</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="comment">/* ------------------------------------------------------ */</span></div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;<span class="comment">/* STATE mostly syncronized with global lock */</span></div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;<span class="comment">/* data written to rarely by masters, read often by workers */</span></div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;<span class="comment">/* TODO: None of this global padding stuff works consistently because the order</span></div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;<span class="comment">   of declaration is not necessarily correlated to storage order. To fix this,</span></div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;<span class="comment">   all the important globals must be put in a big structure instead. */</span></div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;KMP_ALIGN_CACHE</div><div class="line"><a name="l00412"></a><span class="lineno">  412</span>&#160;kmp_info_t **__kmp_threads = NULL;</div><div class="line"><a name="l00413"></a><span class="lineno">  413</span>&#160;kmp_root_t **__kmp_root = NULL;</div><div class="line"><a name="l00414"></a><span class="lineno">  414</span>&#160;</div><div class="line"><a name="l00415"></a><span class="lineno">  415</span>&#160;<span class="comment">/* data read/written to often by masters */</span></div><div class="line"><a name="l00416"></a><span class="lineno">  416</span>&#160;KMP_ALIGN_CACHE</div><div class="line"><a name="l00417"></a><span class="lineno">  417</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_nth = 0;</div><div class="line"><a name="l00418"></a><span class="lineno">  418</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_all_nth = 0;</div><div class="line"><a name="l00419"></a><span class="lineno">  419</span>&#160;<span class="keywordtype">int</span> __kmp_thread_pool_nth = 0;</div><div class="line"><a name="l00420"></a><span class="lineno">  420</span>&#160;<span class="keyword">volatile</span> kmp_info_t *__kmp_thread_pool = NULL;</div><div class="line"><a name="l00421"></a><span class="lineno">  421</span>&#160;<span class="keyword">volatile</span> kmp_team_t *__kmp_team_pool = NULL;</div><div class="line"><a name="l00422"></a><span class="lineno">  422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno">  423</span>&#160;KMP_ALIGN_CACHE</div><div class="line"><a name="l00424"></a><span class="lineno">  424</span>&#160;<span class="keyword">volatile</span> <span class="keywordtype">int</span> __kmp_thread_pool_active_nth = 0;</div><div class="line"><a name="l00425"></a><span class="lineno">  425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno">  426</span>&#160;<span class="comment">/* -------------------------------------------------</span></div><div class="line"><a name="l00427"></a><span class="lineno">  427</span>&#160;<span class="comment"> * GLOBAL/ROOT STATE */</span></div><div class="line"><a name="l00428"></a><span class="lineno">  428</span>&#160;KMP_ALIGN_CACHE</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;kmp_global_t __kmp_global = {{0}};</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;<span class="comment">/* ----------------------------------------------- */</span></div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;<span class="comment">/* GLOBAL SYNCHRONIZATION LOCKS */</span></div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;<span class="comment">/* TODO verify the need for these locks and if they need to be global */</span></div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;<span class="preprocessor">#if KMP_USE_INTERNODE_ALIGNMENT</span></div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;<span class="comment">/* Multinode systems have larger cache line granularity which can cause</span></div><div class="line"><a name="l00437"></a><span class="lineno">  437</span>&#160;<span class="comment"> * false sharing if the alignment is not large enough for these locks */</span></div><div class="line"><a name="l00438"></a><span class="lineno">  438</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00439"></a><span class="lineno">  439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno">  440</span>&#160;kmp_bootstrap_lock_t __kmp_initz_lock = KMP_BOOTSTRAP_LOCK_INITIALIZER(</div><div class="line"><a name="l00441"></a><span class="lineno">  441</span>&#160;    __kmp_initz_lock); <span class="comment">/* Control initializations */</span></div><div class="line"><a name="l00442"></a><span class="lineno">  442</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00443"></a><span class="lineno">  443</span>&#160;kmp_bootstrap_lock_t __kmp_forkjoin_lock; <span class="comment">/* control fork/join access */</span></div><div class="line"><a name="l00444"></a><span class="lineno">  444</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00445"></a><span class="lineno">  445</span>&#160;kmp_bootstrap_lock_t __kmp_exit_lock; <span class="comment">/* exit() is not always thread-safe */</span></div><div class="line"><a name="l00446"></a><span class="lineno">  446</span>&#160;<span class="preprocessor">#if KMP_USE_MONITOR</span></div><div class="line"><a name="l00447"></a><span class="lineno">  447</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00448"></a><span class="lineno">  448</span>&#160;kmp_bootstrap_lock_t __kmp_monitor_lock; <span class="comment">/* control monitor thread creation */</span></div><div class="line"><a name="l00449"></a><span class="lineno">  449</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00450"></a><span class="lineno">  450</span>&#160;<span class="comment">/* used for the hack to allow threadprivate cache and __kmp_threads expansion</span></div><div class="line"><a name="l00451"></a><span class="lineno">  451</span>&#160;<span class="comment">   to co-exist */</span></div><div class="line"><a name="l00452"></a><span class="lineno">  452</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;kmp_bootstrap_lock_t __kmp_tp_cached_lock;</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;kmp_lock_t __kmp_global_lock; <span class="comment">/* Control OS/global access */</span></div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;kmp_queuing_lock_t __kmp_dispatch_lock; <span class="comment">/* Control dispatch access  */</span></div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;KMP_ALIGN_CACHE_INTERNODE</div><div class="line"><a name="l00460"></a><span class="lineno">  460</span>&#160;kmp_lock_t __kmp_debug_lock; <span class="comment">/* Control I/O access for KMP_DEBUG */</span></div><div class="line"><a name="l00461"></a><span class="lineno">  461</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00462"></a><span class="lineno">  462</span>&#160;KMP_ALIGN_CACHE</div><div class="line"><a name="l00463"></a><span class="lineno">  463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno">  464</span>&#160;kmp_bootstrap_lock_t __kmp_initz_lock = KMP_BOOTSTRAP_LOCK_INITIALIZER(</div><div class="line"><a name="l00465"></a><span class="lineno">  465</span>&#160;    __kmp_initz_lock); <span class="comment">/* Control initializations */</span></div><div class="line"><a name="l00466"></a><span class="lineno">  466</span>&#160;kmp_bootstrap_lock_t __kmp_forkjoin_lock; <span class="comment">/* control fork/join access */</span></div><div class="line"><a name="l00467"></a><span class="lineno">  467</span>&#160;kmp_bootstrap_lock_t __kmp_exit_lock; <span class="comment">/* exit() is not always thread-safe */</span></div><div class="line"><a name="l00468"></a><span class="lineno">  468</span>&#160;<span class="preprocessor">#if KMP_USE_MONITOR</span></div><div class="line"><a name="l00469"></a><span class="lineno">  469</span>&#160;kmp_bootstrap_lock_t __kmp_monitor_lock; <span class="comment">/* control monitor thread creation */</span></div><div class="line"><a name="l00470"></a><span class="lineno">  470</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00471"></a><span class="lineno">  471</span>&#160;<span class="comment">/* used for the hack to allow threadprivate cache and __kmp_threads expansion</span></div><div class="line"><a name="l00472"></a><span class="lineno">  472</span>&#160;<span class="comment">   to co-exist */</span></div><div class="line"><a name="l00473"></a><span class="lineno">  473</span>&#160;kmp_bootstrap_lock_t __kmp_tp_cached_lock;</div><div class="line"><a name="l00474"></a><span class="lineno">  474</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;KMP_ALIGN(128)</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;kmp_lock_t __kmp_global_lock; <span class="comment">/* Control OS/global access */</span></div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;KMP_ALIGN(128)</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;kmp_queuing_lock_t __kmp_dispatch_lock; <span class="comment">/* Control dispatch access  */</span></div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;KMP_ALIGN(128)</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;kmp_lock_t __kmp_debug_lock; <span class="comment">/* Control I/O access for KMP_DEBUG */</span></div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00482"></a><span class="lineno">  482</span>&#160;</div><div class="line"><a name="l00483"></a><span class="lineno">  483</span>&#160;<span class="comment">/* ----------------------------------------------- */</span></div><div class="line"><a name="l00484"></a><span class="lineno">  484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno">  485</span>&#160;<span class="preprocessor">#if KMP_HANDLE_SIGNALS</span></div><div class="line"><a name="l00486"></a><span class="lineno">  486</span>&#160;<span class="comment">/* Signal handling is disabled by default, because it confuses users: In case of</span></div><div class="line"><a name="l00487"></a><span class="lineno">  487</span>&#160;<span class="comment">   sigsegv (or other trouble) in user code signal handler catches the signal,</span></div><div class="line"><a name="l00488"></a><span class="lineno">  488</span>&#160;<span class="comment">   which then &quot;appears&quot; in the monitor thread (when the monitor executes raise()</span></div><div class="line"><a name="l00489"></a><span class="lineno">  489</span>&#160;<span class="comment">   function). Users see signal in the monitor thread and blame OpenMP RTL.</span></div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00491"></a><span class="lineno">  491</span>&#160;<span class="comment">   Grant said signal handling required on some older OSes (Irix?) supported by</span></div><div class="line"><a name="l00492"></a><span class="lineno">  492</span>&#160;<span class="comment">   KAI, because bad applications hung but not aborted. Currently it is not a</span></div><div class="line"><a name="l00493"></a><span class="lineno">  493</span>&#160;<span class="comment">   problem for Linux* OS, OS X* and Windows* OS.</span></div><div class="line"><a name="l00494"></a><span class="lineno">  494</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00495"></a><span class="lineno">  495</span>&#160;<span class="comment">   Grant: Found new hangs for EL4, EL5, and a Fedora Core machine.  So I&#39;m</span></div><div class="line"><a name="l00496"></a><span class="lineno">  496</span>&#160;<span class="comment">   putting the default back for now to see if that fixes hangs on those</span></div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;<span class="comment">   machines.</span></div><div class="line"><a name="l00498"></a><span class="lineno">  498</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00499"></a><span class="lineno">  499</span>&#160;<span class="comment">   2010-04013 Lev: It was a bug in Fortran RTL. Fortran RTL prints a kind of</span></div><div class="line"><a name="l00500"></a><span class="lineno">  500</span>&#160;<span class="comment">   stack backtrace when program is aborting, but the code is not signal-safe.</span></div><div class="line"><a name="l00501"></a><span class="lineno">  501</span>&#160;<span class="comment">   When multiple signals raised at the same time (which occurs in dynamic</span></div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;<span class="comment">   negative tests because all the worker threads detects the same error),</span></div><div class="line"><a name="l00503"></a><span class="lineno">  503</span>&#160;<span class="comment">   Fortran RTL may hang. The bug finally fixed in Fortran RTL library provided</span></div><div class="line"><a name="l00504"></a><span class="lineno">  504</span>&#160;<span class="comment">   by Steve R., and will be available soon. */</span></div><div class="line"><a name="l00505"></a><span class="lineno">  505</span>&#160;<span class="keywordtype">int</span> __kmp_handle_signals = FALSE;</div><div class="line"><a name="l00506"></a><span class="lineno">  506</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00507"></a><span class="lineno">  507</span>&#160;</div><div class="line"><a name="l00508"></a><span class="lineno">  508</span>&#160;<span class="comment">/* ----------------------------------------------- */</span></div><div class="line"><a name="l00509"></a><span class="lineno">  509</span>&#160;<span class="preprocessor">#ifdef BUILD_TV</span></div><div class="line"><a name="l00510"></a><span class="lineno">  510</span>&#160;kmp_key_t __kmp_tv_key = 0;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00512"></a><span class="lineno">  512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno">  513</span>&#160;<span class="comment">/* ------------------------------------------------------------------------ */</span></div><div class="line"><a name="l00514"></a><span class="lineno">  514</span>&#160;</div><div class="line"><a name="l00515"></a><span class="lineno">  515</span>&#160;<span class="preprocessor">#ifdef DEBUG_SUSPEND</span></div><div class="line"><a name="l00516"></a><span class="lineno">  516</span>&#160;<span class="keywordtype">int</span> get_suspend_count_(<span class="keywordtype">void</span>) {</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;  <span class="keywordtype">int</span> count = __kmp_suspend_count;</div><div class="line"><a name="l00518"></a><span class="lineno">  518</span>&#160;  __kmp_suspend_count = 0;</div><div class="line"><a name="l00519"></a><span class="lineno">  519</span>&#160;  <span class="keywordflow">return</span> count;</div><div class="line"><a name="l00520"></a><span class="lineno">  520</span>&#160;}</div><div class="line"><a name="l00521"></a><span class="lineno">  521</span>&#160;<span class="keywordtype">void</span> set_suspend_count_(<span class="keywordtype">int</span> *value) { __kmp_suspend_count = *value; }</div><div class="line"><a name="l00522"></a><span class="lineno">  522</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;<span class="comment">// Symbols for MS mutual detection.</span></div><div class="line"><a name="l00525"></a><span class="lineno">  525</span>&#160;<span class="keywordtype">int</span> _You_must_link_with_exactly_one_OpenMP_library = 1;</div><div class="line"><a name="l00526"></a><span class="lineno">  526</span>&#160;<span class="keywordtype">int</span> _You_must_link_with_Intel_OpenMP_library = 1;</div><div class="line"><a name="l00527"></a><span class="lineno">  527</span>&#160;<span class="preprocessor">#if KMP_OS_WINDOWS &amp;&amp; (KMP_VERSION_MAJOR &gt; 4)</span></div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;<span class="keywordtype">int</span> _You_must_link_with_Microsoft_OpenMP_library = 1;</div><div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;</div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="comment">// end of file //</span></div><div class="ttc" id="group__WORK__SHARING_html_ggadcaf200537aaa0218a60c398438f81bea270b6b98ec2f9ec4832f7a59b0a0d532"><div class="ttname"><a href="group__WORK__SHARING.html#ggadcaf200537aaa0218a60c398438f81bea270b6b98ec2f9ec4832f7a59b0a0d532">kmp_sch_auto</a></div><div class="ttdef"><b>Definition:</b> <a href="kmp_8h_source.html#l00322">kmp.h:322</a></div></div>
<div class="ttc" id="group__WORK__SHARING_html_ggadcaf200537aaa0218a60c398438f81bea52b66fc7ba82beb3d6fbdb82a6ef045d"><div class="ttname"><a href="group__WORK__SHARING.html#ggadcaf200537aaa0218a60c398438f81bea52b66fc7ba82beb3d6fbdb82a6ef045d">kmp_sch_guided_chunked</a></div><div class="ttdef"><b>Definition:</b> <a href="kmp_8h_source.html#l00320">kmp.h:320</a></div></div>
<div class="ttc" id="group__WORK__SHARING_html_ggadcaf200537aaa0218a60c398438f81bea317dd63053ef79e3b3cea2ce2b676b38"><div class="ttname"><a href="group__WORK__SHARING.html#ggadcaf200537aaa0218a60c398438f81bea317dd63053ef79e3b3cea2ce2b676b38">kmp_sch_default</a></div><div class="ttdef"><b>Definition:</b> <a href="kmp_8h_source.html#l00430">kmp.h:430</a></div></div>
<div class="ttc" id="group__WORK__SHARING_html_gadcaf200537aaa0218a60c398438f81be"><div class="ttname"><a href="group__WORK__SHARING.html#gadcaf200537aaa0218a60c398438f81be">sched_type</a></div><div class="ttdeci">sched_type</div><div class="ttdef"><b>Definition:</b> <a href="kmp_8h_source.html#l00315">kmp.h:315</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>