bool loadKernelsHelper()

in src/c_interface.cpp [72:101]


bool loadKernelsHelper(const std::unordered_map<std::string, const uint8_t*>& kernels) {
  for (auto kernel : kernels) {
    if (kernels_.count(kernel.first) > 0)
      continue;

    CUmodule module;

    int res = cuModuleLoadData(&module, kernel.second);
    if (res != 0) {
      std::cerr << "Failed to load " << kernel.first << " " <<
                res << std::endl;
      return false;
    }

    CUfunction function;

    std::string kernel_name = kernel.first.substr(0, kernel.first.size() - 6);

    res = cuModuleGetFunction(&function, module, kernel_name.c_str());
    if (res != 0) {
      std::cerr << "Failed to extract " << kernel_name << " " <<
                res << std::endl;
      return false;
    }

    kernels_.insert(std::make_pair(kernel.first, function));
  }

  return true;
}