Read HCC_OPT_FLUSH and optimize dispatch accordingly.

If HCC is in this mode, we can use less aggressive flushes in some
cases.


[ROCm/hip commit: 1635b8f43f]
Этот коммит содержится в:
Ben Sander
2017-01-25 21:50:52 -06:00
родитель 4395881206
Коммит e129b09a6f
3 изменённых файлов: 18 добавлений и 4 удалений
+10 -4
Просмотреть файл
@@ -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);