Skip to content

Commit e844a54

Browse files
committedMar 6, 2017
OpenMP version 5.0 added
Add build option LIBOMP_OMP_VERSION=50, 5.0 headers, and add the year/month associated with OpenMP 5.0 in relevant source locations. Also, remove the deprecated LIBOMP_OMP_VERSION=41 option. Patch by Olga Malysheva Differential Revision: https://reviews.llvm.org/D30450 llvm-svn: 297083
1 parent 41d3800 commit e844a54

10 files changed

+2753
-12
lines changed
 

‎openmp/runtime/Build_With_CMake.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ Library type can be normal, profile, or stubs.
116116
-DCMAKE_BUILD_TYPE=Release|Debug|RelWithDebInfo
117117
Build type can be Release, Debug, or RelWithDebInfo.
118118

119-
-DLIBOMP_OMP_VERSION=45|40|30
120-
OpenMP version can be either 45, 40 or 30.
119+
-DLIBOMP_OMP_VERSION=50|45|40|30
120+
OpenMP version can be either 50, 45, 40 or 30.
121121

122122
-DLIBOMP_MIC_ARCH=knc|knf
123123
This value is ignored if LIBOMP_ARCH != mic

‎openmp/runtime/CMakeLists.txt

+6-8
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,13 @@ libomp_check_variable(LIBOMP_ARCH 32e x86_64 32 i386 arm ppc64 ppc64le aarch64 m
8989
set(LIBOMP_LIB_TYPE normal CACHE STRING
9090
"Performance,Profiling,Stubs library (normal/profile/stubs)")
9191
libomp_check_variable(LIBOMP_LIB_TYPE normal profile stubs)
92-
set(LIBOMP_OMP_VERSION 45 CACHE STRING
93-
"The OpenMP version (45/40/30)")
94-
if(LIBOMP_OMP_VERSION EQUAL 41)
95-
libomp_warning_say("LIBOMP_OMP_VERSION=41 is deprecated and will be removed in a later version. Please use 45.")
96-
set(LIBOMP_OMP_VERSION 45)
97-
endif()
98-
libomp_check_variable(LIBOMP_OMP_VERSION 45 40 30)
92+
set(LIBOMP_OMP_VERSION 50 CACHE STRING
93+
"The OpenMP version (50/45/40/30)")
94+
libomp_check_variable(LIBOMP_OMP_VERSION 50 45 40 30)
9995
# Set the OpenMP Year and Month assiociated with version
100-
if(${LIBOMP_OMP_VERSION} GREATER 45 OR ${LIBOMP_OMP_VERSION} EQUAL 45)
96+
if(${LIBOMP_OMP_VERSION} GREATER 50 OR ${LIBOMP_OMP_VERSION} EQUAL 50)
97+
set(LIBOMP_OMP_YEAR_MONTH 201611)
98+
elseif(${LIBOMP_OMP_VERSION} GREATER 45 OR ${LIBOMP_OMP_VERSION} EQUAL 45)
10199
set(LIBOMP_OMP_YEAR_MONTH 201511)
102100
elseif(${LIBOMP_OMP_VERSION} GREATER 40 OR ${LIBOMP_OMP_VERSION} EQUAL 40)
103101
set(LIBOMP_OMP_YEAR_MONTH 201307)

‎openmp/runtime/cmake/LibompHandleFlags.cmake

+3
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,9 @@ function(libomp_get_gdflags gdflags)
192192
libomp_append(gdflags_local "-D stub" STUBS_LIBRARY)
193193
libomp_append(gdflags_local "-D HAVE_QUAD" LIBOMP_USE_QUAD_PRECISION)
194194
libomp_append(gdflags_local "-D USE_DEBUGGER" LIBOMP_USE_DEBUGGER)
195+
if(${LIBOMP_OMP_VERSION} GREATER 50 OR ${LIBOMP_OMP_VERSION} EQUAL 50)
196+
libomp_append(gdflags_local "-D OMP_50")
197+
endif()
195198
if(${LIBOMP_OMP_VERSION} GREATER 45 OR ${LIBOMP_OMP_VERSION} EQUAL 45)
196199
libomp_append(gdflags_local "-D OMP_45")
197200
endif()
+198
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
/*
2+
* include/50/omp.h.var
3+
*/
4+
5+
6+
//===----------------------------------------------------------------------===//
7+
//
8+
// The LLVM Compiler Infrastructure
9+
//
10+
// This file is dual licensed under the MIT and the University of Illinois Open
11+
// Source Licenses. See LICENSE.txt for details.
12+
//
13+
//===----------------------------------------------------------------------===//
14+
15+
16+
#ifndef __OMP_H
17+
# define __OMP_H
18+
19+
# define KMP_VERSION_MAJOR @LIBOMP_VERSION_MAJOR@
20+
# define KMP_VERSION_MINOR @LIBOMP_VERSION_MINOR@
21+
# define KMP_VERSION_BUILD @LIBOMP_VERSION_BUILD@
22+
# define KMP_BUILD_DATE "@LIBOMP_BUILD_DATE@"
23+
24+
# ifdef __cplusplus
25+
extern "C" {
26+
# endif
27+
28+
# if defined(_WIN32)
29+
# define __KAI_KMPC_CONVENTION __cdecl
30+
# else
31+
# define __KAI_KMPC_CONVENTION
32+
# endif
33+
34+
/* schedule kind constants */
35+
typedef enum omp_sched_t {
36+
omp_sched_static = 1,
37+
omp_sched_dynamic = 2,
38+
omp_sched_guided = 3,
39+
omp_sched_auto = 4
40+
} omp_sched_t;
41+
42+
/* set API functions */
43+
extern void __KAI_KMPC_CONVENTION omp_set_num_threads (int);
44+
extern void __KAI_KMPC_CONVENTION omp_set_dynamic (int);
45+
extern void __KAI_KMPC_CONVENTION omp_set_nested (int);
46+
extern void __KAI_KMPC_CONVENTION omp_set_max_active_levels (int);
47+
extern void __KAI_KMPC_CONVENTION omp_set_schedule (omp_sched_t, int);
48+
49+
/* query API functions */
50+
extern int __KAI_KMPC_CONVENTION omp_get_num_threads (void);
51+
extern int __KAI_KMPC_CONVENTION omp_get_dynamic (void);
52+
extern int __KAI_KMPC_CONVENTION omp_get_nested (void);
53+
extern int __KAI_KMPC_CONVENTION omp_get_max_threads (void);
54+
extern int __KAI_KMPC_CONVENTION omp_get_thread_num (void);
55+
extern int __KAI_KMPC_CONVENTION omp_get_num_procs (void);
56+
extern int __KAI_KMPC_CONVENTION omp_in_parallel (void);
57+
extern int __KAI_KMPC_CONVENTION omp_in_final (void);
58+
extern int __KAI_KMPC_CONVENTION omp_get_active_level (void);
59+
extern int __KAI_KMPC_CONVENTION omp_get_level (void);
60+
extern int __KAI_KMPC_CONVENTION omp_get_ancestor_thread_num (int);
61+
extern int __KAI_KMPC_CONVENTION omp_get_team_size (int);
62+
extern int __KAI_KMPC_CONVENTION omp_get_thread_limit (void);
63+
extern int __KAI_KMPC_CONVENTION omp_get_max_active_levels (void);
64+
extern void __KAI_KMPC_CONVENTION omp_get_schedule (omp_sched_t *, int *);
65+
extern int __KAI_KMPC_CONVENTION omp_get_max_task_priority (void);
66+
67+
/* lock API functions */
68+
typedef struct omp_lock_t {
69+
void * _lk;
70+
} omp_lock_t;
71+
72+
extern void __KAI_KMPC_CONVENTION omp_init_lock (omp_lock_t *);
73+
extern void __KAI_KMPC_CONVENTION omp_set_lock (omp_lock_t *);
74+
extern void __KAI_KMPC_CONVENTION omp_unset_lock (omp_lock_t *);
75+
extern void __KAI_KMPC_CONVENTION omp_destroy_lock (omp_lock_t *);
76+
extern int __KAI_KMPC_CONVENTION omp_test_lock (omp_lock_t *);
77+
78+
/* nested lock API functions */
79+
typedef struct omp_nest_lock_t {
80+
void * _lk;
81+
} omp_nest_lock_t;
82+
83+
extern void __KAI_KMPC_CONVENTION omp_init_nest_lock (omp_nest_lock_t *);
84+
extern void __KAI_KMPC_CONVENTION omp_set_nest_lock (omp_nest_lock_t *);
85+
extern void __KAI_KMPC_CONVENTION omp_unset_nest_lock (omp_nest_lock_t *);
86+
extern void __KAI_KMPC_CONVENTION omp_destroy_nest_lock (omp_nest_lock_t *);
87+
extern int __KAI_KMPC_CONVENTION omp_test_nest_lock (omp_nest_lock_t *);
88+
89+
/* lock hint type for dynamic user lock */
90+
typedef enum omp_lock_hint_t {
91+
omp_lock_hint_none = 0,
92+
omp_lock_hint_uncontended = 1,
93+
omp_lock_hint_contended = (1<<1 ),
94+
omp_lock_hint_nonspeculative = (1<<2 ),
95+
omp_lock_hint_speculative = (1<<3 ),
96+
kmp_lock_hint_hle = (1<<16),
97+
kmp_lock_hint_rtm = (1<<17),
98+
kmp_lock_hint_adaptive = (1<<18)
99+
} omp_lock_hint_t;
100+
101+
/* hinted lock initializers */
102+
extern void __KAI_KMPC_CONVENTION omp_init_lock_with_hint(omp_lock_t *, omp_lock_hint_t);
103+
extern void __KAI_KMPC_CONVENTION omp_init_nest_lock_with_hint(omp_nest_lock_t *, omp_lock_hint_t);
104+
105+
/* time API functions */
106+
extern double __KAI_KMPC_CONVENTION omp_get_wtime (void);
107+
extern double __KAI_KMPC_CONVENTION omp_get_wtick (void);
108+
109+
/* OpenMP 4.0 */
110+
extern int __KAI_KMPC_CONVENTION omp_get_default_device (void);
111+
extern void __KAI_KMPC_CONVENTION omp_set_default_device (int);
112+
extern int __KAI_KMPC_CONVENTION omp_is_initial_device (void);
113+
extern int __KAI_KMPC_CONVENTION omp_get_num_devices (void);
114+
extern int __KAI_KMPC_CONVENTION omp_get_num_teams (void);
115+
extern int __KAI_KMPC_CONVENTION omp_get_team_num (void);
116+
extern int __KAI_KMPC_CONVENTION omp_get_cancellation (void);
117+
118+
# include <stdlib.h>
119+
/* OpenMP 4.5 */
120+
extern int __KAI_KMPC_CONVENTION omp_get_initial_device (void);
121+
extern void* __KAI_KMPC_CONVENTION omp_target_alloc(size_t, int);
122+
extern void __KAI_KMPC_CONVENTION omp_target_free(void *, int);
123+
extern int __KAI_KMPC_CONVENTION omp_target_is_present(void *, int);
124+
extern int __KAI_KMPC_CONVENTION omp_target_memcpy(void *, void *, size_t, size_t, size_t, int, int);
125+
extern int __KAI_KMPC_CONVENTION omp_target_memcpy_rect(void *, void *, size_t, int, const size_t *,
126+
const size_t *, const size_t *, const size_t *, const size_t *, int, int);
127+
extern int __KAI_KMPC_CONVENTION omp_target_associate_ptr(void *, void *, size_t, size_t, int);
128+
extern int __KAI_KMPC_CONVENTION omp_target_disassociate_ptr(void *, int);
129+
130+
/* kmp API functions */
131+
extern int __KAI_KMPC_CONVENTION kmp_get_stacksize (void);
132+
extern void __KAI_KMPC_CONVENTION kmp_set_stacksize (int);
133+
extern size_t __KAI_KMPC_CONVENTION kmp_get_stacksize_s (void);
134+
extern void __KAI_KMPC_CONVENTION kmp_set_stacksize_s (size_t);
135+
extern int __KAI_KMPC_CONVENTION kmp_get_blocktime (void);
136+
extern int __KAI_KMPC_CONVENTION kmp_get_library (void);
137+
extern void __KAI_KMPC_CONVENTION kmp_set_blocktime (int);
138+
extern void __KAI_KMPC_CONVENTION kmp_set_library (int);
139+
extern void __KAI_KMPC_CONVENTION kmp_set_library_serial (void);
140+
extern void __KAI_KMPC_CONVENTION kmp_set_library_turnaround (void);
141+
extern void __KAI_KMPC_CONVENTION kmp_set_library_throughput (void);
142+
extern void __KAI_KMPC_CONVENTION kmp_set_defaults (char const *);
143+
extern void __KAI_KMPC_CONVENTION kmp_set_disp_num_buffers (int);
144+
145+
/* Intel affinity API */
146+
typedef void * kmp_affinity_mask_t;
147+
148+
extern int __KAI_KMPC_CONVENTION kmp_set_affinity (kmp_affinity_mask_t *);
149+
extern int __KAI_KMPC_CONVENTION kmp_get_affinity (kmp_affinity_mask_t *);
150+
extern int __KAI_KMPC_CONVENTION kmp_get_affinity_max_proc (void);
151+
extern void __KAI_KMPC_CONVENTION kmp_create_affinity_mask (kmp_affinity_mask_t *);
152+
extern void __KAI_KMPC_CONVENTION kmp_destroy_affinity_mask (kmp_affinity_mask_t *);
153+
extern int __KAI_KMPC_CONVENTION kmp_set_affinity_mask_proc (int, kmp_affinity_mask_t *);
154+
extern int __KAI_KMPC_CONVENTION kmp_unset_affinity_mask_proc (int, kmp_affinity_mask_t *);
155+
extern int __KAI_KMPC_CONVENTION kmp_get_affinity_mask_proc (int, kmp_affinity_mask_t *);
156+
157+
/* OpenMP 4.0 affinity API */
158+
typedef enum omp_proc_bind_t {
159+
omp_proc_bind_false = 0,
160+
omp_proc_bind_true = 1,
161+
omp_proc_bind_master = 2,
162+
omp_proc_bind_close = 3,
163+
omp_proc_bind_spread = 4
164+
} omp_proc_bind_t;
165+
166+
extern omp_proc_bind_t __KAI_KMPC_CONVENTION omp_get_proc_bind (void);
167+
168+
/* OpenMP 4.5 affinity API */
169+
extern int __KAI_KMPC_CONVENTION omp_get_num_places (void);
170+
extern int __KAI_KMPC_CONVENTION omp_get_place_num_procs (int);
171+
extern void __KAI_KMPC_CONVENTION omp_get_place_proc_ids (int, int *);
172+
extern int __KAI_KMPC_CONVENTION omp_get_place_num (void);
173+
extern int __KAI_KMPC_CONVENTION omp_get_partition_num_places (void);
174+
extern void __KAI_KMPC_CONVENTION omp_get_partition_place_nums (int *);
175+
176+
extern void * __KAI_KMPC_CONVENTION kmp_malloc (size_t);
177+
extern void * __KAI_KMPC_CONVENTION kmp_aligned_malloc (size_t, size_t);
178+
extern void * __KAI_KMPC_CONVENTION kmp_calloc (size_t, size_t);
179+
extern void * __KAI_KMPC_CONVENTION kmp_realloc (void *, size_t);
180+
extern void __KAI_KMPC_CONVENTION kmp_free (void *);
181+
182+
extern void __KAI_KMPC_CONVENTION kmp_set_warnings_on(void);
183+
extern void __KAI_KMPC_CONVENTION kmp_set_warnings_off(void);
184+
185+
# undef __KAI_KMPC_CONVENTION
186+
187+
/* Warning:
188+
The following typedefs are not standard, deprecated and will be removed in a future release.
189+
*/
190+
typedef int omp_int_t;
191+
typedef double omp_wtime_t;
192+
193+
# ifdef __cplusplus
194+
}
195+
# endif
196+
197+
#endif /* __OMP_H */
198+

0 commit comments

Comments
 (0)
Please sign in to comment.