mirror of https://github.com/alibaba/MNN.git
				
				
				
			
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
| //
 | |
| //  VulkanConvolutionWinograd.hpp
 | |
| //  MNN
 | |
| //
 | |
| //  Created by MNN on 2019/01/31.
 | |
| //  Copyright © 2018, Alibaba Group Holding Limited
 | |
| //
 | |
| 
 | |
| #ifndef VulkanConvolutionWinograd_hpp
 | |
| #define VulkanConvolutionWinograd_hpp
 | |
| 
 | |
| #include "VulkanConvolutionImpl.hpp"
 | |
| #include "VulkanMatrixMultier.hpp"
 | |
| 
 | |
| namespace MNN {
 | |
| class VulkanConvolutionWinograd : public VulkanBasicExecution {
 | |
| public:
 | |
|     VulkanConvolutionWinograd(VulkanBackend* backend, const Convolution2DCommon* convOption, const float* weightPtr,
 | |
|                               const float* biasPtr, int ci, int co);
 | |
|     virtual ~VulkanConvolutionWinograd();
 | |
| 
 | |
|     virtual ErrorCode onEncode(const std::vector<Tensor*>& inputs, const std::vector<Tensor*>& outputs,
 | |
|                                const VulkanCommandPool::Buffer* cmdBuffer) override;
 | |
|     static bool support(const Convolution2DCommon* convOption);
 | |
| 
 | |
| private:
 | |
|     std::shared_ptr<VulkanMatrixMultier> mMultier;
 | |
|     std::shared_ptr<VulkanImage> mBias;
 | |
| 
 | |
|     VulkanBackend* mBackend = nullptr;
 | |
| 
 | |
|     const VulkanPipeline* mSourceTransform = nullptr;
 | |
|     const VulkanPipeline* mDestTransform   = nullptr;
 | |
|     const VulkanSampler* mSampler          = nullptr;
 | |
| 
 | |
|     std::vector<std::shared_ptr<VulkanPipeline::DescriptorSet>> mSourceTransformSet;
 | |
|     std::vector<std::shared_ptr<VulkanPipeline::DescriptorSet>> mDestTransformSet;
 | |
|     std::shared_ptr<VulkanBuffer> mWinogradConst;
 | |
| 
 | |
|     ivec3 mTransformLocalSize;
 | |
|     const Convolution2DCommon* mCommon;
 | |
|     std::vector<std::shared_ptr<VulkanBuffer>> mOffsetsBuffer;
 | |
| 
 | |
|     int mUnit = 0;
 | |
| };
 | |
| } // namespace MNN
 | |
| #endif /* VulkanConvolutionWinograd_hpp */
 |