Visible to Intel only — GUID: GUID-341DC393-BDFB-442B-A7C3-4E900F72C843
Visible to Intel only — GUID: GUID-341DC393-BDFB-442B-A7C3-4E900F72C843
DPCT1083
Message
The size of <placeholder> in the migrated code may be different from the original code. Check that the allocated memory size in the migrated code is correct.
Detailed Help
Some types have a different size in the migrated code than in the original code, for example sycl::float3 compared to float3. Check if the allocated size of memory is correct in the migrated code.
In the example below, 3*sizeof(float) is used to represent the size of float3 in the original code. In the migrated code the size of sycl::float3 is different, so the allocated size needs adjustment.
For example, this original CUDA* code:
_global_ void kernel() { extern __shared__ float3 shared_memory[]; } int main() { size_t shared_size = 3 * sizeof(float); kernel<<<1, 1, shared_size>>>(); ... }
results in the following migrated SYCL* code:
void kernel(uint8_t *dpct_local) { auto shared_memory = (float3 *)dpct_local; } int main() { /* DPCT1083 */ size_t shared_size = 3 * sizeof(float); get_default_queue().submit([&](handler &cgh) { accessor<...> dpct_local_acc_ct1(range<1>(shared_size), cgh); cgh.parallel_for(..., [=](nd_item<3> item_ct1) { kernel(dpct_local_acc_ct1.get_pointer()); }); }); ... }
which is manually adjusted to:
void kernel(uint8_t *dpct_local) { auto shared_memory = (float3 *)dpct_local; } int main() { size_t shared_size = 1 * sizeof(float3); get_default_queue().submit([&](handler &cgh) Unknown macro: { accessor<...> dpct_local_acc_ct1(range<1>(shared_size), cgh); cgh.parallel_for(..., [=](nd_item<3> item_ct1) { kernel(dpct_local_acc_ct1.get_pointer()); }); } ); ... }
Suggestions to Fix
Check the allocated size of memory and replace it with the correct size if necessary.