ROCm/roc-stdpar

20

stars

72

commits

C++

primary language

Jan 17, 2024

updated

README

ROCm Standard Parallelism Runtime Implementation

This repository contains:

  1. The runtime component that enables ROCm to support GPU accelerated computation via C++ Standard Algorithms. This is an implementation detail and thus intended to be transparently composed with compiler and low-level runtime components. More specifically, since it is meant to be implicitly included by the compiler, and forwards various calls to the HIP and rocThrust libraries, its standalone uses are limited. For detailed documentation on ROCm GPU acceleration for Standard C++ Algorithms, please see the RFC and the patch set.
  2. A set of diffs, under the data folder, which capture the changes needed to enable Standard Algorithm offload in LLVM (this is a pre-requisite), as well as in a number of client apps;
  3. A slowly growing set of minimalistic performance studies, under the docs folder, intended to give a sense of the possible performance benefits / pitfalls associated with offload;
  4. A minimal but slowly growing set of unit tests.

Algorithm Support Status

AlgorithmStatusObservations
adjacent_differenceSUPPORTED
adjacent_findSUPPORTEDUses mismatch
all_ofSUPPORTED
any_ofSUPPORTED
copySUPPORTED
copy_ifSUPPORTED
copy_nSUPPORTED
countSUPPORTED
count_ifSUPPORTED
destroySUPPORTED
destroy_nSUPPORTED
equalSUPPORTED
exclusive_scanSUPPORTED
fillSUPPORTED
fill_nSUPPORTED
findSUPPORTED
find_endUNSUPPORTEDMissing from rocThrust
find_first_ofUNSUPPORTEDMissing from rocThrust
find_ifSUPPORTED
find_if_notSUPPORTED
for_eachSUPPORTED
for_each_nSUPPORTED
generateSUPPORTED
generate_nSUPPORTED
includesSUPPORTED
inclusive_scanSUPPORTED
inplace_mergeUNSUPPORTEDMissing from rocThrust
is_heapUNSUPPORTEDMissing from rocThrust
is_heap_untilUNSUPPORTEDMissing from rocThrust
is_partitionedSUPPORTED
is_sortedSUPPORTED
is_sorted_untilSUPPORTED
lexicographical_compareSUPPORTEDUses mismatch
max_elementSUPPORTED
mergeSUPPORTED
min_elementSUPPORTED
minmax_elementSUPPORTED
mismatchSUPPORTED
moveSUPPORTED
none_ofSUPPORTED
nth_elementUNSUPPORTEDMissing from rocThrust
partial_sortUNSUPPORTEDMissing from rocThrust
partial_sort_copyUNSUPPORTEDMissing from rocThrust
partitionSUPPORTED
partition_copySUPPORTED
reduceSUPPORTED
removeSUPPORTED
remove_copySUPPORTED
remove_copy_ifSUPPORTED
remove_ifSUPPORTED
replaceSUPPORTED
replace_copySUPPORTED
replace_copy_ifSUPPORTED
replace_ifSUPPORTED
reverseSUPPORTED
reverse_copySUPPORTED
rotateUNSUPPORTEDMissing from rocThrust
rotate_copyUNSUPPORTEDMissing from rocThrust
searchUNSUPPORTEDMissing from rocThrust
search_nUNSUPPORTEDMissing from rocThrust
set_differenceSUPPORTED
set_intersectionSUPPORTED
set_symmetric_differenceSUPPORTED
set_unionSUPPORTED
shift_leftUNSUPPORTEDMissing from rocThrust
shift_rightUNSUPPORTEDMissing from rocThrust
sortSUPPORTED
stable_partitionSUPPORTED
stable_sortSUPPORTED
swap_rangesSUPPORTED
transformSUPPORTED
transform_exclusive_scanSUPPORTED
transform_inclusive_scanSUPPORTED
transform_reduceSUPPORTED
uninitialized_copySUPPORTED
uninitialized_copy_nSUPPORTED
uninitialized_default_constructSUPPORTED
uninitialized_default_construct_nSUPPORTED
uninitialized_fillSUPPORTED
uninitialized_fill_nSUPPORTED
unitialized_moveSUPPORTED
unitialized_move_nSUPPORTED
uninitialized_value_constructSUPPORTED
uninitialized_value_construct_nSUPPORTED
uniqueSUPPORTED
unique_copySUPPORTED

Allocation / Deallocation Interposition Status

FunctionStatus
aligned_allocSUPPORTED
callocSUPPORTED
freeSUPPORTED
mallocSUPPORTED
memalignSUPPORTED
posix_memalignSUPPORTED
reallocSUPPORTED
realloc_arraySUPPORTED
operator delete[](void*)SUPPORTED
operator delete[](void*, std::size_t)SUPPORTED
operator delete[](void*, std::align_val_t)SUPPORTED
operator delete[](void*, std::size_t, std::align_val_t)SUPPORTED
operator delete(void*)SUPPORTED
operator delete(void*, std::size_t)SUPPORTED
operator delete(void*, std::align_val_t)SUPPORTED
operator delete(void*, std::size_t, std::align_val_t)SUPPORTED
operator new[](std::size_t)SUPPORTED
operator new[](std::size_t, std::nothrow_t)SUPPORTED
operator new[](std::size_t, std::align_val_t)SUPPORTED
operator new[](std::size_t, std::align_val_t, std::nothrow_t)SUPPORTED
operator new(std::size_t)SUPPORTED
operator new(std::size_t, std::nothrow_t)SUPPORTED
operator new(std::size_t, std::align_val_t)SUPPORTED
operator new(std::size_t, std::align_val_t, std::nothrow_t)SUPPORTED
__builtin_callocSUPPORTED
__builtin_freeSUPPORTED
__builtin_mallocSUPPORTED
__builtin_operator_deleteSUPPORTED
__builtin_operator_newSUPPORTED
__builtin_reallocSUPPORTED
__libc_callocSUPPORTED
__libc_freeSUPPORTED
__libc_mallocSUPPORTED
__libc_memalignSUPPORTED
__libc_reallocSUPPORTED

Contributors

AlexVlx

71 commits

afanfa

1 commits

ROCm/roc-stdpar

20

stars

72

commits

C++

primary language

Jan 17, 2024

updated

README

ROCm Standard Parallelism Runtime Implementation

This repository contains:

  1. The runtime component that enables ROCm to support GPU accelerated computation via C++ Standard Algorithms. This is an implementation detail and thus intended to be transparently composed with compiler and low-level runtime components. More specifically, since it is meant to be implicitly included by the compiler, and forwards various calls to the HIP and rocThrust libraries, its standalone uses are limited. For detailed documentation on ROCm GPU acceleration for Standard C++ Algorithms, please see the RFC and the patch set.
  2. A set of diffs, under the data folder, which capture the changes needed to enable Standard Algorithm offload in LLVM (this is a pre-requisite), as well as in a number of client apps;
  3. A slowly growing set of minimalistic performance studies, under the docs folder, intended to give a sense of the possible performance benefits / pitfalls associated with offload;
  4. A minimal but slowly growing set of unit tests.

Algorithm Support Status

AlgorithmStatusObservations
adjacent_differenceSUPPORTED
adjacent_findSUPPORTEDUses mismatch
all_ofSUPPORTED
any_ofSUPPORTED
copySUPPORTED
copy_ifSUPPORTED
copy_nSUPPORTED
countSUPPORTED
count_ifSUPPORTED
destroySUPPORTED
destroy_nSUPPORTED
equalSUPPORTED
exclusive_scanSUPPORTED
fillSUPPORTED
fill_nSUPPORTED
findSUPPORTED
find_endUNSUPPORTEDMissing from rocThrust
find_first_ofUNSUPPORTEDMissing from rocThrust
find_ifSUPPORTED
find_if_notSUPPORTED
for_eachSUPPORTED
for_each_nSUPPORTED
generateSUPPORTED
generate_nSUPPORTED
includesSUPPORTED
inclusive_scanSUPPORTED
inplace_mergeUNSUPPORTEDMissing from rocThrust
is_heapUNSUPPORTEDMissing from rocThrust
is_heap_untilUNSUPPORTEDMissing from rocThrust
is_partitionedSUPPORTED
is_sortedSUPPORTED
is_sorted_untilSUPPORTED
lexicographical_compareSUPPORTEDUses mismatch
max_elementSUPPORTED
mergeSUPPORTED
min_elementSUPPORTED
minmax_elementSUPPORTED
mismatchSUPPORTED
moveSUPPORTED
none_ofSUPPORTED
nth_elementUNSUPPORTEDMissing from rocThrust
partial_sortUNSUPPORTEDMissing from rocThrust
partial_sort_copyUNSUPPORTEDMissing from rocThrust
partitionSUPPORTED
partition_copySUPPORTED
reduceSUPPORTED
removeSUPPORTED
remove_copySUPPORTED
remove_copy_ifSUPPORTED
remove_ifSUPPORTED
replaceSUPPORTED
replace_copySUPPORTED
replace_copy_ifSUPPORTED
replace_ifSUPPORTED
reverseSUPPORTED
reverse_copySUPPORTED
rotateUNSUPPORTEDMissing from rocThrust
rotate_copyUNSUPPORTEDMissing from rocThrust
searchUNSUPPORTEDMissing from rocThrust
search_nUNSUPPORTEDMissing from rocThrust
set_differenceSUPPORTED
set_intersectionSUPPORTED
set_symmetric_differenceSUPPORTED
set_unionSUPPORTED
shift_leftUNSUPPORTEDMissing from rocThrust
shift_rightUNSUPPORTEDMissing from rocThrust
sortSUPPORTED
stable_partitionSUPPORTED
stable_sortSUPPORTED
swap_rangesSUPPORTED
transformSUPPORTED
transform_exclusive_scanSUPPORTED
transform_inclusive_scanSUPPORTED
transform_reduceSUPPORTED
uninitialized_copySUPPORTED
uninitialized_copy_nSUPPORTED
uninitialized_default_constructSUPPORTED
uninitialized_default_construct_nSUPPORTED
uninitialized_fillSUPPORTED
uninitialized_fill_nSUPPORTED
unitialized_moveSUPPORTED
unitialized_move_nSUPPORTED
uninitialized_value_constructSUPPORTED
uninitialized_value_construct_nSUPPORTED
uniqueSUPPORTED
unique_copySUPPORTED

Allocation / Deallocation Interposition Status

FunctionStatus
aligned_allocSUPPORTED
callocSUPPORTED
freeSUPPORTED
mallocSUPPORTED
memalignSUPPORTED
posix_memalignSUPPORTED
reallocSUPPORTED
realloc_arraySUPPORTED
operator delete[](void*)SUPPORTED
operator delete[](void*, std::size_t)SUPPORTED
operator delete[](void*, std::align_val_t)SUPPORTED
operator delete[](void*, std::size_t, std::align_val_t)SUPPORTED
operator delete(void*)SUPPORTED
operator delete(void*, std::size_t)SUPPORTED
operator delete(void*, std::align_val_t)SUPPORTED
operator delete(void*, std::size_t, std::align_val_t)SUPPORTED
operator new[](std::size_t)SUPPORTED
operator new[](std::size_t, std::nothrow_t)SUPPORTED
operator new[](std::size_t, std::align_val_t)SUPPORTED
operator new[](std::size_t, std::align_val_t, std::nothrow_t)SUPPORTED
operator new(std::size_t)SUPPORTED
operator new(std::size_t, std::nothrow_t)SUPPORTED
operator new(std::size_t, std::align_val_t)SUPPORTED
operator new(std::size_t, std::align_val_t, std::nothrow_t)SUPPORTED
__builtin_callocSUPPORTED
__builtin_freeSUPPORTED
__builtin_mallocSUPPORTED
__builtin_operator_deleteSUPPORTED
__builtin_operator_newSUPPORTED
__builtin_reallocSUPPORTED
__libc_callocSUPPORTED
__libc_freeSUPPORTED
__libc_mallocSUPPORTED
__libc_memalignSUPPORTED
__libc_reallocSUPPORTED

Contributors

AlexVlx

71 commits

afanfa

1 commits

Languages

C++

99.4%