Read HCC_OPT_FLUSH and optimize dispatch accordingly.

If HCC is in this mode, we can use less aggressive flushes in some
cases.
This commit is contained in:
Ben Sander
2017-01-25 21:50:52 -06:00
parent d75d0596bf
commit 1635b8f43f
3 changed files with 18 additions and 4 deletions
+10 -4
View File
@@ -320,11 +320,17 @@ hipError_t hipModuleLaunchKernel(hipFunction_t f,
aql.kernel_object = f._object;
aql.setup = 3 << HSA_KERNEL_DISPATCH_PACKET_SETUP_DIMENSIONS;
aql.header = (HSA_PACKET_TYPE_KERNEL_DISPATCH << HSA_PACKET_HEADER_TYPE) |
(1 << HSA_PACKET_HEADER_BARRIER) |
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) |
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE);
(1 << HSA_PACKET_HEADER_BARRIER); // TODO - honor queue setting for execute_in_order
lp.av->dispatch_hsa_kernel(&aql, config[1] /* kernarg*/, kernArgSize);
if (HCC_OPT_FLUSH) {
aql.header |= (HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) |
(HSA_FENCE_SCOPE_AGENT << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE);
} else {
aql.header |= (HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_ACQUIRE_FENCE_SCOPE) |
(HSA_FENCE_SCOPE_SYSTEM << HSA_PACKET_HEADER_RELEASE_FENCE_SCOPE);
};
lp.av->dispatch_hsa_kernel(&aql, config[1] /* kernarg*/, kernArgSize, nullptr/*completion_future*/);
ihipPostLaunchKernel(f._name, hStream, lp);