int NeoDLRLayer::enqueue()

in lab1/deepstream_plugin/neodlr_plugin.cc [78:115]


int NeoDLRLayer::enqueue(int batchSize, const void* const* inputs, void** outputs, void* workspace,
                         cudaStream_t stream) noexcept {
  // Set inputs.
  for (size_t i = 0; i < input_names_.size(); ++i) {
    DLTensor dltensor;
    dltensor.device = {kDLCUDA, 0};
    dltensor.ndim = input_shapes_[i].size();
    dltensor.shape = input_shapes_[i].data();
    dltensor.strides = 0;
    dltensor.byte_offset = 0;
    dltensor.dtype = {kDLFloat, 32, 1};  // todo allow other types
    dltensor.data = const_cast<void*>(inputs[i]);
    if (SetDLRInputTensor(&model_, input_names_[i].c_str(), &dltensor) != 0) {
      std::cout << DLRGetLastError() << std::endl;
      return -1;
    }
  }
  // Run.
  if (RunDLRModel(&model_) != 0) {
    std::cout << DLRGetLastError() << std::endl;
    return -1;
  }
  // Get outputs.
  for (size_t i = 0; i < output_shapes_.size(); ++i) {
    DLTensor dltensor;
    dltensor.device = {kDLCUDA, 0};
    dltensor.ndim = output_shapes_[i].size();
    dltensor.shape = output_shapes_[i].data();
    dltensor.strides = 0;
    dltensor.byte_offset = 0;
    dltensor.dtype = {kDLFloat, 32, 1};  // todo allow other types
    dltensor.data = outputs[i];
    if (GetDLROutputTensor(&model_, i, &dltensor) != 0) {
      std::cout << DLRGetLastError() << std::endl;
    }
  }
  return 0;
}