517bf08c37
SWDEV-180872 - Runtime support changes for Cooperative Group Features - Initial implementation of the core functionality. Disabled by default. Use GPU_ENABLE_COOP_GROUPS=1 to enable the feature. - Runtime uses device queue for cooperative executions with a synchronization on the launched queue. - The current implementation is pure runtime change and it can work if only one app uses this feature. No ROCr/KFD support was added or tested - Only inline assembler was tested Affected files ... ... //depot/stg/opencl/drivers/opencl/api/hip/hip_device.cpp#20 edit ... //depot/stg/opencl/drivers/opencl/api/hip/hip_device_runtime.cpp#15 edit ... //depot/stg/opencl/drivers/opencl/api/hip/hip_hcc.def.in#15 edit ... //depot/stg/opencl/drivers/opencl/api/hip/hip_hcc.map.in#17 edit ... //depot/stg/opencl/drivers/opencl/api/hip/hip_module.cpp#28 edit ... //depot/stg/opencl/drivers/opencl/api/hip/hip_platform.cpp#32 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/device.hpp#338 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.cpp#606 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpudevice.hpp#171 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.cpp#31 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palblit.hpp#9 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.cpp#142 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/paldevice.hpp#39 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palschedcl.cpp#6 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.cpp#135 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/pal/palvirtual.hpp#61 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.cpp#32 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocblit.hpp#12 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.cpp#127 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocdevice.hpp#37 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocschedcl.cpp#3 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.cpp#75 edit ... //depot/stg/opencl/drivers/opencl/runtime/device/rocm/rocvirtual.hpp#23 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/command.cpp#94 edit ... //depot/stg/opencl/drivers/opencl/runtime/platform/command.hpp#92 edit ... //depot/stg/opencl/drivers/opencl/runtime/utils/flags.hpp#311 edit
37 wiersze
867 B
C++
37 wiersze
867 B
C++
//
|
|
// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved.
|
|
//
|
|
namespace roc {
|
|
|
|
#define BLIT_KERNEL(...) #__VA_ARGS__
|
|
|
|
const char* SchedulerSourceCode = BLIT_KERNEL(
|
|
\n
|
|
extern void __amd_scheduler_rocm(__global void*);
|
|
\n
|
|
__kernel void scheduler(__global void* params) {
|
|
__amd_scheduler_rocm(params);
|
|
}
|
|
\n);
|
|
const char* GwsInitSourceCode = BLIT_KERNEL(
|
|
\n
|
|
__kernel void gwsInit(uint value) {
|
|
unsigned int m0_backup, new_m0;
|
|
__asm__ __volatile__(
|
|
"s_mov_b32 %0 m0\n"
|
|
"v_readfirstlane_b32 %1 %2\n"
|
|
"s_nop 0\n"
|
|
"s_mov_b32 m0 %1\n"
|
|
"s_nop 0\n"
|
|
"ds_gws_init %3 offset:0 gds\n"
|
|
"s_waitcnt lgkmcnt(0) expcnt(0)\n"
|
|
"s_mov_b32 m0 %0\n"
|
|
"s_nop 0"
|
|
: "=s"(m0_backup), "=s"(new_m0)
|
|
: "v"(0 << 0x10), "{v0}"(value - 1)
|
|
: "memory");
|
|
}
|
|
\n);
|
|
|
|
} // namespace roc
|