mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-04 15:53:45 +08:00
Pass only updated spec const values
Change-Id: Idc9720fb700e7ce9745872e08038b31836300a38 Signed-off-by: Lukasz Jobczyk <lukasz.jobczyk@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
b546e89f99
commit
ab7a846514
@@ -80,6 +80,13 @@ TranslationOutput::ErrorCode CompilerInterface::build(
|
||||
auto fclOptions = CIF::Builtins::CreateConstBuffer(igcMain.get(), input.apiOptions.begin(), input.apiOptions.size());
|
||||
auto fclInternalOptions = CIF::Builtins::CreateConstBuffer(igcMain.get(), input.internalOptions.begin(), input.internalOptions.size());
|
||||
|
||||
auto idsBuffer = CIF::Builtins::CreateConstBuffer(igcMain.get(), nullptr, 0);
|
||||
auto valuesBuffer = CIF::Builtins::CreateConstBuffer(igcMain.get(), nullptr, 0);
|
||||
for (const auto &specConst : input.specConstants.specializedValues) {
|
||||
idsBuffer->PushBackRawCopy(specConst.first);
|
||||
valuesBuffer->PushBackRawCopy(specConst.second);
|
||||
}
|
||||
|
||||
CIF::RAII::UPtr_t<CIF::Builtins::BufferSimple> intermediateRepresentation;
|
||||
|
||||
if (srcCodeType == IGC::CodeType::oclC) {
|
||||
@@ -124,7 +131,7 @@ TranslationOutput::ErrorCode CompilerInterface::build(
|
||||
|
||||
auto igcTranslationCtx = createIgcTranslationCtx(device, intermediateCodeType, IGC::CodeType::oclGenBin);
|
||||
|
||||
auto igcOutput = translate(igcTranslationCtx.get(), intermediateRepresentation.get(), input.specConstants.idsBuffer, input.specConstants.valuesBuffer,
|
||||
auto igcOutput = translate(igcTranslationCtx.get(), intermediateRepresentation.get(), idsBuffer.get(), valuesBuffer.get(),
|
||||
fclOptions.get(), fclInternalOptions.get(), input.GTPinInput);
|
||||
|
||||
if (igcOutput == nullptr) {
|
||||
@@ -250,19 +257,13 @@ TranslationOutput::ErrorCode CompilerInterface::getSpecConstantsInfo(const NEO::
|
||||
auto inSrc = CIF::Builtins::CreateConstBuffer(igcMain.get(), srcSpirV.begin(), srcSpirV.size());
|
||||
output.idsBuffer = CIF::Builtins::CreateConstBuffer(igcMain.get(), nullptr, 0);
|
||||
output.sizesBuffer = CIF::Builtins::CreateConstBuffer(igcMain.get(), nullptr, 0);
|
||||
output.valuesBuffer = CIF::Builtins::CreateConstBuffer(igcMain.get(), nullptr, 0);
|
||||
|
||||
auto retVal = getSpecConstantsInfoImpl(igcTranslationCtx.get(), inSrc.get(), output.idsBuffer.get(), output.sizesBuffer.get(), output.valuesBuffer.get());
|
||||
auto retVal = getSpecConstantsInfoImpl(igcTranslationCtx.get(), inSrc.get(), output.idsBuffer.get(), output.sizesBuffer.get());
|
||||
|
||||
if (!retVal) {
|
||||
return TranslationOutput::ErrorCode::UnknownError;
|
||||
}
|
||||
|
||||
output.valuesBuffer->Resize(output.idsBuffer->GetSizeRaw() * 2);
|
||||
for (uint32_t i = 0; i < output.valuesBuffer->GetSize<uint64_t>(); i++) {
|
||||
output.valuesBuffer->GetMemoryWriteable<uint64_t>()[i] = 0u;
|
||||
}
|
||||
|
||||
return TranslationOutput::ErrorCode::Success;
|
||||
}
|
||||
|
||||
|
||||
@@ -41,9 +41,7 @@ struct TranslationInput {
|
||||
void *GTPinInput = nullptr;
|
||||
|
||||
struct SpecConstants {
|
||||
CIF::Builtins::BufferLatest *idsBuffer = nullptr;
|
||||
CIF::Builtins::BufferLatest *sizesBuffer = nullptr;
|
||||
CIF::Builtins::BufferLatest *valuesBuffer = nullptr;
|
||||
std::map<uint32_t, uint64_t> specializedValues;
|
||||
} specConstants;
|
||||
};
|
||||
|
||||
@@ -94,7 +92,6 @@ struct TranslationOutput {
|
||||
struct SpecConstantInfo {
|
||||
CIF::RAII::UPtr_t<CIF::Builtins::BufferLatest> idsBuffer;
|
||||
CIF::RAII::UPtr_t<CIF::Builtins::BufferLatest> sizesBuffer;
|
||||
CIF::RAII::UPtr_t<CIF::Builtins::BufferLatest> valuesBuffer;
|
||||
};
|
||||
|
||||
class CompilerInterface {
|
||||
|
||||
@@ -59,9 +59,8 @@ template <typename TranslationCtx>
|
||||
inline bool getSpecConstantsInfoImpl(TranslationCtx *tCtx,
|
||||
CIFBuffer *src,
|
||||
CIFBuffer *outSpecConstantsIds,
|
||||
CIFBuffer *outSpecConstantsSizes,
|
||||
CIFBuffer *outSpecConstantsValues) {
|
||||
if (!NEO::areNotNullptr(tCtx, src, outSpecConstantsIds, outSpecConstantsSizes, outSpecConstantsValues)) {
|
||||
CIFBuffer *outSpecConstantsSizes) {
|
||||
if (!NEO::areNotNullptr(tCtx, src, outSpecConstantsIds, outSpecConstantsSizes)) {
|
||||
return false;
|
||||
}
|
||||
return tCtx->GetSpecConstantsInfoImpl(src, outSpecConstantsIds, outSpecConstantsSizes);
|
||||
|
||||
Reference in New Issue
Block a user