diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-25 18:31:14 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-13 20:42:03 +0000 |
| commit | 6e75b2fbf9a03e6876e0a3c089e0b3ad71876125 (patch) | |
| tree | 99735c2ca8ca6802f71b32a2bd61f048b1fd749e /lib/libomp | |
| parent | fe6060f10f634930ff71b7c50291ddc610da2475 (diff) | |
| parent | d545c2ce5ad1891282e8818b47ffe557c76a86b4 (diff) | |
Diffstat (limited to 'lib/libomp')
| -rw-r--r-- | lib/libomp/kmp_config.h | 6 | ||||
| -rw-r--r-- | lib/libomp/kmp_i18n_default.inc | 47 | ||||
| -rw-r--r-- | lib/libomp/kmp_i18n_id.inc | 59 | ||||
| -rw-r--r-- | lib/libomp/omp-tools.h | 201 | ||||
| -rw-r--r-- | lib/libomp/omp.h | 55 |
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 |
