86 lines
2.6 KiB
C++
86 lines
2.6 KiB
C++
#pragma once
|
|
|
|
#include "llvm/Support/CommandLine.h"
|
|
|
|
#define INSTRUMENTSTAGE_ENUM_PIM
|
|
|
|
#define INSTRUMENTSTAGE_CL_ENUM_PIM
|
|
|
|
#define PROFILEIR_CL_ENUM_PIM
|
|
|
|
#define OPTREPORT_ENUM_PIM
|
|
|
|
#define OPTREPORT_CL_ENUM_PIM
|
|
|
|
namespace onnx_mlir {
|
|
typedef enum {
|
|
EmitSpatial = 0,
|
|
EmitPim = 1,
|
|
EmitPimBufferized = 2,
|
|
EmitPimCodegen = 3
|
|
} PimEmissionTargetType;
|
|
|
|
typedef enum {
|
|
MergeSchedulerPeft = 0,
|
|
} PimMergeSchedulerType;
|
|
|
|
typedef enum {
|
|
PimMemoryReportNone = 0,
|
|
PimMemoryReportSummary = 1,
|
|
PimMemoryReportFull = 2,
|
|
} PimMemoryReportLevel;
|
|
|
|
typedef enum {
|
|
PimConvLoweringAuto = 0,
|
|
PimConvLoweringLegacy = 1,
|
|
PimConvLoweringDepthwise = 2,
|
|
PimConvLoweringPackedIm2Col = 3,
|
|
PimConvLoweringStreamedPatch = 4,
|
|
PimConvLoweringStreamedPacked = 5,
|
|
PimConvLoweringOutputChannelTiled = 6,
|
|
PimConvLoweringInputKTiled = 7,
|
|
PimConvLoweringTiled2D = 8,
|
|
} PimConvLoweringType;
|
|
|
|
typedef enum {
|
|
SpatialDataflowExportNone = 0,
|
|
SpatialDataflowExportPre = 1,
|
|
SpatialDataflowExportPost = 2,
|
|
SpatialDataflowExportBoth = 3,
|
|
} PimSpatialDataflowExportType;
|
|
|
|
extern llvm::cl::OptionCategory OnnxMlirOptions;
|
|
extern llvm::cl::opt<PimEmissionTargetType> pimEmissionTarget;
|
|
extern llvm::cl::opt<PimMergeSchedulerType> pimMergeScheduler;
|
|
extern llvm::cl::opt<PimMemoryReportLevel> pimMemoryReport;
|
|
extern llvm::cl::opt<PimConvLoweringType> pimConvLowering;
|
|
extern llvm::cl::opt<PimSpatialDataflowExportType> pimExportSpatialDataflow;
|
|
|
|
extern llvm::cl::opt<bool> pimOnlyCodegen;
|
|
extern llvm::cl::opt<bool> pimDisableMemoryCoalescing;
|
|
extern llvm::cl::opt<bool> useExperimentalConvImpl;
|
|
extern llvm::cl::opt<bool> pimEmitJson;
|
|
extern llvm::cl::opt<bool> pimReportConvLowering;
|
|
extern llvm::cl::opt<bool> pimDetectCommunicationDeadlock;
|
|
extern llvm::cl::opt<bool> pimMaterializeScalarFanoutGlobalOrder;
|
|
extern llvm::cl::opt<bool> pimTraceCommunicationMaterialization;
|
|
|
|
extern llvm::cl::opt<size_t> crossbarSize;
|
|
extern llvm::cl::opt<size_t> crossbarCountInCore;
|
|
extern llvm::cl::opt<long> coresCount;
|
|
extern llvm::cl::opt<uint64_t> pimConvIm2colMaxElements;
|
|
extern llvm::cl::opt<uint64_t> pimConvStreamChunkPositions;
|
|
|
|
bool hasExplicitPimCoreCount();
|
|
void verifyExplicitPimCoreCount();
|
|
|
|
// This option, by default set to false, will ignore an error when resolving a
|
|
// specific tiles of the operands of a concat. This specific case is when the
|
|
// wanted tile is generated by two separate operands of the concat. If this is
|
|
// set to false, this corner case will assert an error. If this is set to true,
|
|
// a simplification is performed and only the tile from the first operand is
|
|
// taken.
|
|
extern llvm::cl::opt<bool> ignoreConcatError;
|
|
|
|
} // namespace onnx_mlir
|