}
void MKLDNNQuantizeNode::appendPostOps(mkldnn::post_ops& ops) {
- ops.append_quantization(quantizeAlgorithm , cropLow, cropHigh, inputScale, inputShift, outputScale, outputShift);
+ if (!isPostOpDataInitialized) {
+ isPostOpDataInitialized = true;
+ cropLowData.set(cropLow.size(), 1 << 1, &cropLow[0]);
+ cropHighData.set(cropHigh.size(), 1 << 1, &cropHigh[0]);
+ inputScaleData.set(inputScale.size(), 1 << 1, &inputScale[0]);
+ inputShiftData.set(inputShift.size(), 1 << 1, &inputShift[0]);
+ outputScaleData.set(outputScale.size(), 1 << 1, &outputScale[0]);
+ outputShiftData.set(outputShift.size(), 1 << 1, &outputShift[0]);
+ }
+
+ ops.append_quantization(quantizeAlgorithm, &cropLowData, &cropHighData, &inputScaleData, &inputShiftData, &outputScaleData, &outputShiftData);
}
bool MKLDNNQuantizeNode::created() const {
#include <memory>
#include <vector>
#include <utility>
+#include <primitive_attr.hpp>
namespace MKLDNNPlugin {
const std::vector<float>& getOutputScale() const { return outputScale; }
const std::vector<float>& getOutputShift() const { return outputShift; }
- void setCropLow(std::vector<float> newCropLow) { cropLow = std::move(newCropLow); }
- void setCropHigh(std::vector<float> newCropHigh) { cropHigh = std::move(newCropHigh); }
- void setInputScale(std::vector<float> newInputScale) { inputScale = std::move(newInputScale); }
- void setInputShift(std::vector<float> newInputShift) { inputShift = std::move(newInputShift); }
- void setOutputScale(std::vector<float> newOutputScale) { outputScale = std::move(newOutputScale); }
- void setOutputShift(std::vector<float> newOutputShift) { outputShift = std::move(newOutputShift); }
+ void setCropLow(std::vector<float> newCropLow) { cropLow = std::move(newCropLow); isPostOpDataInitialized = false; }
+ void setCropHigh(std::vector<float> newCropHigh) { cropHigh = std::move(newCropHigh); isPostOpDataInitialized = false; }
+ void setInputScale(std::vector<float> newInputScale) { inputScale = std::move(newInputScale); isPostOpDataInitialized = false; }
+ void setInputShift(std::vector<float> newInputShift) { inputShift = std::move(newInputShift); isPostOpDataInitialized = false; }
+ void setOutputScale(std::vector<float> newOutputScale) { outputScale = std::move(newOutputScale); isPostOpDataInitialized = false;}
+ void setOutputShift(std::vector<float> newOutputShift) { outputShift = std::move(newOutputShift); isPostOpDataInitialized = false; }
bool isInputLowBroadcast() const { return isInputLowBroadcasted; }
bool isInputHighBroadcast() const { return isInputHighBroadcasted; }
std::vector<float> outputScale;
std::vector<float> outputShift;
+ // mkldnn style post ops data representation
+ bool isPostOpDataInitialized = false;
+ mkldnn::impl::shifts_t<float> cropLowData;
+ mkldnn::impl::shifts_t<float> cropHighData;
+ mkldnn::impl::scales_t inputScaleData;
+ mkldnn::impl::shifts_t<float> inputShiftData;
+ mkldnn::impl::scales_t outputScaleData;
+ mkldnn::impl::shifts_t<float> outputShiftData;
+
bool isInputLowBroadcasted = false;
bool isInputHighBroadcasted = false;
bool isOutputLowBroadcasted = false;