Skip to content

Commit f303509

Browse files
committed
merge main into amd-staging
2 parents ab5f87f + 8100bd5 commit f303509

File tree

12 files changed

+1004
-74
lines changed

12 files changed

+1004
-74
lines changed

openmp/runtime/src/dllexports

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,18 @@ kmp_set_disp_num_buffers 890
534534
omp_get_device_num 896
535535
omp_init_allocator 897
536536
omp_destroy_allocator 898
537+
omp_get_devices_memspace 810
538+
omp_get_device_memspace 811
539+
omp_get_devices_and_host_memspace 812
540+
omp_get_device_and_host_memspace 813
541+
omp_get_devices_all_memspace 814
542+
omp_get_devices_allocator 815
543+
omp_get_device_allocator 816
544+
omp_get_devices_and_host_allocator 817
545+
omp_get_device_and_host_allocator 818
546+
omp_get_devices_all_allocator 819
547+
omp_get_memspace_num_resources 820
548+
omp_get_submemspace 821
537549
omp_get_memory_space 900
538550
omp_destroy_memory_space 901
539551
%ifndef stub
@@ -607,6 +619,7 @@ kmp_set_disp_num_buffers 890
607619
llvm_omp_target_host_mem_space DATA
608620
llvm_omp_target_shared_mem_space DATA
609621
llvm_omp_target_device_mem_space DATA
622+
omp_null_mem_space DATA
610623

611624
%ifndef stub
612625
# Ordinals between 900 and 999 are reserved

openmp/runtime/src/include/omp.h.var

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,13 @@
358358
omp_atk_fallback = 5,
359359
omp_atk_fb_data = 6,
360360
omp_atk_pinned = 7,
361-
omp_atk_partition = 8
361+
omp_atk_partition = 8,
362+
omp_atk_pin_device = 9,
363+
omp_atk_preferred_device = 10,
364+
omp_atk_device_access = 11,
365+
omp_atk_target_access = 12,
366+
omp_atk_atomic_scope = 13,
367+
omp_atk_part_size = 14
362368
} omp_alloctrait_key_t;
363369

364370
typedef enum {
@@ -369,7 +375,7 @@
369375
omp_atv_serialized = 5,
370376
omp_atv_sequential = omp_atv_serialized, // (deprecated)
371377
omp_atv_private = 6,
372-
omp_atv_all = 7,
378+
omp_atv_device = 7,
373379
omp_atv_thread = 8,
374380
omp_atv_pteam = 9,
375381
omp_atv_cgroup = 10,
@@ -380,7 +386,11 @@
380386
omp_atv_environment = 15,
381387
omp_atv_nearest = 16,
382388
omp_atv_blocked = 17,
383-
omp_atv_interleaved = 18
389+
omp_atv_interleaved = 18,
390+
omp_atv_all = 19,
391+
omp_atv_single = 20,
392+
omp_atv_multiple = 21,
393+
omp_atv_memspace = 22
384394
} omp_alloctrait_value_t;
385395
#define omp_atv_default ((omp_uintptr_t)-1)
386396

@@ -408,6 +418,7 @@
408418
extern __KMP_IMP omp_allocator_handle_t const ompx_pinned_mem_alloc;
409419

410420
typedef omp_uintptr_t omp_memspace_handle_t;
421+
extern __KMP_IMP omp_memspace_handle_t const omp_null_mem_space;
411422
extern __KMP_IMP omp_memspace_handle_t const omp_default_mem_space;
412423
extern __KMP_IMP omp_memspace_handle_t const omp_large_cap_mem_space;
413424
extern __KMP_IMP omp_memspace_handle_t const omp_const_mem_space;
@@ -445,7 +456,8 @@
445456
typedef enum omp_memspace_handle_t
446457
# endif
447458
{
448-
omp_default_mem_space = 0,
459+
omp_null_mem_space = 0,
460+
omp_default_mem_space = 99,
449461
omp_large_cap_mem_space = 1,
450462
omp_const_mem_space = 2,
451463
omp_high_bw_mem_space = 3,
@@ -488,6 +500,20 @@
488500
extern void __KAI_KMPC_CONVENTION omp_free(void *ptr, omp_allocator_handle_t a);
489501
# endif
490502

503+
/* OpenMP TR11 routines to get memory spaces and allocators */
504+
extern omp_memspace_handle_t omp_get_devices_memspace(int ndevs, const int *devs, omp_memspace_handle_t memspace);
505+
extern omp_memspace_handle_t omp_get_device_memspace(int dev, omp_memspace_handle_t memspace);
506+
extern omp_memspace_handle_t omp_get_devices_and_host_memspace(int ndevs, const int *devs, omp_memspace_handle_t memspace);
507+
extern omp_memspace_handle_t omp_get_device_and_host_memspace(int dev, omp_memspace_handle_t memspace);
508+
extern omp_memspace_handle_t omp_get_devices_all_memspace(omp_memspace_handle_t memspace);
509+
extern omp_allocator_handle_t omp_get_devices_allocator(int ndevs, const int *devs, omp_memspace_handle_t memspace);
510+
extern omp_allocator_handle_t omp_get_device_allocator(int dev, omp_memspace_handle_t memspace);
511+
extern omp_allocator_handle_t omp_get_devices_and_host_allocator(int ndevs, const int *devs, omp_memspace_handle_t memspace);
512+
extern omp_allocator_handle_t omp_get_device_and_host_allocator(int dev, omp_memspace_handle_t memspace);
513+
extern omp_allocator_handle_t omp_get_devices_all_allocator(omp_memspace_handle_t memspace);
514+
extern int omp_get_memspace_num_resources(omp_memspace_handle_t memspace);
515+
extern omp_memspace_handle_t omp_get_submemspace(omp_memspace_handle_t memspace, int num_resources, int *resources);
516+
491517
/* OpenMP 5.0 Affinity Format */
492518
extern void __KAI_KMPC_CONVENTION omp_set_affinity_format(char const *);
493519
extern size_t __KAI_KMPC_CONVENTION omp_get_affinity_format(char *, size_t);

openmp/runtime/src/include/omp_lib.F90.var

Lines changed: 104 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,12 @@
145145
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_fb_data = 6
146146
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pinned = 7
147147
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_partition = 8
148+
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_pin_device = 9
149+
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_preferred_device = 10
150+
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_device_access = 11
151+
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_target_access = 12
152+
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_atomic_scope = 13
153+
integer (kind=omp_alloctrait_key_kind), parameter, public :: omp_atk_part_size = 14
148154

149155
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_default = -1
150156
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_false = 0
@@ -154,7 +160,7 @@
154160
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_serialized = 5
155161
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_sequential = omp_atv_serialized
156162
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_private = 6
157-
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_all = 7
163+
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_device = 7
158164
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_thread = 8
159165
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_pteam = 9
160166
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_cgroup = 10
@@ -166,6 +172,10 @@
166172
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_nearest = 16
167173
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_blocked = 17
168174
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_interleaved = 18
175+
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_all = 19
176+
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_single = 20
177+
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_multiple = 21
178+
integer (kind=omp_alloctrait_val_kind), parameter, public :: omp_atv_memspace = 22
169179

170180
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_null_allocator = 0
171181
integer (kind=omp_allocator_handle_kind), parameter, public :: omp_default_mem_alloc = 1
@@ -182,7 +192,8 @@
182192
! Preview of pinned memory support
183193
integer (kind=omp_allocator_handle_kind), parameter :: ompx_pinned_mem_alloc = 120
184194

185-
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_default_mem_space = 0
195+
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_null_mem_space = 0
196+
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_default_mem_space = 99
186197
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_large_cap_mem_space = 1
187198
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_const_mem_space = 2
188199
integer (kind=omp_memspace_handle_kind), parameter, public :: omp_high_bw_mem_space = 3
@@ -834,6 +845,97 @@
834845
logical (kind=omp_logical_kind) omp_in_explicit_task
835846
end function omp_in_explicit_task
836847

848+
function omp_get_devices_memspace(ndevs, devs, memspace)
849+
use omp_lib_kinds
850+
integer(omp_memspace_handle_kind) :: omp_get_devices_memspace
851+
integer, intent(in) :: ndevs
852+
integer, intent(in) :: devs(*)
853+
integer(omp_memspace_handle_kind), intent(in) :: memspace
854+
end function omp_get_devices_memspace
855+
856+
function omp_get_device_memspace(dev, memspace)
857+
use omp_lib_kinds
858+
integer(omp_memspace_handle_kind) :: omp_get_device_memspace
859+
integer, intent(in) :: dev
860+
integer(omp_memspace_handle_kind), intent(in) :: memspace
861+
end function omp_get_device_memspace
862+
863+
function omp_get_devices_and_host_memspace(ndevs, devs, memspace)
864+
use omp_lib_kinds
865+
integer(omp_memspace_handle_kind) :: &
866+
omp_get_devices_and_host_memspace
867+
integer, intent(in) :: ndevs
868+
integer, intent(in) :: devs(*)
869+
integer(omp_memspace_handle_kind), intent(in) :: memspace
870+
end function omp_get_devices_and_host_memspace
871+
872+
function omp_get_device_and_host_memspace(dev, memspace)
873+
use omp_lib_kinds
874+
integer(omp_memspace_handle_kind) :: &
875+
omp_get_device_and_host_memspace
876+
integer, intent(in) :: dev
877+
integer(omp_memspace_handle_kind), intent(in) :: memspace
878+
end function omp_get_device_and_host_memspace
879+
880+
function omp_get_devices_all_memspace(memspace)
881+
use omp_lib_kinds
882+
integer(omp_memspace_handle_kind) :: omp_get_devices_all_memspace
883+
integer(omp_memspace_handle_kind), intent(in) :: memspace
884+
end function omp_get_devices_all_memspace
885+
886+
function omp_get_devices_allocator(ndevs, devs, memspace)
887+
use omp_lib_kinds
888+
integer(omp_allocator_handle_kind) :: omp_get_devices_allocator
889+
integer, intent(in) :: ndevs
890+
integer, intent(in) :: devs(*)
891+
integer(omp_memspace_handle_kind), intent(in) :: memspace
892+
end function omp_get_devices_allocator
893+
894+
function omp_get_device_allocator(dev, memspace)
895+
use omp_lib_kinds
896+
integer(omp_allocator_handle_kind) :: omp_get_device_allocator
897+
integer, intent(in) :: dev
898+
integer(omp_memspace_handle_kind), intent(in) :: memspace
899+
end function omp_get_device_allocator
900+
901+
function omp_get_devices_and_host_allocator(ndevs, devs, memspace)
902+
use omp_lib_kinds
903+
integer(omp_allocator_handle_kind) :: &
904+
omp_get_devices_and_host_allocator
905+
integer, intent(in) :: ndevs
906+
integer, intent(in) :: devs(*)
907+
integer(omp_memspace_handle_kind), intent(in) :: memspace
908+
end function omp_get_devices_and_host_allocator
909+
910+
function omp_get_device_and_host_allocator(dev, memspace)
911+
use omp_lib_kinds
912+
integer(omp_allocator_handle_kind) :: &
913+
omp_get_device_and_host_allocator
914+
integer, intent(in) :: dev
915+
integer(omp_memspace_handle_kind), intent(in) :: memspace
916+
end function omp_get_device_and_host_allocator
917+
918+
function omp_get_devices_all_allocator(memspace)
919+
use omp_lib_kinds
920+
integer(omp_allocator_handle_kind) :: &
921+
omp_get_devices_all_allocator
922+
integer(omp_memspace_handle_kind), intent(in) :: memspace
923+
end function omp_get_devices_all_allocator
924+
925+
function omp_get_memspace_num_resources(memspace)
926+
use omp_lib_kinds
927+
integer omp_get_memspace_num_resources
928+
integer(omp_memspace_handle_kind), intent(in) :: memspace
929+
end function omp_get_memspace_num_resources
930+
931+
function omp_get_submemspace(memspace, num_resources, resources)
932+
use omp_lib_kinds
933+
integer(omp_memspace_handle_kind) omp_get_submemspace
934+
integer(omp_memspace_handle_kind), intent(in) :: memspace
935+
integer, intent(in) :: num_resources
936+
integer, intent(in) :: resources(*)
937+
end function omp_get_submemspace
938+
837939
! ***
838940
! *** kmp_* entry points
839941
! ***

openmp/runtime/src/include/omp_lib.h.var

Lines changed: 117 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,18 @@
151151
parameter(omp_atk_pinned=7)
152152
integer(kind=omp_alloctrait_key_kind)omp_atk_partition
153153
parameter(omp_atk_partition=8)
154+
integer(kind=omp_alloctrait_key_kind)omp_atk_pin_device
155+
parameter(omp_atk_pin_device=9)
156+
integer(kind=omp_alloctrait_key_kind)omp_atk_preferred_device
157+
parameter(omp_atk_preferred_device=10)
158+
integer(kind=omp_alloctrait_key_kind)omp_atk_device_access
159+
parameter(omp_atk_device_access=11)
160+
integer(kind=omp_alloctrait_key_kind)omp_atk_target_access
161+
parameter(omp_atk_target_access=12)
162+
integer(kind=omp_alloctrait_key_kind)omp_atk_atomic_scope
163+
parameter(omp_atk_atomic_scope=13)
164+
integer(kind=omp_alloctrait_key_kind)omp_atk_part_size
165+
parameter(omp_atk_part_size=14)
154166

155167
integer(kind=omp_alloctrait_val_kind)omp_atv_default
156168
parameter(omp_atv_default=-1)
@@ -170,8 +182,8 @@
170182
parameter(omp_atv_sequential=5)
171183
integer(kind=omp_alloctrait_val_kind)omp_atv_private
172184
parameter(omp_atv_private=6)
173-
integer(kind=omp_alloctrait_val_kind)omp_atv_all
174-
parameter(omp_atv_all=7)
185+
integer(kind=omp_alloctrait_val_kind)omp_atv_device
186+
parameter(omp_atv_device=7)
175187
integer(kind=omp_alloctrait_val_kind)omp_atv_thread
176188
parameter(omp_atv_thread=8)
177189
integer(kind=omp_alloctrait_val_kind)omp_atv_pteam
@@ -194,6 +206,14 @@
194206
parameter(omp_atv_blocked=17)
195207
integer(kind=omp_alloctrait_val_kind)omp_atv_interleaved
196208
parameter(omp_atv_interleaved=18)
209+
integer(kind=omp_alloctrait_val_kind)omp_atv_all
210+
parameter(omp_atv_all=19)
211+
integer(kind=omp_alloctrait_val_kind)omp_atv_single
212+
parameter(omp_atv_single=20)
213+
integer(kind=omp_alloctrait_val_kind)omp_atv_multiple
214+
parameter(omp_atv_multiple=21)
215+
integer(kind=omp_alloctrait_val_kind)omp_atv_memspace
216+
parameter(omp_atv_memspace=22)
197217

198218
type omp_alloctrait
199219
integer (kind=omp_alloctrait_key_kind) key
@@ -228,8 +248,10 @@
228248
integer(kind=omp_allocator_handle_kind)ompx_pinned_mem_alloc
229249
parameter(ompx_pinned_mem_alloc=120)
230250

251+
integer(kind=omp_memspace_handle_kind)omp_null_mem_space
252+
parameter(omp_null_mem_space=0)
231253
integer(kind=omp_memspace_handle_kind)omp_default_mem_space
232-
parameter(omp_default_mem_space=0)
254+
parameter(omp_default_mem_space=99)
233255
integer(kind=omp_memspace_handle_kind)omp_large_cap_mem_space
234256
parameter(omp_large_cap_mem_space=1)
235257
integer(kind=omp_memspace_handle_kind)omp_const_mem_space
@@ -896,6 +918,98 @@
896918
logical (kind=omp_logical_kind) omp_in_explicit_task
897919
end function omp_in_explicit_task
898920

921+
function omp_get_devices_memspace(ndevs, devs, memspace)
922+
import
923+
integer(omp_memspace_handle_kind) :: omp_get_devices_memspace
924+
integer, intent(in) :: ndevs
925+
integer, intent(in) :: devs(*)
926+
integer(omp_memspace_handle_kind), intent(in) :: memspace
927+
end function omp_get_devices_memspace
928+
929+
function omp_get_device_memspace(dev, memspace)
930+
import
931+
integer(omp_memspace_handle_kind) :: omp_get_device_memspace
932+
integer, intent(in) :: dev
933+
integer(omp_memspace_handle_kind), intent(in) :: memspace
934+
end function omp_get_device_memspace
935+
936+
function omp_get_devices_and_host_memspace(ndevs,devs,memspace)
937+
import
938+
integer(omp_memspace_handle_kind) :: &
939+
& omp_get_devices_and_host_memspace
940+
integer, intent(in) :: ndevs
941+
integer, intent(in) :: devs(*)
942+
integer(omp_memspace_handle_kind), intent(in) :: memspace
943+
end function omp_get_devices_and_host_memspace
944+
945+
function omp_get_device_and_host_memspace(dev, memspace)
946+
import
947+
integer(omp_memspace_handle_kind) :: &
948+
& omp_get_device_and_host_memspace
949+
integer, intent(in) :: dev
950+
integer(omp_memspace_handle_kind), intent(in) :: memspace
951+
end function omp_get_device_and_host_memspace
952+
953+
function omp_get_devices_all_memspace(memspace)
954+
import
955+
integer(omp_memspace_handle_kind)::omp_get_devices_all_memspace
956+
integer(omp_memspace_handle_kind), intent(in) :: memspace
957+
end function omp_get_devices_all_memspace
958+
959+
function omp_get_devices_allocator(ndevs, devs, memspace)
960+
import
961+
integer(omp_allocator_handle_kind)::omp_get_devices_allocator
962+
integer, intent(in) :: ndevs
963+
integer, intent(in) :: devs(*)
964+
integer(omp_memspace_handle_kind), intent(in) :: memspace
965+
end function omp_get_devices_allocator
966+
967+
function omp_get_device_allocator(dev, memspace)
968+
import
969+
integer(omp_allocator_handle_kind) :: omp_get_device_allocator
970+
integer, intent(in) :: dev
971+
integer(omp_memspace_handle_kind), intent(in) :: memspace
972+
end function omp_get_device_allocator
973+
974+
function omp_get_devices_and_host_allocator(ndevs,devs,memspace)
975+
import
976+
integer(omp_allocator_handle_kind) :: &
977+
& omp_get_devices_and_host_allocator
978+
integer, intent(in) :: ndevs
979+
integer, intent(in) :: devs(*)
980+
integer(omp_memspace_handle_kind), intent(in) :: memspace
981+
end function omp_get_devices_and_host_allocator
982+
983+
function omp_get_device_and_host_allocator(dev, memspace)
984+
import
985+
integer(omp_allocator_handle_kind) :: &
986+
& omp_get_device_and_host_allocator
987+
integer, intent(in) :: dev
988+
integer(omp_memspace_handle_kind), intent(in) :: memspace
989+
end function omp_get_device_and_host_allocator
990+
991+
function omp_get_devices_all_allocator(memspace)
992+
import
993+
integer(omp_allocator_handle_kind) :: &
994+
& omp_get_devices_all_allocator
995+
integer(omp_memspace_handle_kind), intent(in) :: memspace
996+
end function omp_get_devices_all_allocator
997+
998+
function omp_get_memspace_num_resources(memspace)
999+
import
1000+
integer omp_get_memspace_num_resources
1001+
integer(omp_memspace_handle_kind), intent(in) :: memspace
1002+
end function omp_get_memspace_num_resources
1003+
1004+
function omp_get_submemspace(memspace, num_resources, resources)
1005+
import
1006+
integer(omp_memspace_handle_kind) omp_get_submemspace
1007+
integer(omp_memspace_handle_kind), intent(in) :: memspace
1008+
integer, intent(in) :: num_resources
1009+
integer, intent(in) :: resources(*)
1010+
end function omp_get_submemspace
1011+
1012+
8991013
! ***
9001014
! *** kmp_* entry points
9011015
! ***

0 commit comments

Comments
 (0)