aboutsummaryrefslogtreecommitdiff
path: root/lib/libomp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2021-08-25 18:31:14 +0000
committerDimitry Andric <dim@FreeBSD.org>2021-11-13 20:42:03 +0000
commit6e75b2fbf9a03e6876e0a3c089e0b3ad71876125 (patch)
tree99735c2ca8ca6802f71b32a2bd61f048b1fd749e /lib/libomp
parentfe6060f10f634930ff71b7c50291ddc610da2475 (diff)
parentd545c2ce5ad1891282e8818b47ffe557c76a86b4 (diff)
Diffstat (limited to 'lib/libomp')
-rw-r--r--lib/libomp/kmp_config.h6
-rw-r--r--lib/libomp/kmp_i18n_default.inc47
-rw-r--r--lib/libomp/kmp_i18n_id.inc59
-rw-r--r--lib/libomp/omp-tools.h201
-rw-r--r--lib/libomp/omp.h55
5 files changed, 344 insertions, 24 deletions
diff --git a/lib/libomp/kmp_config.h b/lib/libomp/kmp_config.h
index 3c1f750351dc..81af653b5327 100644
--- a/lib/libomp/kmp_config.h
+++ b/lib/libomp/kmp_config.h
@@ -45,6 +45,8 @@
#define OMPT_DEBUG LIBOMP_OMPT_DEBUG
#define LIBOMP_OMPT_SUPPORT 1
#define OMPT_SUPPORT LIBOMP_OMPT_SUPPORT
+#define LIBOMP_OMPD_SUPPORT 0
+#define OMPD_SUPPORT LIBOMP_OMPD_SUPPORT
#define LIBOMP_PROFILING_SUPPORT 0
#define OMP_PROFILING_SUPPORT LIBOMP_PROFILING_SUPPORT
#define LIBOMP_OMPT_OPTIONAL 1
@@ -67,10 +69,6 @@
#define KMP_LIBRARY_FILE "libomp.so"
#define KMP_VERSION_MAJOR 5
#define KMP_VERSION_MINOR 0
-#define LIBOMP_TSAN_SUPPORT 0
-#if LIBOMP_TSAN_SUPPORT
-#define TSAN_SUPPORT
-#endif
#define MSVC 0
#define KMP_MSVC_COMPAT MSVC
#define LIBOMP_HAVE_WAITPKG_INTRINSICS 1
diff --git a/lib/libomp/kmp_i18n_default.inc b/lib/libomp/kmp_i18n_default.inc
index a0e200808292..807b3c4786e2 100644
--- a/lib/libomp/kmp_i18n_default.inc
+++ b/lib/libomp/kmp_i18n_default.inc
@@ -1,6 +1,6 @@
// $FreeBSD$
// Do not edit this file! //
-// The file was generated from en_US.txt by message-converter.pl on Mon Apr 26 14:12:23 2021. //
+// The file was generated from en_US.txt by message-converter.pl on Thu Aug 26 11:36:17 2021. //
static char const *
__kmp_i18n_default_meta[] =
@@ -73,6 +73,30 @@ __kmp_i18n_default_strings[] =
"[device]",
"[host]",
"tile",
+ "tiles",
+ "threads",
+ "cores",
+ "socket",
+ "sockets",
+ "die",
+ "dice",
+ "module",
+ "modules",
+ "L1 cache",
+ "L1 caches",
+ "L2 cache",
+ "L2 caches",
+ "L3 cache",
+ "L3 caches",
+ "NUMA domain",
+ "NUMA domains",
+ "processor group",
+ "processor groups",
+ "unknown",
+ "cpuid leaf 31 not supported",
+ "Hwloc api failure",
+ "LL cache",
+ "LL caches",
NULL
};
@@ -282,6 +306,8 @@ __kmp_i18n_default_messages[] =
"%1$s: %2$d packages x %3$d nodes/pkg x %4$d tiles/node x %5$d cores/tile x %6$d threads/core (%7$d total cores)",
"OMPT: Cannot determine workshare type; using the default (loop) instead. This issue is fixed in an up-to-date compiler.",
"Allocator %1$s is not available, will use default allocator.",
+ "%1$s: %2$s (%3$d total cores)",
+ "%1$s: granularity setting: %2$s does not exist in topology. Using granularity=%3$s instead.",
"%1$s must be bound to a work-sharing or work-queuing construct with an \"ordered\" clause",
"Detected end of %1$s without first executing a corresponding beginning.",
"Iteration range too large in %1$s.",
@@ -365,6 +391,18 @@ __kmp_i18n_default_messages[] =
"OMP: pid %1$s tid %2$s thread %3$s bound to OS proc set {%4$s}",
"%1$s routine deprecated, please use %2$s instead.",
"libgomp compatibility layer does not support OpenMP feature: %1$s",
+ "KMP_HW_SUBSET ignored: too many Dies requested.",
+ "%1$s: Affinity capable, using global cpuid leaf %2$d info",
+ "%1$s: Affinity not capable, using local cpuid leaf %2$d info",
+ "%1$s: Affinity not capable, using hwloc.",
+ "%1$s: Encountered user-directed error: %2$s.",
+ "%1$s: Encountered user-directed warning: %2$s.",
+ "Failed to create teams between lower bound (%1$d) and upper bound (%2$d).",
+ "KMP_HW_SUBSET ignored: %1$s: too many requested.",
+ "KMP_HW_SUBSET ignored: %1$s: level not detected in machine topology.",
+ "KMP_HW_SUBSET ignored: %1$s, %2$s: layers are equivalent, please only specify one.",
+ "KMP_HW_SUBSET ignored: %1$s layer should come after %2$s.",
+ "%1$s: topology layer \"%2$s\" is equivalent to \"%3$s\".",
NULL
};
@@ -399,6 +437,7 @@ __kmp_i18n_default_hints[] =
"You may want to use an %1$s library with version %2$s.",
"System error #193 is \"Bad format of EXE or DLL file\". Usually it means the file is found, but it is corrupted or a file for another architecture. Check whether \"%1$s\" is a file for %2$s architecture.",
"System-related limit on the number of threads.",
+ "Try setting new bounds (preferably less than or equal to %1$d) for num_teams clause.",
NULL
};
@@ -413,10 +452,10 @@ __kmp_i18n_sections[] =
{
{ 0, NULL },
{ 5, __kmp_i18n_default_meta },
- { 55, __kmp_i18n_default_strings },
+ { 79, __kmp_i18n_default_strings },
{ 6, __kmp_i18n_default_formats },
- { 272, __kmp_i18n_default_messages },
- { 27, __kmp_i18n_default_hints },
+ { 286, __kmp_i18n_default_messages },
+ { 28, __kmp_i18n_default_hints },
{ 0, NULL }
};
diff --git a/lib/libomp/kmp_i18n_id.inc b/lib/libomp/kmp_i18n_id.inc
index 3b16c3c6e998..bb542f544e0c 100644
--- a/lib/libomp/kmp_i18n_id.inc
+++ b/lib/libomp/kmp_i18n_id.inc
@@ -1,6 +1,6 @@
// $FreeBSD$
// Do not edit this file! //
-// The file was generated from en_US.txt by message-converter.pl on Mon Apr 26 14:12:23 2021. //
+// The file was generated from en_US.txt by message-converter.pl on Thu Aug 26 11:36:17 2021. //
enum kmp_i18n_id {
@@ -73,6 +73,30 @@ enum kmp_i18n_id {
kmp_i18n_str_Device,
kmp_i18n_str_Host,
kmp_i18n_str_Tile,
+ kmp_i18n_str_Tiles,
+ kmp_i18n_str_Threads,
+ kmp_i18n_str_Cores,
+ kmp_i18n_str_Socket,
+ kmp_i18n_str_Sockets,
+ kmp_i18n_str_Die,
+ kmp_i18n_str_Dice,
+ kmp_i18n_str_Module,
+ kmp_i18n_str_Modules,
+ kmp_i18n_str_L1Cache,
+ kmp_i18n_str_L1Caches,
+ kmp_i18n_str_L2Cache,
+ kmp_i18n_str_L2Caches,
+ kmp_i18n_str_L3Cache,
+ kmp_i18n_str_L3Caches,
+ kmp_i18n_str_NumaDomain,
+ kmp_i18n_str_NumaDomains,
+ kmp_i18n_str_ProcGroup,
+ kmp_i18n_str_ProcGroups,
+ kmp_i18n_str_Unknown,
+ kmp_i18n_str_NoLeaf31Support,
+ kmp_i18n_str_HwlocFailed,
+ kmp_i18n_str_LLCache,
+ kmp_i18n_str_LLCaches,
kmp_i18n_str_last,
// Set #3, formats.
@@ -276,6 +300,8 @@ enum kmp_i18n_id {
kmp_i18n_msg_TopologyExtraNoTi,
kmp_i18n_msg_OmptOutdatedWorkshare,
kmp_i18n_msg_OmpNoAllocator,
+ kmp_i18n_msg_TopologyGeneric,
+ kmp_i18n_msg_AffGranularityBad,
kmp_i18n_msg_CnsBoundToWorksharing,
kmp_i18n_msg_CnsDetectedEnd,
kmp_i18n_msg_CnsIterationRangeTooLarge,
@@ -295,8 +321,8 @@ enum kmp_i18n_id {
kmp_i18n_msg_OBSOLETE37,
kmp_i18n_msg_IttUnknownGroup,
kmp_i18n_msg_IttEnvVarTooLong,
- kmp_i18n_msg_AffUseGlobCpuidL11,
- kmp_i18n_msg_AffNotCapableUseLocCpuidL11,
+ kmp_i18n_msg_OBSOLETE38,
+ kmp_i18n_msg_OBSOLETE39,
kmp_i18n_msg_AffInfoStr,
kmp_i18n_msg_AffInfoStrStr,
kmp_i18n_msg_OSProcToPhysicalThreadMap,
@@ -311,20 +337,20 @@ enum kmp_i18n_id {
kmp_i18n_msg_CantLoadBalUsing,
kmp_i18n_msg_AffNotCapableUsePthread,
kmp_i18n_msg_AffUsePthread,
- kmp_i18n_msg_OBSOLETE38,
- kmp_i18n_msg_OBSOLETE39,
kmp_i18n_msg_OBSOLETE40,
kmp_i18n_msg_OBSOLETE41,
+ kmp_i18n_msg_OBSOLETE42,
+ kmp_i18n_msg_OBSOLETE43,
kmp_i18n_msg_NthSyntaxError,
kmp_i18n_msg_NthSpacesNotAllowed,
kmp_i18n_msg_AffStrParseFilename,
- kmp_i18n_msg_OBSOLETE42,
+ kmp_i18n_msg_OBSOLETE44,
kmp_i18n_msg_AffTypeCantUseMultGroups,
kmp_i18n_msg_AffGranCantUseMultGroups,
kmp_i18n_msg_AffWindowsProcGroupMap,
kmp_i18n_msg_AffOSProcToGroup,
kmp_i18n_msg_AffBalancedNotAvail,
- kmp_i18n_msg_OBSOLETE43,
+ kmp_i18n_msg_OBSOLETE45,
kmp_i18n_msg_EnvLockWarn,
kmp_i18n_msg_FutexNotSupported,
kmp_i18n_msg_AffGranUsing,
@@ -359,12 +385,24 @@ enum kmp_i18n_id {
kmp_i18n_msg_AffFormatDefault,
kmp_i18n_msg_APIDeprecated,
kmp_i18n_msg_GompFeatureNotSupported,
+ kmp_i18n_msg_AffHWSubsetManyDies,
+ kmp_i18n_msg_AffUseGlobCpuidL,
+ kmp_i18n_msg_AffNotCapableUseLocCpuidL,
+ kmp_i18n_msg_AffNotUsingHwloc,
+ kmp_i18n_msg_UserDirectedError,
+ kmp_i18n_msg_UserDirectedWarning,
+ kmp_i18n_msg_FailedToCreateTeam,
+ kmp_i18n_msg_AffHWSubsetManyGeneric,
+ kmp_i18n_msg_AffHWSubsetNotExistGeneric,
+ kmp_i18n_msg_AffHWSubsetEqvLayers,
+ kmp_i18n_msg_AffHWSubsetOutOfOrder,
+ kmp_i18n_msg_AffEqualTopologyTypes,
kmp_i18n_msg_last,
// Set #5, hints.
kmp_i18n_hnt_first = 327680,
kmp_i18n_hnt_SubmitBugReport,
- kmp_i18n_hnt_OBSOLETE44,
+ kmp_i18n_hnt_OBSOLETE46,
kmp_i18n_hnt_ChangeStackLimit,
kmp_i18n_hnt_Unset_ALL_THREADS,
kmp_i18n_hnt_Set_ALL_THREADPRIVATE,
@@ -386,10 +424,11 @@ enum kmp_i18n_id {
kmp_i18n_hnt_DefaultScheduleKindUsed,
kmp_i18n_hnt_GetNewerLibrary,
kmp_i18n_hnt_CheckEnvVar,
- kmp_i18n_hnt_OBSOLETE45,
- kmp_i18n_hnt_OBSOLETE46,
+ kmp_i18n_hnt_OBSOLETE47,
+ kmp_i18n_hnt_OBSOLETE48,
kmp_i18n_hnt_BadExeFormat,
kmp_i18n_hnt_SystemLimitOnThreads,
+ kmp_i18n_hnt_SetNewBound,
kmp_i18n_hnt_last,
kmp_i18n_xxx_lastest
diff --git a/lib/libomp/omp-tools.h b/lib/libomp/omp-tools.h
index 640354a8aa80..1749be7e0508 100644
--- a/lib/libomp/omp-tools.h
+++ b/lib/libomp/omp-tools.h
@@ -484,6 +484,8 @@ typedef enum ompd_rc_t {
ompd_rc_device_read_error = 8,
ompd_rc_device_write_error = 9,
ompd_rc_nomem = 10,
+ ompd_rc_incomplete = 11,
+ ompd_rc_callback_error = 12
} ompd_rc_t;
typedef void (*ompt_interface_fn_t) (void);
@@ -1100,6 +1102,13 @@ typedef void (*ompt_callback_error_t) (
const void *codeptr_ra
);
+typedef struct ompt_record_error_t {
+ ompt_severity_t severity;
+ const char *message;
+ size_t length;
+ const void *codeptr_ra;
+} ompt_record_error_t;
+
typedef struct ompd_address_t {
ompd_seg_t segment;
ompd_addr_t address;
@@ -1127,6 +1136,198 @@ typedef struct ompd_device_type_sizes_t {
uint8_t sizeof_pointer;
} ompd_device_type_sizes_t;
+void ompd_dll_locations_valid(void);
+
+typedef ompd_rc_t (*ompd_callback_memory_alloc_fn_t)(ompd_size_t nbytes,
+ void **ptr);
+
+typedef ompd_rc_t (*ompd_callback_memory_free_fn_t)(void *ptr);
+
+typedef ompd_rc_t (*ompd_callback_get_thread_context_for_thread_id_fn_t)(
+ ompd_address_space_context_t *address_space_context, ompd_thread_id_t kind,
+ ompd_size_t sizeof_thread_id, const void *thread_id,
+ ompd_thread_context_t **thread_context);
+
+typedef ompd_rc_t (*ompd_callback_sizeof_fn_t)(
+ ompd_address_space_context_t *address_space_context,
+ ompd_device_type_sizes_t *sizes);
+
+typedef ompd_rc_t (*ompd_callback_symbol_addr_fn_t)(
+ ompd_address_space_context_t *address_space_context,
+ ompd_thread_context_t *thread_context, const char *symbol_name,
+ ompd_address_t *symbol_addr, const char *file_name);
+
+typedef ompd_rc_t (*ompd_callback_memory_read_fn_t)(
+ ompd_address_space_context_t *address_space_context,
+ ompd_thread_context_t *thread_context, const ompd_address_t *addr,
+ ompd_size_t nbytes, void *buffer);
+
+typedef ompd_rc_t (*ompd_callback_memory_write_fn_t)(
+ ompd_address_space_context_t *address_space_context,
+ ompd_thread_context_t *thread_context, const ompd_address_t *addr,
+ ompd_size_t nbytes, const void *buffer);
+
+typedef ompd_rc_t (*ompd_callback_device_host_fn_t)(
+ ompd_address_space_context_t *address_space_context, const void *input,
+ ompd_size_t unit_size, ompd_size_t count, void *output);
+
+typedef ompd_rc_t (*ompd_callback_print_string_fn_t)(const char *string,
+ int category);
+
+typedef struct ompd_callbacks_t {
+ ompd_callback_memory_alloc_fn_t alloc_memory;
+ ompd_callback_memory_free_fn_t free_memory;
+ ompd_callback_print_string_fn_t print_string;
+ ompd_callback_sizeof_fn_t sizeof_type;
+ ompd_callback_symbol_addr_fn_t symbol_addr_lookup;
+ ompd_callback_memory_read_fn_t read_memory;
+ ompd_callback_memory_write_fn_t write_memory;
+ ompd_callback_memory_read_fn_t read_string;
+ ompd_callback_device_host_fn_t device_to_host;
+ ompd_callback_device_host_fn_t host_to_device;
+ ompd_callback_get_thread_context_for_thread_id_fn_t
+ get_thread_context_for_thread_id;
+} ompd_callbacks_t;
+
+void ompd_bp_parallel_begin(void);
+
+void ompd_bp_parallel_end(void);
+
+void ompd_bp_task_begin(void);
+
+void ompd_bp_task_end(void);
+
+void ompd_bp_thread_begin(void);
+
+void ompd_bp_thread_end(void);
+
+void ompd_bp_device_begin(void);
+
+void ompd_bp_device_end(void);
+
+ompd_rc_t ompd_initialize(ompd_word_t api_version,
+ const ompd_callbacks_t *callbacks);
+
+ompd_rc_t ompd_get_api_version(ompd_word_t *version);
+
+ompd_rc_t ompd_get_version_string(const char **string);
+
+ompd_rc_t ompd_finalize(void);
+
+ompd_rc_t ompd_process_initialize(ompd_address_space_context_t *context,
+ ompd_address_space_handle_t **handle);
+
+ompd_rc_t ompd_device_initialize(ompd_address_space_handle_t *process_handle,
+ ompd_address_space_context_t *device_context,
+ ompd_device_t kind, ompd_size_t sizeof_id,
+ void *id,
+ ompd_address_space_handle_t **device_handle);
+
+ompd_rc_t ompd_rel_address_space_handle(ompd_address_space_handle_t *handle);
+
+ompd_rc_t ompd_get_omp_version(ompd_address_space_handle_t *address_space,
+ ompd_word_t *omp_version);
+
+ompd_rc_t
+ompd_get_omp_version_string(ompd_address_space_handle_t *address_space,
+ const char **string);
+
+ompd_rc_t ompd_get_thread_in_parallel(ompd_parallel_handle_t *parallel_handle,
+ int thread_num,
+ ompd_thread_handle_t **thread_handle);
+
+ompd_rc_t ompd_get_thread_handle(ompd_address_space_handle_t *handle,
+ ompd_thread_id_t kind,
+ ompd_size_t sizeof_thread_id,
+ const void *thread_id,
+ ompd_thread_handle_t **thread_handle);
+
+ompd_rc_t ompd_rel_thread_handle(ompd_thread_handle_t *thread_handle);
+
+ompd_rc_t ompd_thread_handle_compare(ompd_thread_handle_t *thread_handle_1,
+ ompd_thread_handle_t *thread_handle_2,
+ int *cmp_value);
+
+ompd_rc_t ompd_get_thread_id(ompd_thread_handle_t *thread_handle,
+ ompd_thread_id_t kind,
+ ompd_size_t sizeof_thread_id, void *thread_id);
+
+ompd_rc_t
+ompd_get_curr_parallel_handle(ompd_thread_handle_t *thread_handle,
+ ompd_parallel_handle_t **parallel_handle);
+
+ompd_rc_t ompd_get_enclosing_parallel_handle(
+ ompd_parallel_handle_t *parallel_handle,
+ ompd_parallel_handle_t **enclosing_parallel_handle);
+
+ompd_rc_t
+ompd_get_task_parallel_handle(ompd_task_handle_t *task_handle,
+ ompd_parallel_handle_t **task_parallel_handle);
+
+ompd_rc_t ompd_rel_parallel_handle(ompd_parallel_handle_t *parallel_handle);
+
+ompd_rc_t
+ompd_parallel_handle_compare(ompd_parallel_handle_t *parallel_handle_1,
+ ompd_parallel_handle_t *parallel_handle_2,
+ int *cmp_value);
+
+ompd_rc_t ompd_get_curr_task_handle(ompd_thread_handle_t *thread_handle,
+ ompd_task_handle_t **task_handle);
+
+ompd_rc_t
+ompd_get_generating_task_handle(ompd_task_handle_t *task_handle,
+ ompd_task_handle_t **generating_task_handle);
+
+ompd_rc_t
+ompd_get_scheduling_task_handle(ompd_task_handle_t *task_handle,
+ ompd_task_handle_t **scheduling_task_handle);
+
+ompd_rc_t ompd_get_task_in_parallel(ompd_parallel_handle_t *parallel_handle,
+ int thread_num,
+ ompd_task_handle_t **task_handle);
+
+ompd_rc_t ompd_rel_task_handle(ompd_task_handle_t *task_handle);
+
+ompd_rc_t ompd_task_handle_compare(ompd_task_handle_t *task_handle_1,
+ ompd_task_handle_t *task_handle_2,
+ int *cmp_value);
+
+ompd_rc_t ompd_get_task_function(ompd_task_handle_t *task_handle,
+ ompd_address_t *entry_point);
+
+ompd_rc_t ompd_get_task_frame(ompd_task_handle_t *task_handle,
+ ompd_frame_info_t *exit_frame,
+ ompd_frame_info_t *enter_frame);
+
+ompd_rc_t
+ompd_enumerate_states(ompd_address_space_handle_t *address_space_handle,
+ ompd_word_t current_state, ompd_word_t *next_state,
+ const char **next_state_name, ompd_word_t *more_enums);
+
+ompd_rc_t ompd_get_state(ompd_thread_handle_t *thread_handle,
+ ompd_word_t *state, ompd_wait_id_t *wait_id);
+
+ompd_rc_t
+ompd_get_display_control_vars(ompd_address_space_handle_t *address_space_handle,
+ const char *const **control_vars);
+
+ompd_rc_t ompd_rel_display_control_vars(const char *const **control_vars);
+
+ompd_rc_t ompd_enumerate_icvs(ompd_address_space_handle_t *handle,
+ ompd_icv_id_t current, ompd_icv_id_t *next_id,
+ const char **next_icv_name,
+ ompd_scope_t *next_scope, int *more);
+
+ompd_rc_t ompd_get_icv_from_scope(void *handle, ompd_scope_t scope,
+ ompd_icv_id_t icv_id, ompd_word_t *icv_value);
+
+ompd_rc_t ompd_get_icv_string_from_scope(void *handle, ompd_scope_t scope,
+ ompd_icv_id_t icv_id,
+ const char **icv_string);
+
+ompd_rc_t ompd_get_tool_data(void *handle, ompd_scope_t scope,
+ ompd_word_t *value, ompd_address_t *ptr);
+
typedef struct ompt_record_ompt_t {
ompt_callbacks_t type;
ompt_device_time_t time;
diff --git a/lib/libomp/omp.h b/lib/libomp/omp.h
index 8c3537eb754c..586d13de399c 100644
--- a/lib/libomp/omp.h
+++ b/lib/libomp/omp.h
@@ -142,12 +142,12 @@
extern int __KAI_KMPC_CONVENTION omp_get_initial_device (void);
extern void* __KAI_KMPC_CONVENTION omp_target_alloc(size_t, int);
extern void __KAI_KMPC_CONVENTION omp_target_free(void *, int);
- extern int __KAI_KMPC_CONVENTION omp_target_is_present(void *, int);
- extern int __KAI_KMPC_CONVENTION omp_target_memcpy(void *, void *, size_t, size_t, size_t, int, int);
- extern int __KAI_KMPC_CONVENTION omp_target_memcpy_rect(void *, void *, size_t, int, const size_t *,
+ extern int __KAI_KMPC_CONVENTION omp_target_is_present(const void *, int);
+ extern int __KAI_KMPC_CONVENTION omp_target_memcpy(void *, const void *, size_t, size_t, size_t, int, int);
+ extern int __KAI_KMPC_CONVENTION omp_target_memcpy_rect(void *, const void *, size_t, int, const size_t *,
const size_t *, const size_t *, const size_t *, const size_t *, int, int);
- extern int __KAI_KMPC_CONVENTION omp_target_associate_ptr(void *, void *, size_t, size_t, int);
- extern int __KAI_KMPC_CONVENTION omp_target_disassociate_ptr(void *, int);
+ extern int __KAI_KMPC_CONVENTION omp_target_associate_ptr(const void *, const void *, size_t, size_t, int);
+ extern int __KAI_KMPC_CONVENTION omp_target_disassociate_ptr(const void *, int);
/* OpenMP 5.0 */
extern int __KAI_KMPC_CONVENTION omp_get_device_num (void);
@@ -183,6 +183,16 @@
omp_irc_other = -6
} omp_interop_rc_t;
+ typedef enum omp_interop_fr {
+ omp_ifr_cuda = 1,
+ omp_ifr_cuda_driver = 2,
+ omp_ifr_opencl = 3,
+ omp_ifr_sycl = 4,
+ omp_ifr_hip = 5,
+ omp_ifr_level_zero = 6,
+ omp_ifr_last = 7
+ } omp_interop_fr_t;
+
typedef void * omp_interop_t;
/*!
@@ -212,7 +222,7 @@
/*!
* The `omp_get_interop_rc_desc` routine retrieves a description of the return code associated with an `omp_interop_t` object.
*/
- extern const char * __KAI_KMPC_CONVENTION omp_get_interop_rc_desc(const omp_interop_rc_t, omp_interop_rc_t);
+ extern const char * __KAI_KMPC_CONVENTION omp_get_interop_rc_desc(const omp_interop_t, omp_interop_rc_t);
/* OpenMP 5.1 device memory routines */
@@ -231,6 +241,7 @@
* The `omp_get_mapped_ptr` routine returns the device pointer that is associated with a host pointer for a given device.
*/
extern void * __KAI_KMPC_CONVENTION omp_get_mapped_ptr(const void *, int);
+ extern int __KAI_KMPC_CONVENTION omp_target_is_accessible(const void *, size_t, int);
/* kmp API functions */
extern int __KAI_KMPC_CONVENTION kmp_get_stacksize (void);
@@ -358,12 +369,21 @@
extern __KMP_IMP omp_allocator_handle_t const omp_cgroup_mem_alloc;
extern __KMP_IMP omp_allocator_handle_t const omp_pteam_mem_alloc;
extern __KMP_IMP omp_allocator_handle_t const omp_thread_mem_alloc;
+ /* Preview of target memory support */
+ extern __KMP_IMP omp_allocator_handle_t const llvm_omp_target_host_mem_alloc;
+ extern __KMP_IMP omp_allocator_handle_t const llvm_omp_target_shared_mem_alloc;
+ extern __KMP_IMP omp_allocator_handle_t const llvm_omp_target_device_mem_alloc;
+
typedef omp_uintptr_t omp_memspace_handle_t;
extern __KMP_IMP omp_memspace_handle_t const omp_default_mem_space;
extern __KMP_IMP omp_memspace_handle_t const omp_large_cap_mem_space;
extern __KMP_IMP omp_memspace_handle_t const omp_const_mem_space;
extern __KMP_IMP omp_memspace_handle_t const omp_high_bw_mem_space;
extern __KMP_IMP omp_memspace_handle_t const omp_low_lat_mem_space;
+ /* Preview of target memory support */
+ extern __KMP_IMP omp_memspace_handle_t const llvm_omp_target_host_mem_space;
+ extern __KMP_IMP omp_memspace_handle_t const llvm_omp_target_shared_mem_space;
+ extern __KMP_IMP omp_memspace_handle_t const llvm_omp_target_device_mem_space;
# else
# if __cplusplus >= 201103
typedef enum omp_allocator_handle_t : omp_uintptr_t
@@ -380,6 +400,10 @@
omp_cgroup_mem_alloc = 6,
omp_pteam_mem_alloc = 7,
omp_thread_mem_alloc = 8,
+ /* Preview of target memory support */
+ llvm_omp_target_host_mem_alloc = 100,
+ llvm_omp_target_shared_mem_alloc = 101,
+ llvm_omp_target_device_mem_alloc = 102,
KMP_ALLOCATOR_MAX_HANDLE = UINTPTR_MAX
} omp_allocator_handle_t;
# if __cplusplus >= 201103
@@ -393,6 +417,10 @@
omp_const_mem_space = 2,
omp_high_bw_mem_space = 3,
omp_low_lat_mem_space = 4,
+ /* Preview of target memory support */
+ llvm_omp_target_host_mem_space = 100,
+ llvm_omp_target_shared_mem_space = 101,
+ llvm_omp_target_device_mem_space = 102,
KMP_MEMSPACE_MAX_HANDLE = UINTPTR_MAX
} omp_memspace_handle_t;
# endif
@@ -443,9 +471,24 @@
extern int __KAI_KMPC_CONVENTION omp_get_supported_active_levels(void);
+ /* OpenMP 5.1 */
+ extern void __KAI_KMPC_CONVENTION omp_set_num_teams(int num_teams);
+ extern int __KAI_KMPC_CONVENTION omp_get_max_teams(void);
+ extern void __KAI_KMPC_CONVENTION omp_set_teams_thread_limit(int limit);
+ extern int __KAI_KMPC_CONVENTION omp_get_teams_thread_limit(void);
+
/* OpenMP 5.1 Display Environment */
extern void omp_display_env(int verbose);
+# if defined(_OPENMP) && _OPENMP >= 201811
+ #pragma omp begin declare variant match(device={kind(host)})
+ static inline int omp_is_initial_device(void) { return 1; }
+ #pragma omp end declare variant
+ #pragma omp begin declare variant match(device={kind(nohost)})
+ static inline int omp_is_initial_device(void) { return 0; }
+ #pragma omp end declare variant
+# endif
+
# undef __KAI_KMPC_CONVENTION
# undef __KMP_IMP