mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-21 09:14:47 +08:00
[perf] Prefetch of kmd-migrated shared allocation with initial placement on GPU
Related-To: NEO-7646 Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
06bd405e88
commit
c9fdeb200c
@@ -240,6 +240,12 @@ int DrmMockPrelimContext::handlePrelimRequest(DrmIoctl request, void *arg) {
|
||||
}
|
||||
return vmAdviseReturn;
|
||||
} break;
|
||||
case DrmIoctl::GemVmPrefetch: {
|
||||
const auto req = static_cast<prelim_drm_i915_gem_vm_prefetch *>(arg);
|
||||
vmPrefetchCalled++;
|
||||
receivedVmPrefetch.push_back(VmPrefetch{req->vm_id, req->region});
|
||||
return 0;
|
||||
} break;
|
||||
case DrmIoctl::UuidRegister: {
|
||||
auto uuidControl = reinterpret_cast<prelim_drm_i915_uuid_control *>(arg);
|
||||
|
||||
|
||||
@@ -78,6 +78,11 @@ struct VmAdvise {
|
||||
MemoryClassInstance memoryRegions{0};
|
||||
};
|
||||
|
||||
struct VmPrefetch {
|
||||
uint32_t vmId{0};
|
||||
uint32_t region{0};
|
||||
};
|
||||
|
||||
struct UuidVmBindExt {
|
||||
uint32_t handle{0};
|
||||
uint64_t nextExtension{0};
|
||||
@@ -130,6 +135,9 @@ struct DrmMockPrelimContext {
|
||||
std::optional<VmAdvise> receivedVmAdvise[2]{};
|
||||
int vmAdviseReturn{0};
|
||||
|
||||
size_t vmPrefetchCalled{0};
|
||||
std::vector<VmPrefetch> receivedVmPrefetch{};
|
||||
|
||||
int mmapOffsetReturn{0};
|
||||
|
||||
uint32_t uuidHandle{1};
|
||||
|
||||
@@ -18,6 +18,42 @@
|
||||
#include "shared/test/common/os_interface/linux/drm_memory_manager_fixture.h"
|
||||
#include "shared/test/common/os_interface/linux/drm_mock_memory_info.h"
|
||||
|
||||
template <bool multipleSubDevices>
|
||||
class DrmMemoryManagerWithSubDevicesPrelimTest : public ::testing::Test {
|
||||
public:
|
||||
void SetUp() override {
|
||||
DebugManager.flags.CreateMultipleSubDevices.set(multipleSubDevices ? 2 : 1);
|
||||
|
||||
executionEnvironment = new ExecutionEnvironment();
|
||||
executionEnvironment->prepareRootDeviceEnvironments(1);
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->setHwInfoAndInitHelpers(defaultHwInfo.get());
|
||||
|
||||
mock = new DrmQueryMock(*executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]);
|
||||
auto memoryInfo = new MockExtendedMemoryInfo(*mock);
|
||||
mock->memoryInfo.reset(memoryInfo);
|
||||
|
||||
mock->queryEngineInfo();
|
||||
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->osInterface = std::make_unique<OSInterface>();
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->osInterface->setDriverModel(std::unique_ptr<DriverModel>(mock));
|
||||
executionEnvironment->rootDeviceEnvironments[rootDeviceIndex]->memoryOperationsInterface = DrmMemoryOperationsHandler::create(*mock, 0u);
|
||||
|
||||
memoryManager = new TestedDrmMemoryManager(true, false, false, *executionEnvironment);
|
||||
executionEnvironment->memoryManager.reset(memoryManager);
|
||||
|
||||
device.reset(MockDevice::createWithExecutionEnvironment<MockDevice>(defaultHwInfo.get(), executionEnvironment, rootDeviceIndex));
|
||||
}
|
||||
|
||||
protected:
|
||||
DebugManagerStateRestore restorer{};
|
||||
ExecutionEnvironment *executionEnvironment{nullptr};
|
||||
DrmQueryMock *mock{nullptr};
|
||||
std::unique_ptr<MockDevice> device;
|
||||
TestedDrmMemoryManager *memoryManager{nullptr};
|
||||
|
||||
constexpr static uint32_t rootDeviceIndex{0u};
|
||||
};
|
||||
|
||||
class DrmMemoryManagerLocalMemoryPrelimTest : public ::testing::Test {
|
||||
public:
|
||||
void SetUp() override {
|
||||
|
||||
Reference in New Issue
Block a user