Skip to content

Commit

Permalink
[SYCL][Bindless][Exp] Remove unneeded function argument causing memor…
Browse files Browse the repository at this point in the history
…y leak in image create functions

Remove pi_mem argument from piextMemUnsampledImageCreate, piextMemSampledImageCreate and the corresponding UR functions. The argument is not used for any useful functionality and causes a memory leak.
  • Loading branch information
DBDuncan committed Apr 11, 2024
1 parent 220a309 commit 2bf7ae1
Show file tree
Hide file tree
Showing 11 changed files with 57 additions and 94 deletions.
4 changes: 2 additions & 2 deletions sycl/include/sycl/detail/pi.h
Original file line number Diff line number Diff line change
Expand Up @@ -2758,7 +2758,7 @@ __SYCL_EXPORT pi_result piextMemMipmapFree(pi_context context, pi_device device,
/// \param ret_handle is the returning memory handle to newly allocated memory
__SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
pi_context context, pi_device device, pi_image_mem_handle img_mem,
pi_image_format *image_format, pi_image_desc *image_desc, pi_mem *ret_mem,
pi_image_format *image_format, pi_image_desc *image_desc,
pi_image_handle *ret_handle);

/// API to create sampled bindless image handles.
Expand All @@ -2774,7 +2774,7 @@ __SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
__SYCL_EXPORT pi_result piextMemSampledImageCreate(
pi_context context, pi_device device, pi_image_mem_handle img_mem,
pi_image_format *image_format, pi_image_desc *image_desc,
pi_sampler sampler, pi_mem *ret_mem, pi_image_handle *ret_handle);
pi_sampler sampler, pi_image_handle *ret_handle);

/// API to create samplers for bindless images.
///
Expand Down
11 changes: 5 additions & 6 deletions sycl/plugins/cuda/pi_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -382,19 +382,18 @@ __SYCL_EXPORT pi_result piextMemImageAllocate(pi_context Context,

__SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
return pi2ur::piextMemUnsampledImageCreate(
Context, Device, ImgMem, ImageFormat, ImageDesc, RetMem, RetHandle);
return pi2ur::piextMemUnsampledImageCreate(Context, Device, ImgMem,
ImageFormat, ImageDesc, RetHandle);
}

__SYCL_EXPORT pi_result piextMemSampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_sampler Sampler,
pi_mem *RetMem, pi_image_handle *RetHandle) {
pi_image_handle *RetHandle) {
return pi2ur::piextMemSampledImageCreate(Context, Device, ImgMem, ImageFormat,
ImageDesc, Sampler, RetMem,
RetHandle);
ImageDesc, Sampler, RetHandle);
}

__SYCL_EXPORT pi_result piextBindlessImageSamplerCreate(
Expand Down
11 changes: 5 additions & 6 deletions sycl/plugins/hip/pi_hip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -385,19 +385,18 @@ __SYCL_EXPORT pi_result piextMemImageAllocate(pi_context Context,

__SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
return pi2ur::piextMemUnsampledImageCreate(
Context, Device, ImgMem, ImageFormat, ImageDesc, RetMem, RetHandle);
return pi2ur::piextMemUnsampledImageCreate(Context, Device, ImgMem,
ImageFormat, ImageDesc, RetHandle);
}

__SYCL_EXPORT pi_result piextMemSampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_sampler Sampler,
pi_mem *RetMem, pi_image_handle *RetHandle) {
pi_image_handle *RetHandle) {
return pi2ur::piextMemSampledImageCreate(Context, Device, ImgMem, ImageFormat,
ImageDesc, Sampler, RetMem,
RetHandle);
ImageDesc, Sampler, RetHandle);
}

__SYCL_EXPORT pi_result piextBindlessImageSamplerCreate(
Expand Down
11 changes: 5 additions & 6 deletions sycl/plugins/level_zero/pi_level_zero.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -394,19 +394,18 @@ __SYCL_EXPORT pi_result piextMemImageAllocate(pi_context Context,

__SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
return pi2ur::piextMemUnsampledImageCreate(
Context, Device, ImgMem, ImageFormat, ImageDesc, RetMem, RetHandle);
return pi2ur::piextMemUnsampledImageCreate(Context, Device, ImgMem,
ImageFormat, ImageDesc, RetHandle);
}

__SYCL_EXPORT pi_result piextMemSampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_sampler Sampler,
pi_mem *RetMem, pi_image_handle *RetHandle) {
pi_image_handle *RetHandle) {
return pi2ur::piextMemSampledImageCreate(Context, Device, ImgMem, ImageFormat,
ImageDesc, Sampler, RetMem,
RetHandle);
ImageDesc, Sampler, RetHandle);
}

__SYCL_EXPORT pi_result piextBindlessImageSamplerCreate(
Expand Down
11 changes: 5 additions & 6 deletions sycl/plugins/native_cpu/pi_native_cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -389,19 +389,18 @@ __SYCL_EXPORT pi_result piextMemImageAllocate(pi_context Context,

__SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
return pi2ur::piextMemUnsampledImageCreate(
Context, Device, ImgMem, ImageFormat, ImageDesc, RetMem, RetHandle);
return pi2ur::piextMemUnsampledImageCreate(Context, Device, ImgMem,
ImageFormat, ImageDesc, RetHandle);
}

__SYCL_EXPORT pi_result piextMemSampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_sampler Sampler,
pi_mem *RetMem, pi_image_handle *RetHandle) {
pi_image_handle *RetHandle) {
return pi2ur::piextMemSampledImageCreate(Context, Device, ImgMem, ImageFormat,
ImageDesc, Sampler, RetMem,
RetHandle);
ImageDesc, Sampler, RetHandle);
}

__SYCL_EXPORT pi_result piextBindlessImageSamplerCreate(
Expand Down
11 changes: 5 additions & 6 deletions sycl/plugins/opencl/pi_opencl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -363,21 +363,20 @@ pi_result piextMemImageAllocate(pi_context Context, pi_device Device,
pi_result piextMemUnsampledImageCreate(pi_context Context, pi_device Device,
pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat,
pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
return pi2ur::piextMemUnsampledImageCreate(
Context, Device, ImgMem, ImageFormat, ImageDesc, RetMem, RetHandle);
return pi2ur::piextMemUnsampledImageCreate(Context, Device, ImgMem,
ImageFormat, ImageDesc, RetHandle);
}

pi_result piextMemSampledImageCreate(pi_context Context, pi_device Device,
pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat,
pi_image_desc *ImageDesc,
pi_sampler Sampler, pi_mem *RetMem,
pi_sampler Sampler,
pi_image_handle *RetHandle) {
return pi2ur::piextMemSampledImageCreate(Context, Device, ImgMem, ImageFormat,
ImageDesc, Sampler, RetMem,
RetHandle);
ImageDesc, Sampler, RetHandle);
}

pi_result piextBindlessImageSamplerCreate(
Expand Down
48 changes: 12 additions & 36 deletions sycl/plugins/unified_runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,14 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)
CACHE PATH "Path to external '${name}' adapter source dir" FORCE)
endfunction()

set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
# commit e00a764f8dafd1319b636aa99c15601ec0d4d7fc
# Merge: 85b75590 92b60b77
# Author: aarongreig <aaron.greig@codeplay.com>
# Date: Wed Apr 10 10:21:22 2024 +0100
# Merge pull request #1455 from GeorgeWeb/georgi/fix-hip-usm-copy2d
# [HIP] Fix memory type detection in allocation info queries and USM copy2D
set(UNIFIED_RUNTIME_TAG e00a764f8dafd1319b636aa99c15601ec0d4d7fc)
set(UNIFIED_RUNTIME_REPO "https://github.com/DBDuncan/unified-runtime.git")
# commit c25f2f91c5abfe3c59600c1a6bc153acad790c66
# Author: Duncan Brawley <duncan.brawley@codeplay.com>
# Date: Thu, 21 Mar 2024 16:35:42 +0000
# [Bindless][Exp] Remove phMem argument from bindless image creation functions
# Remove phMem argument from bindless image creation functions.
# It not used outside of UR and is currently causing a minor memory leak.
set(UNIFIED_RUNTIME_TAG c25f2f91c5abfe3c59600c1a6bc153acad790c66)

fetch_adapter_source(level_zero
${UNIFIED_RUNTIME_REPO}
Expand All @@ -110,46 +110,22 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)

fetch_adapter_source(opencl
${UNIFIED_RUNTIME_REPO}
# commit 0d2a972c71ba4dd5935478c7b7124a372a1eeca0
# Merge: ac89abfe 44aef877
# Author: Kenneth Benzie (Benie) <k.benzie@codeplay.com>
# Date: Thu Apr 11 10:24:19 2024 +0100
# Merge pull request #1440 from fabiomestre/fabio/opencl_remove_queued_hack
# [OPENCL] Remove EVENT_STATUS_QUEUED workaround
0d2a972c71ba4dd5935478c7b7124a372a1eeca0
${UNIFIED_RUNTIME_TAG}
)

fetch_adapter_source(cuda
${UNIFIED_RUNTIME_REPO}
# commit 6e76c98a1f5cd3c4f5e99011e92bd55b3a46cc4c
# Merge: 08b3e8fe 834e6435
# Author: Kenneth Benzie (Benie) <k.benzie@codeplay.com>
# Date: Wed Apr 10 16:26:17 2024 +0100
# Merge pull request #1220 from fabiomestre/fabio/cuda_multimap
# [CUDA] Add support for multiple active mappings
6e76c98a1f5cd3c4f5e99011e92bd55b3a46cc4c
${UNIFIED_RUNTIME_TAG}
)

fetch_adapter_source(hip
${UNIFIED_RUNTIME_REPO}
# commit 08b3e8fe6c5ad0aed125823c335eb44343845f6c
# Merge: 758c6149 db47fc0a
# Author: Kenneth Benzie (Benie) <k.benzie@codeplay.com>
# Date: Wed Apr 10 16:22:00 2024 +0100
# Merge pull request #1359 from lplewa/hip_log
# Refactor hip adapter to new logger
08b3e8fe6c5ad0aed125823c335eb44343845f6c
${UNIFIED_RUNTIME_TAG}
)

fetch_adapter_source(native_cpu
${UNIFIED_RUNTIME_REPO}
# commit 38e9478b8a7a01fcf37f55b50c735ca1de29c76d
# Merge: b582fb80 c594cdc0
# Author: Kenneth Benzie (Benie) <k.benzie@codeplay.com>
# Date: Thu Apr 11 11:39:02 2024 +0100
# Merge pull request #1478 from PietroGhg/pietro/vecz_threadpool
# [NATIVECPU] Initial threadpool implementation for Native CPU
38e9478b8a7a01fcf37f55b50c735ca1de29c76d
${UNIFIED_RUNTIME_TAG}
)

if(SYCL_PI_UR_OVERRIDE_FETCH_CONTENT_REPO)
Expand Down
21 changes: 9 additions & 12 deletions sycl/plugins/unified_runtime/pi2ur.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4988,13 +4988,14 @@ inline pi_result piextMemImageAllocate(pi_context Context, pi_device Device,
return PI_SUCCESS;
}

inline pi_result piextMemUnsampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_handle *RetHandle) {
inline pi_result piextMemUnsampledImageCreate(pi_context Context,
pi_device Device,
pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat,
pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
PI_ASSERT(Context, PI_ERROR_INVALID_CONTEXT);
PI_ASSERT(Device, PI_ERROR_INVALID_DEVICE);
PI_ASSERT(RetMem, PI_ERROR_INVALID_MEM_OBJECT);

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
Expand All @@ -5004,24 +5005,21 @@ inline pi_result piextMemUnsampledImageCreate(
ur_image_desc_t UrDesc{};
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);

ur_mem_handle_t *UrRetMem = reinterpret_cast<ur_mem_handle_t *>(RetMem);
ur_exp_image_handle_t *UrRetHandle =
reinterpret_cast<ur_exp_image_handle_t *>(RetHandle);

HANDLE_ERRORS(urBindlessImagesUnsampledImageCreateExp(
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrRetMem,
UrRetHandle));
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrRetHandle));

return PI_SUCCESS;
}

inline pi_result piextMemSampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_sampler Sampler,
pi_mem *RetMem, pi_image_handle *RetHandle) {
pi_image_handle *RetHandle) {
PI_ASSERT(Context, PI_ERROR_INVALID_CONTEXT);
PI_ASSERT(Device, PI_ERROR_INVALID_DEVICE);
PI_ASSERT(RetMem, PI_ERROR_INVALID_MEM_OBJECT);
PI_ASSERT(Sampler, PI_ERROR_INVALID_SAMPLER);

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
Expand All @@ -5033,12 +5031,11 @@ inline pi_result piextMemSampledImageCreate(
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);

auto UrSampler = reinterpret_cast<ur_sampler_handle_t>(Sampler);
ur_mem_handle_t *UrRetMem = reinterpret_cast<ur_mem_handle_t *>(RetMem);
ur_exp_image_handle_t *UrRetHandle =
reinterpret_cast<ur_exp_image_handle_t *>(RetHandle);

HANDLE_ERRORS(urBindlessImagesSampledImageCreateExp(
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrSampler, UrRetMem,
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrSampler,
UrRetHandle));

return PI_SUCCESS;
Expand Down
11 changes: 5 additions & 6 deletions sycl/plugins/unified_runtime/pi_unified_runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1226,19 +1226,18 @@ __SYCL_EXPORT pi_result piextMemImageAllocate(pi_context Context,

__SYCL_EXPORT pi_result piextMemUnsampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_mem *RetMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc,
pi_image_handle *RetHandle) {
return pi2ur::piextMemUnsampledImageCreate(
Context, Device, ImgMem, ImageFormat, ImageDesc, RetMem, RetHandle);
return pi2ur::piextMemUnsampledImageCreate(Context, Device, ImgMem,
ImageFormat, ImageDesc, RetHandle);
}

__SYCL_EXPORT pi_result piextMemSampledImageCreate(
pi_context Context, pi_device Device, pi_image_mem_handle ImgMem,
pi_image_format *ImageFormat, pi_image_desc *ImageDesc, pi_sampler Sampler,
pi_mem *RetMem, pi_image_handle *RetHandle) {
pi_image_handle *RetHandle) {
return pi2ur::piextMemSampledImageCreate(Context, Device, ImgMem, ImageFormat,
ImageDesc, Sampler, RetMem,
RetHandle);
ImageDesc, Sampler, RetHandle);
}

__SYCL_EXPORT pi_result piextBindlessImageSamplerCreate(
Expand Down
8 changes: 2 additions & 6 deletions sycl/source/detail/bindless_images.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -361,11 +361,9 @@ create_image(image_mem_handle memHandle, const image_descriptor &desc,

// Call impl.
pi_image_handle piImageHandle;
pi_mem piImage;
Plugin->call<sycl::errc::runtime,
sycl::detail::PiApiKind::piextMemUnsampledImageCreate>(
C, Device, memHandle.raw_handle, &piFormat, &piDesc, &piImage,
&piImageHandle);
C, Device, memHandle.raw_handle, &piFormat, &piDesc, &piImageHandle);

return unsampled_image_handle{piImageHandle};
}
Expand Down Expand Up @@ -449,12 +447,10 @@ create_image(void *devPtr, size_t pitch, const bindless_image_sampler &sampler,
populate_pi_structs(desc, piDesc, piFormat, pitch);

// Call impl.
pi_mem piImage;
pi_image_handle piImageHandle;
Plugin->call<sycl::errc::runtime,
sycl::detail::PiApiKind::piextMemSampledImageCreate>(
C, Device, devPtr, &piFormat, &piDesc, piSampler, &piImage,
&piImageHandle);
C, Device, devPtr, &piFormat, &piDesc, piSampler, &piImageHandle);

return sampled_image_handle{piImageHandle};
}
Expand Down
4 changes: 2 additions & 2 deletions sycl/unittests/helpers/PiMockPlugin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -482,7 +482,7 @@ inline pi_result mock_piextMemMipmapFree(pi_context context, pi_device device,

inline pi_result mock_piextMemUnsampledImageCreate(
pi_context context, pi_device device, pi_image_mem_handle img_mem,
pi_image_format *image_format, pi_image_desc *desc, pi_mem *ret_mem,
pi_image_format *image_format, pi_image_desc *desc,
pi_image_handle *ret_handle) {
return PI_SUCCESS;
}
Expand Down Expand Up @@ -552,7 +552,7 @@ inline pi_result mock_piextMemSampledImageCreateInterop(
inline pi_result mock_piextMemSampledImageCreate(
pi_context context, pi_device device, pi_image_mem_handle img_mem,
pi_image_format *image_format, pi_image_desc *desc, pi_sampler sampler,
pi_mem *ret_mem, pi_image_handle *ret_handle) {
pi_image_handle *ret_handle) {
return PI_SUCCESS;
}

Expand Down

0 comments on commit 2bf7ae1

Please sign in to comment.