Skip to content

Commit

Permalink
Fix SharedAllocationRecord to allocate using the correct execution sp…
Browse files Browse the repository at this point in the history
…ace instance (kokkos#6789)

* Fix SharedAllocationRecord

* Fix SYCL
  • Loading branch information
masterleinad committed Feb 7, 2024
1 parent 442e4d4 commit 391f2d1
Show file tree
Hide file tree
Showing 6 changed files with 93 additions and 4 deletions.
20 changes: 20 additions & 0 deletions core/src/Cuda/Kokkos_CudaSpace.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,16 @@ class CudaUVMSpace {
~CudaUVMSpace() = default;

/**\brief Allocate untracked memory in the cuda space */
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down Expand Up @@ -250,6 +260,16 @@ class CudaHostPinnedSpace {
~CudaHostPinnedSpace() = default;

/**\brief Allocate untracked memory in the space */
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down
29 changes: 29 additions & 0 deletions core/src/HIP/Kokkos_HIP_Space.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,15 @@ class HIPSpace {
~HIPSpace() = default;

/**\brief Allocate untracked memory in the hip space */
// FIXME_HIP Use execution space instance
void* allocate(const HIP&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
// FIXME_HIP Use execution space instance
void* allocate(const HIP&, const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down Expand Up @@ -125,6 +134,16 @@ class HIPHostPinnedSpace {
~HIPHostPinnedSpace() = default;

/**\brief Allocate untracked memory in the space */
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down Expand Up @@ -188,6 +207,16 @@ class HIPManagedSpace {
~HIPManagedSpace() = default;

/**\brief Allocate untracked memory in the space */
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down
10 changes: 10 additions & 0 deletions core/src/Kokkos_HostSpace.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,16 @@ class HostSpace {
#endif

/**\brief Allocate untracked memory in the space */
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down
10 changes: 10 additions & 0 deletions core/src/OpenMPTarget/Kokkos_OpenMPTargetSpace.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,16 @@ class OpenMPTargetSpace {
~OpenMPTargetSpace() = default;

/**\brief Allocate untracked memory in the space */
// FIXME_OPENMPTARGET Use execution space instance
void* allocate(const OpenMPTarget&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
// FIXME_OPENMPTARGET Use execution space instance
void* allocate(const OpenMPTarget&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const size_t arg_alloc_size) const;
void* allocate(const char* arg_label, const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const;
Expand Down
20 changes: 20 additions & 0 deletions core/src/SYCL/Kokkos_SYCL_Space.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,16 @@ class SYCLSharedUSMSpace {
SYCLSharedUSMSpace();
explicit SYCLSharedUSMSpace(sycl::queue queue);

template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const SYCL& exec_space,
const std::size_t arg_alloc_size) const;
void* allocate(const SYCL& exec_space, const char* arg_label,
Expand Down Expand Up @@ -113,6 +123,16 @@ class SYCLHostUSMSpace {
SYCLHostUSMSpace();
explicit SYCLHostUSMSpace(sycl::queue queue);

template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const size_t arg_alloc_size) const {
return allocate(arg_alloc_size);
}
template <typename ExecutionSpace>
void* allocate(const ExecutionSpace&, const char* arg_label,
const size_t arg_alloc_size,
const size_t arg_logical_size = 0) const {
return allocate(arg_label, arg_alloc_size, arg_logical_size);
}
void* allocate(const SYCL& exec_space,
const std::size_t arg_alloc_size) const;
void* allocate(const SYCL& exec_space, const char* arg_label,
Expand Down
8 changes: 4 additions & 4 deletions core/src/impl/Kokkos_SharedAlloc.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -252,14 +252,14 @@ class SharedAllocationRecordCommon : public SharedAllocationRecord<void, void> {
~SharedAllocationRecordCommon();
template <class ExecutionSpace>
SharedAllocationRecordCommon(
ExecutionSpace const&, MemorySpace const& space, std::string const& label,
std::size_t alloc_size,
ExecutionSpace const& exec, MemorySpace const& space,
std::string const& label, std::size_t alloc_size,
record_base_t::function_type dealloc = &deallocate)
: SharedAllocationRecord<void, void>(
#ifdef KOKKOS_ENABLE_DEBUG
&s_root_record,
#endif
checked_allocation_with_header(space, label, alloc_size),
checked_allocation_with_header(exec, space, label, alloc_size),
sizeof(SharedAllocationHeader) + alloc_size, dealloc, label),
m_space(space) {
auto& header = *SharedAllocationRecord<void, void>::m_alloc_ptr;
Expand Down Expand Up @@ -315,7 +315,7 @@ class HostInaccessibleSharedAllocationRecordCommon
#ifdef KOKKOS_ENABLE_DEBUG
&s_root_record,
#endif
checked_allocation_with_header(space, label, alloc_size),
checked_allocation_with_header(exec, space, label, alloc_size),
sizeof(SharedAllocationHeader) + alloc_size, dealloc, label),
m_space(space) {
SharedAllocationHeader header;
Expand Down

0 comments on commit 391f2d1

Please sign in to comment.