Multiple AUB CSRs to operate on a single file stream

This commit introduces AUB stream provider class to produce
a single file stream in multi device scenarios with multiple AUB CSRs.

Change-Id: Id70e0d680459d34f4291b9e56aa39d960f025ac6
This commit is contained in:
Milczarek, Slawomir
2018-09-20 00:36:44 +02:00
committed by sys_ocldev
parent 30709f1910
commit ee797c2f14
10 changed files with 213 additions and 50 deletions

View File

@ -6,6 +6,7 @@
*/
#include "runtime/execution_environment/execution_environment.h"
#include "runtime/command_stream/aub_stream_provider.h"
#include "runtime/command_stream/command_stream_receiver.h"
#include "runtime/compiler_interface/compiler_interface.h"
#include "runtime/source_level_debugger/source_level_debugger.h"
@ -21,6 +22,11 @@ ExecutionEnvironment::ExecutionEnvironment() = default;
ExecutionEnvironment::~ExecutionEnvironment() = default;
extern CommandStreamReceiver *createCommandStream(const HardwareInfo *pHwInfo, ExecutionEnvironment &executionEnvironment);
void ExecutionEnvironment::initAubStreamProvider() {
if (!aubStreamProvider) {
aubStreamProvider.reset(new AubFileStreamProvider());
}
}
void ExecutionEnvironment::initGmm(const HardwareInfo *hwInfo) {
if (!gmmHelper) {
gmmHelper.reset(new GmmHelper(hwInfo));

View File

@ -13,6 +13,7 @@
#include <vector>
namespace OCLRT {
class AubStreamProvider;
class GmmHelper;
class CommandStreamReceiver;
class MemoryManager;
@ -34,6 +35,7 @@ class ExecutionEnvironment : public ReferenceTrackedObject<ExecutionEnvironment>
ExecutionEnvironment();
~ExecutionEnvironment() override;
void initAubStreamProvider();
void initGmm(const HardwareInfo *hwInfo);
bool initializeCommandStreamReceiver(const HardwareInfo *pHwInfo, uint32_t deviceIndex);
void initializeMemoryManager(bool enable64KBpages, bool enableLocalMemory, uint32_t deviceIndex);
@ -45,6 +47,7 @@ class ExecutionEnvironment : public ReferenceTrackedObject<ExecutionEnvironment>
std::unique_ptr<OSInterface> osInterface;
std::unique_ptr<MemoryManager> memoryManager;
std::unique_ptr<AubStreamProvider> aubStreamProvider;
std::vector<std::unique_ptr<CommandStreamReceiver>> commandStreamReceivers;
std::unique_ptr<BuiltIns> builtins;
std::unique_ptr<CompilerInterface> compilerInterface;