Visible to Intel only — GUID: GUID-1B1309C7-3B84-4C57-868F-5CB6FAE067A5
Visible to Intel only — GUID: GUID-1B1309C7-3B84-4C57-868F-5CB6FAE067A5
DPCT1083
Message
The size of local memory 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 local 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 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 DPC++ 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 local memory and replace it with the correct size if necessary.