@@ -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;
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