Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert LinearAlgebra::distributed::Vector to Kokkos #14537

Merged
merged 45 commits into from
Dec 30, 2022
Merged
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
7ce8b10
Add files for making sure Kokkos is initialized
masterleinad Nov 30, 2022
fd1d45a
Update memory_space
masterleinad Nov 30, 2022
2666437
Fix CMakeLists.txt
masterleinad Nov 30, 2022
877de79
Fixes
masterleinad Nov 30, 2022
1b9a40e
working
masterleinad Dec 1, 2022
e9f218e
working
masterleinad Dec 1, 2022
5d3c756
Rename variables
masterleinad Dec 1, 2022
a4b66f3
Rename values_dev -> values
masterleinad Dec 1, 2022
fffa86a
Remove Policy
masterleinad Dec 1, 2022
30e9a8f
Use original memory_space_data design
masterleinad Dec 1, 2022
c0b3a83
Indentation
masterleinad Dec 1, 2022
3f2d572
Small fixes
masterleinad Dec 1, 2022
d74c713
Disable warnings for Kokkos_Core.hpp
masterleinad Dec 1, 2022
0d38082
Don't use std::is_same_v yet
masterleinad Dec 2, 2022
1bce4de
Guard CUDA instantiations
masterleinad Dec 2, 2022
4c0fa31
Improve Kokkos initialization
masterleinad Dec 4, 2022
e0121e9
Add test
masterleinad Dec 5, 2022
c41a0e0
Convert distributed::Vector to Kokkos
masterleinad Dec 6, 2022
21fed9d
Fix up
masterleinad Dec 6, 2022
014aa1c
Revert changes to grid_tools.cc
masterleinad Dec 6, 2022
48bac50
Tests compiling an mostly working
masterleinad Dec 7, 2022
0990b11
Tests passing
masterleinad Dec 7, 2022
7a3726c
Remove duplicated tests
masterleinad Dec 7, 2022
cfd7c36
Fix tests
masterleinad Dec 7, 2022
a8ba920
Indentation
masterleinad Dec 7, 2022
8d43cf5
Revert changing due to boost
masterleinad Dec 7, 2022
d2f49c3
backport to Kokkos 3.4.00
masterleinad Dec 7, 2022
c59ea65
Backport for Kokkos 3.0
masterleinad Dec 8, 2022
7c60824
Add some missing instantiations
masterleinad Dec 8, 2022
28a040b
Fix clang-tidy
masterleinad Dec 8, 2022
46e9cd4
Merge remote-tracking branch 'upstream/master' into kokkos_la_d_vecto…
masterleinad Dec 20, 2022
f496414
wqAnnotate Kokkos::parallel_for
masterleinad Dec 28, 2022
ebf3705
Don't initialize Views
masterleinad Dec 28, 2022
4e88e01
Remove la_parallel_vector_cuda.cc
masterleinad Dec 28, 2022
ca56ecb
Use create_mirror_view_and_copy
masterleinad Dec 28, 2022
792811a
Use Kokkos::abs
masterleinad Dec 28, 2022
59b5815
Remove unused paramter
masterleinad Dec 28, 2022
b21c27b
Fix
masterleinad Dec 28, 2022
0861216
Kokkos::Experimental::abs -> Kokkos::Experimental::fabs
masterleinad Dec 29, 2022
7e71dfd
Make doxygen happy
masterleinad Dec 29, 2022
b68d704
Revert changes to boost
masterleinad Dec 29, 2022
d4cf830
Use subview
masterleinad Dec 29, 2022
9f04304
Add label for parallel_reduce
masterleinad Dec 29, 2022
cacd8d3
Use subview
masterleinad Dec 29, 2022
349aab5
Merge remote-tracking branch 'upstream/master' into kokkos_la_d_vecto…
masterleinad Dec 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
48 changes: 1 addition & 47 deletions include/deal.II/base/array_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -345,45 +345,6 @@ class ArrayView
//---------------------------------------------------------------------------


namespace internal
{
namespace ArrayViewHelper
{
template <typename MemorySpaceType>
inline bool
is_in_correct_memory_space(const void *const ptr)
{
#ifndef DEAL_II_COMPILER_CUDA_AWARE
(void)ptr;
static_assert(std::is_same<MemorySpaceType, MemorySpace::Host>::value,
"If the compiler doesn't understand CUDA code, "
"the only possible memory space is 'MemorySpace::Host'!");
return true;
#else
cudaPointerAttributes attributes;
const cudaError_t cuda_error = cudaPointerGetAttributes(&attributes, ptr);
if (cuda_error != cudaErrorInvalidValue)
{
AssertCuda(cuda_error);
if (std::is_same<MemorySpaceType, MemorySpace::Host>::value)
return (attributes.type == cudaMemoryTypeHost) ||
(attributes.type == cudaMemoryTypeUnregistered);
else
return attributes.type == cudaMemoryTypeDevice;
}
else
{
// ignore and reset the error since host pointers produce an error
cudaGetLastError();
return std::is_same<MemorySpaceType, MemorySpace::Host>::value;
}
#endif
}
} // namespace ArrayViewHelper
} // namespace internal



template <typename ElementType, typename MemorySpaceType>
inline ArrayView<ElementType, MemorySpaceType>::ArrayView()
: starting_element(nullptr)
Expand All @@ -398,14 +359,7 @@ inline ArrayView<ElementType, MemorySpaceType>::ArrayView(
const std::size_t n_elements)
: starting_element(starting_element)
, n_elements(n_elements)
{
Assert(
n_elements == 0 ||
internal::ArrayViewHelper::is_in_correct_memory_space<MemorySpaceType>(
starting_element),
ExcMessage("The memory space indicated by the template parameter "
"and the one derived from the pointer value do not match!"));
}
{}



Expand Down
1 change: 1 addition & 0 deletions include/deal.II/base/config.h.in
Original file line number Diff line number Diff line change
Expand Up @@ -490,6 +490,7 @@ _Pragma("GCC diagnostic ignored \"-Wint-in-bool-context\"") \
_Pragma("GCC diagnostic ignored \"-Wmisleading-indentation\"") \
_Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \
_Pragma("GCC diagnostic ignored \"-Wnested-anon-types\"") \
_Pragma("GCC diagnostic ignored \"-Wnon-template-friend\"") \
_Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
_Pragma("GCC diagnostic ignored \"-Wnonnull\"") \
_Pragma("GCC diagnostic ignored \"-Woverflow\"") \
Expand Down
2 changes: 1 addition & 1 deletion include/deal.II/base/memory_space_data.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ namespace MemorySpace
/**
* Structure which stores data on the host or the device depending on the
* template parameter @p MemorySpace. Valid choices are MemorySpace::Host,
* MemorySpace::Device, and MemorySpace::CUDA (if CUDA was enabled in
* MemorySpace::Default, and MemorySpace::CUDA (if CUDA was enabled in
* deal.II). The data is copied into the structure which then owns the data
* and will release the memory when the destructor is called.
*/
Expand Down