binary pim code for reduced memory usage
Validate Operations / validate-operations (push) Has been cancelled
Validate Operations / validate-operations (push) Has been cancelled
fast pim code emission
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
|
||||
#include "src/Accelerators/PIM/Common/IR/WeightUtils.hpp"
|
||||
#include "src/Accelerators/PIM/Compiler/PimArtifactWriter.hpp"
|
||||
#include "src/Accelerators/PIM/Compiler/PimBinaryFormat.hpp"
|
||||
#include "src/Accelerators/PIM/Compiler/PimCodeGen.hpp"
|
||||
#include "src/Accelerators/PIM/Compiler/PimCompilerOptions.hpp"
|
||||
|
||||
@@ -19,18 +20,35 @@ using namespace mlir;
|
||||
|
||||
namespace onnx_mlir {
|
||||
|
||||
OnnxMlirCompilerErrorCodes writeHostCoreJson(StringRef outputDirPath) {
|
||||
OnnxMlirCompilerErrorCodes writeHostCoreArtifacts(StringRef outputDirPath) {
|
||||
std::error_code errorCode;
|
||||
std::string outputHostCorePath = outputDirPath.str() + "/core_0.json";
|
||||
raw_fd_ostream hostFileStream(outputHostCorePath, errorCode);
|
||||
std::string outputHostCorePath = outputDirPath.str() + "/core_0.pim";
|
||||
raw_fd_ostream hostFileStream(outputHostCorePath, errorCode, sys::fs::OF_None);
|
||||
if (errorCode) {
|
||||
errs() << "Error while opening host core file `" << outputHostCorePath << "`: " << errorCode.message() << '\n';
|
||||
return InvalidOutputFileAccess;
|
||||
}
|
||||
|
||||
// The host core json contains two no-op-like instructions to satisfy pimsim-nn.
|
||||
hostFileStream << "[{\"imm\":0,\"op\":\"sldi\",\"rd\":0},{\"imm\":0,\"op\":\"sldi\",\"rd\":0}]";
|
||||
pim_binary::writeHeader(hostFileStream);
|
||||
pim_binary::InstructionRecord noop;
|
||||
noop.opcode = pim_binary::Opcode::sldi;
|
||||
pim_binary::writeInstructionRecord(hostFileStream, noop);
|
||||
pim_binary::writeInstructionRecord(hostFileStream, noop);
|
||||
pim_binary::patchInstructionCount(hostFileStream, 2);
|
||||
hostFileStream.close();
|
||||
|
||||
if (pimEmitJson.getValue()) {
|
||||
std::string outputHostJsonPath = outputDirPath.str() + "/core_0.json";
|
||||
raw_fd_ostream hostJsonStream(outputHostJsonPath, errorCode);
|
||||
if (errorCode) {
|
||||
errs() << "Error while opening host core json file `" << outputHostJsonPath << "`: " << errorCode.message()
|
||||
<< '\n';
|
||||
return InvalidOutputFileAccess;
|
||||
}
|
||||
// The host core json contains two no-op-like instructions to satisfy pimsim-nn
|
||||
hostJsonStream << "[{\"imm\":0,\"op\":\"sldi\",\"rd\":0},{\"imm\":0,\"op\":\"sldi\",\"rd\":0}]";
|
||||
hostJsonStream.close();
|
||||
}
|
||||
return CompilerSuccess;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user