mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-22 10:17:01 +08:00
Add multiEngine field to command queue with debug variable to override it.
Change-Id: I3c1e424a7ad545e166e178d1726595e6d9502ca7
This commit is contained in:
committed by
sys_ocldev
parent
fbb84476ef
commit
0e7fd2ffed
@@ -71,6 +71,10 @@ CommandQueue::CommandQueue(Context *context, Device *deviceId, const cl_queue_pr
|
||||
}
|
||||
|
||||
processProperties(properties);
|
||||
|
||||
if (DebugManager.flags.ForceMultiEngineQueue.get() > -1) {
|
||||
this->multiEngineQueue = DebugManager.flags.ForceMultiEngineQueue.get();
|
||||
}
|
||||
}
|
||||
|
||||
CommandQueue::~CommandQueue() {
|
||||
|
||||
@@ -406,6 +406,8 @@ class CommandQueue : public BaseObject<_cl_command_queue> {
|
||||
return requiresCacheFlushAfterWalker;
|
||||
}
|
||||
|
||||
bool isMultiEngineQueue() { return this->multiEngineQueue; }
|
||||
|
||||
// taskCount of last task
|
||||
uint32_t taskCount = 0;
|
||||
|
||||
@@ -456,6 +458,7 @@ class CommandQueue : public BaseObject<_cl_command_queue> {
|
||||
bool mapDcFlushRequired = false;
|
||||
bool isSpecialCommandQueue = false;
|
||||
bool requiresCacheFlushAfterWalker = false;
|
||||
bool multiEngineQueue = false;
|
||||
|
||||
std::unique_ptr<TimestampPacketContainer> timestampPacketContainer;
|
||||
|
||||
|
||||
@@ -122,5 +122,6 @@ DECLARE_DEBUG_VARIABLE(int32_t, NodeOrdinal, -1, "-1: default do not override, 0
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, OverrideThreadArbitrationPolicy, -1, "-1 (dont override) or any valid config (0: Age Based, 1: Round Robin)")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, OverrideAubDeviceId, -1, "-1 dont override, any other: use this value for AUB generation device id")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, EnableTimestampPacket, -1, "-1: default, 0: disable, 1:enable. Write Timestamp Packet for each set of gpu walkers")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, ForceMultiEngineQueue, -1, "-1 no change, 0: force false 1:force true. Forces multi engine queue flag in command queue")
|
||||
DECLARE_DEBUG_VARIABLE(bool, UseMaxSimdSizeToDeduceMaxWorkgroupSize, false, "With this flag on, max workgroup size is deduced using SIMD32 instead of SIMD8, this causes the max wkg size to be 4 times bigger")
|
||||
DECLARE_DEBUG_VARIABLE(bool, ReturnRawGpuTimestamps, false, "Driver returns raw GPU tiemstamps instead of calculated ones.")
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "unit_tests/fixtures/memory_management_fixture.h"
|
||||
#include "unit_tests/fixtures/buffer_fixture.h"
|
||||
#include "unit_tests/helpers/unit_test_helper.h"
|
||||
#include "unit_tests/helpers/debug_manager_state_restore.h"
|
||||
#include "unit_tests/libult/ult_command_stream_receiver.h"
|
||||
#include "unit_tests/mocks/mock_memory_manager.h"
|
||||
#include "unit_tests/mocks/mock_command_queue.h"
|
||||
@@ -976,3 +977,20 @@ TEST(CommandQueueDestructorTest, whenCommandQueueIsDestroyedThenDestroysTimestam
|
||||
context->release();
|
||||
EXPECT_EQ(1, context->getRefInternalCount());
|
||||
}
|
||||
|
||||
TEST(CommandQueuePropertiesTests, whenDefaultCommandQueueIsCreatedThenItIsNotMultiEngineQueue) {
|
||||
MockCommandQueue queue;
|
||||
EXPECT_FALSE(queue.multiEngineQueue);
|
||||
EXPECT_FALSE(queue.isMultiEngineQueue());
|
||||
queue.multiEngineQueue = true;
|
||||
EXPECT_TRUE(queue.isMultiEngineQueue());
|
||||
}
|
||||
TEST(CommandQueuePropertiesTests, whenDebugVariableOverridesMultiEngineVariableThenItIsSetToTrue) {
|
||||
DebugManagerStateRestore restore;
|
||||
DebugManager.flags.ForceMultiEngineQueue.set(1u);
|
||||
MockCommandQueue queue;
|
||||
EXPECT_TRUE(queue.isMultiEngineQueue());
|
||||
DebugManager.flags.ForceMultiEngineQueue.set(0u);
|
||||
MockCommandQueue queue2;
|
||||
EXPECT_FALSE(queue2.isMultiEngineQueue());
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ namespace OCLRT {
|
||||
class MockCommandQueue : public CommandQueue {
|
||||
public:
|
||||
using CommandQueue::device;
|
||||
using CommandQueue::multiEngineQueue;
|
||||
using CommandQueue::obtainNewTimestampPacketNodes;
|
||||
using CommandQueue::requiresCacheFlushAfterWalker;
|
||||
using CommandQueue::throttle;
|
||||
|
||||
@@ -108,3 +108,4 @@ EnableCacheFlushAfterWalker = 0
|
||||
EnableHostPtrTracking = 1
|
||||
DisableDcFlushInEpilogue = 0
|
||||
EnableCacheFlushAfterWalkerForAllQueues = 0
|
||||
ForceMultiEngineQueue = -1
|
||||
|
||||
Reference in New Issue
Block a user