Visible to Intel only — GUID: GUID-36B45C77-9324-4AC5-8448-6FB19AFAA0F9
Visible to Intel only — GUID: GUID-36B45C77-9324-4AC5-8448-6FB19AFAA0F9
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.