Properly assign to packet header (PR hsa/70394)
* plugin/plugin-hsa.c (packet_store_release): New function that is taken from the HSA runtime manual. (GOMP_OFFLOAD_run): Use the function. From-SVN: r234454
This commit is contained in:
parent
ed87de5583
commit
f9c8babbab
@ -1,3 +1,9 @@
|
|||||||
|
2016-03-24 Martin Liska <mliska@suse.cz>
|
||||||
|
|
||||||
|
* plugin/plugin-hsa.c (packet_store_release): New function
|
||||||
|
that is taken from the HSA runtime manual.
|
||||||
|
(GOMP_OFFLOAD_run): Use the function.
|
||||||
|
|
||||||
2016-03-23 Jakub Jelinek <jakub@redhat.com>
|
2016-03-23 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR c++/70376
|
PR c++/70376
|
||||||
|
@ -1185,6 +1185,14 @@ failure:
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Atomically store pair of uint16_t values (HEADER and REST) to a PACKET. */
|
||||||
|
|
||||||
|
void
|
||||||
|
packet_store_release (uint32_t* packet, uint16_t header, uint16_t rest)
|
||||||
|
{
|
||||||
|
__atomic_store_n (packet, header | (rest << 16), __ATOMIC_RELEASE);
|
||||||
|
}
|
||||||
|
|
||||||
/* Part of the libgomp plugin interface. Run a kernel on device N and pass it
|
/* Part of the libgomp plugin interface. Run a kernel on device N and pass it
|
||||||
an array of pointers in VARS as a parameter. The kernel is identified by
|
an array of pointers in VARS as a parameter. The kernel is identified by
|
||||||
FN_PTR which must point to a kernel_info structure. */
|
FN_PTR which must point to a kernel_info structure. */
|
||||||
@ -1232,7 +1240,6 @@ GOMP_OFFLOAD_run (int n, void *fn_ptr, void *vars, void **args)
|
|||||||
+ index % agent->command_q->size;
|
+ index % agent->command_q->size;
|
||||||
|
|
||||||
memset (((uint8_t *) packet) + 4, 0, sizeof (*packet) - 4);
|
memset (((uint8_t *) packet) + 4, 0, sizeof (*packet) - 4);
|
||||||
packet->setup |= (uint16_t) 1 << HSA_KERNEL_DISPATCH_PACKET_SETUP_DIMENSIONS;
|
|
||||||
packet->grid_size_x = kla->gdims[0];
|
packet->grid_size_x = kla->gdims[0];
|
||||||
uint32_t wgs = kla->wdims[0];
|
uint32_t wgs = kla->wdims[0];
|
||||||
if (wgs == 0)
|
if (wgs == 0)
|
||||||
@ -1275,7 +1282,9 @@ GOMP_OFFLOAD_run (int n, void *fn_ptr, void *vars, void **args)
|
|||||||
|
|
||||||
HSA_DEBUG ("Going to dispatch kernel %s\n", kernel->name);
|
HSA_DEBUG ("Going to dispatch kernel %s\n", kernel->name);
|
||||||
|
|
||||||
__atomic_store_n ((uint16_t *) (&packet->header), header, __ATOMIC_RELEASE);
|
packet_store_release ((uint32_t *) packet, header,
|
||||||
|
1 << HSA_KERNEL_DISPATCH_PACKET_SETUP_DIMENSIONS);
|
||||||
|
|
||||||
hsa_signal_store_release (agent->command_q->doorbell_signal, index);
|
hsa_signal_store_release (agent->command_q->doorbell_signal, index);
|
||||||
|
|
||||||
/* TODO: GPU agents in Carrizo APUs cannot properly update L2 cache for
|
/* TODO: GPU agents in Carrizo APUs cannot properly update L2 cache for
|
||||||
|
Loading…
Reference in New Issue
Block a user