Skip to content

Commit 4d7eb9c

Browse files
committed
[DOC] Adding new migration examples for 2025.2
1 parent cf95f28 commit 4d7eb9c

1 file changed

Lines changed: 26 additions & 64 deletions

File tree

docs/dev_guide/reference/migration-examples.rst

Lines changed: 26 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -102,67 +102,24 @@ CUDA
102102

103103
.. code-block:: none
104104
105-
// Create a resource using Vulkan APIs
106-
VkImage vkTexture;
107-
108-
cudaExternalMemoryHandleDesc memHandleDesc; cudaExternalMemoryMipmappedArrayDesc mipmapDesc;
109-
cudaExternalMemory_t externalMemory;
110-
111-
// Import the memory from external resource (Vulkan)
112-
cudaImportExternalMemory(&externalMemory, &memHandleDesc);
113-
114-
// Get the mapped array from the CUDA resource
115-
cudaMipmappedArray_t cudaMipmappedArray = nullptr;
116-
cudaExternalMemoryGetMappedMipmappedArray(&cudaMipmappedArray,
117-
externalMemory,
118-
&mipmapDesc);
119-
120-
// Retrieve the tex data as a cudaArray from cudaMipmappedArray
121-
cudaArray_t cudaArr;
122-
cudaGetMipmappedArrayLevel(&cudaArr, cudaMipmappedArray, 0);
123-
124-
// Destroy the CUDA resource
125-
cudaDestroyExternalMemory(externalMemory);
126-
127-
Migrated Code
105+
VkDevice device = {};
128106
129-
.. code-block:: none
130-
131-
// Create a resource using Vulkan APIs
107+
// Create a texture resource using Vulkan APIs
132108
VkImage vkTexture;
109+
VkImageCreateInfo imageCreateInfo = {}; // init and fill texture descriptor
110+
vkCreateImage(device, &imageCreateInfo, nullptr, &vkTexture);
133111
134-
dpct::experimental::external_mem_handle_desc memHandleDesc;
135-
dpct::experimental::external_mem_img_desc mipmapDesc;
136-
sycl::ext::oneapi::experimental::external_mem externalMemory;
137-
138-
// Import the memory from external resource (Vulkan)
139-
dpct::experimental::import_external_memory(&externalMemory, &memHandleDesc));
140-
141-
// Get the mapped array from the CUDA resource
142-
dpct::experimental::image_mem_wrapper_ptr cudaMipmappedArray = nullptr;
143-
cudaMipmappedArray = new dpct::experimental::image_mem_wrapper(
144-
externalMemory,
145-
&mipmapDesc);
146-
147-
// Retrieve the tex data as a cudaArray from cudaMipmappedArray
148-
dpct::experimental::image_mem_wrapper_ptr cudaArr;
149-
cudaArr = cudaMipmappedArray->get_mip_level(0);
150-
151-
// Destroy the CUDA resource
152-
sycl::ext::oneapi::experimental::release_external_memory(
153-
externalMemory, dpct::get_in_order_queue());
154-
155-
CUDA
156-
157-
.. code-block:: none
112+
// Create a semaphore resource using Vulkan APIs
113+
VkSemaphore vkSemaphore;
114+
VkSemaphoreCreateInfo semaphoreInfo = {}; // init and fill semaphore descriptor
115+
vkCreateSemaphore(device, &semaphoreInfo, nullptr, &vkSemaphore);
158116
159-
// Create a texture resource using Vulkan APIs
160-
VkImage vkTexture;
161-
// Create a semaphore resource using Vulkan APIs VkSemaphore vkSemaphore;
117+
cudaStream_t stream;
118+
cudaStreamCreate(&stream);
162119
163-
cudaExternalMemoryHandleDesc memHandleDesc; cudaExternalMemoryMipmappedArrayDesc mipmapDesc;
120+
cudaExternalMemoryHandleDesc memHandleDesc;
121+
cudaExternalMemoryMipmappedArrayDesc mipmapDesc;
164122
cudaExternalMemory_t externalMemory;
165-
cudaStream_t stream;
166123
cudaExternalSemaphoreHandleDesc semHandleDesc;
167124
cudaExternalSemaphore_t externalSemaphore;
168125
cudaExternalSemaphoreWaitParams waitParams;
@@ -179,9 +136,7 @@ CUDA
179136
180137
// Get the mapped array from the CUDA resource
181138
cudaMipmappedArray_t cudaMipmappedArray = nullptr;
182-
cudaExternalMemoryGetMappedMipmappedArray(&cudaMipmappedArray,
183-
externalMemory,
184-
&mipmapDesc);
139+
cudaExternalMemoryGetMappedMipmappedArray(&cudaMipmappedArray, externalMemory, &mipmapDesc);
185140
186141
// Signal the semaphore using external resource
187142
cudaSignalExternalSemaphoresAsync(&externalSemaphore, &signalParams, 1, stream);
@@ -194,25 +149,34 @@ CUDA
194149
cudaDestroyExternalMemory(externalMemory);
195150
cudaDestroyExternalSemaphore(externalSemaphore);
196151
197-
198152
Migrated Code
199153

200154
.. code-block:: none
201155
202-
// Create a resource using Vulkan APIs
156+
VkDevice device = {};
157+
158+
// Create a texture resource using Vulkan APIs
203159
VkImage vkTexture;
160+
VkImageCreateInfo imageCreateInfo = {}; // init and fill texture descriptor
161+
vkCreateImage(device, &imageCreateInfo, nullptr, &vkTexture);
162+
204163
// Create a semaphore resource using Vulkan APIs
205164
VkSemaphore vkSemaphore;
165+
VkSemaphoreCreateInfo semaphoreInfo = {}; // init and fill semaphore descriptor
166+
vkCreateSemaphore(device, &semaphoreInfo, nullptr, &vkSemaphore);
167+
168+
dpct::queue_ptr stream;
169+
stream = dpct::get_current_device().create_queue();
206170
207171
dpct::experimental::external_mem_handle_desc memHandleDesc;
208172
dpct::experimental::external_mem_img_desc mipmapDesc;
209173
sycl::ext::oneapi::experimental::external_mem externalMemory;
210-
dpct::queue_ptr stream;
211174
dpct::experimental::external_sem_handle_desc semHandleDesc;
212175
dpct::experimental::external_sem_wrapper_ptr externalSemaphore;
213176
dpct::experimental::external_sem_params waitParams;
214177
dpct::experimental::external_sem_params signalParams;
215178
179+
216180
// Import the memory from external resource (vkTexture)
217181
dpct::experimental::import_external_memory(&externalMemory, &memHandleDesc));
218182
// Import the semaphore from external resource (vkSemaphore)
@@ -223,9 +187,7 @@ Migrated Code
223187
224188
// Get the mapped array from the CUDA resource
225189
dpct::experimental::image_mem_wrapper_ptr cudaMipmappedArray = nullptr;
226-
cudaMipmappedArray = new dpct::experimental::image_mem_wrapper(
227-
externalMemory,
228-
&mipmapDesc);
190+
cudaMipmappedArray = new dpct::experimental::image_mem_wrapper(externalMemory, &mipmapDesc);
229191
230192
// Signal the semaphore using external resource
231193
dpct::experimental::signal_external_semaphore(&externalSemaphore, &signalParams, 1, stream);

0 commit comments

Comments
 (0)