You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							45 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							45 lines
						
					
					
						
							1.1 KiB
						
					
					
				#pragma once
 | 
						|
 | 
						|
#include <string>
 | 
						|
#include <vector>
 | 
						|
#include <memory>
 | 
						|
#include <cassert>
 | 
						|
 | 
						|
#include "common/clutil.h"
 | 
						|
#include "common/swaglog.h"
 | 
						|
 | 
						|
struct ModelInput {
 | 
						|
  const std::string name;
 | 
						|
  float *buffer;
 | 
						|
  int size;
 | 
						|
 | 
						|
  ModelInput(const std::string _name, float *_buffer, int _size) : name(_name), buffer(_buffer), size(_size) {}
 | 
						|
  virtual void setBuffer(float *_buffer, int _size) {
 | 
						|
    assert(size == _size || size == 0);
 | 
						|
    buffer = _buffer;
 | 
						|
    size = _size;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
class RunModel {
 | 
						|
public:
 | 
						|
  std::vector<std::unique_ptr<ModelInput>> inputs;
 | 
						|
 | 
						|
  virtual ~RunModel() {}
 | 
						|
  virtual void execute() {}
 | 
						|
  virtual void* getCLBuffer(const std::string name) { return nullptr; }
 | 
						|
 | 
						|
  virtual void addInput(const std::string name, float *buffer, int size) {
 | 
						|
    inputs.push_back(std::unique_ptr<ModelInput>(new ModelInput(name, buffer, size)));
 | 
						|
  }
 | 
						|
  virtual void setInputBuffer(const std::string name, float *buffer, int size) {
 | 
						|
    for (auto &input : inputs) {
 | 
						|
      if (name == input->name) {
 | 
						|
        input->setBuffer(buffer, size);
 | 
						|
        return;
 | 
						|
      }
 | 
						|
    }
 | 
						|
    LOGE("Tried to update input `%s` but no input with this name exists", name.c_str());
 | 
						|
    assert(false);
 | 
						|
  }
 | 
						|
};
 | 
						|
 |