Example #1
0
device default_device()
{
  static device dev;
  if (!dev.id())
  {
    platform pl = default_platform();
    std::vector<device> devices = pl.devices(device::accelerator);
    if (devices.size()) dev = devices[0];
    else // no accelerators found, try all
    {
      std::vector<device> devices = pl.devices(device::all);
      if (devices.size()) dev = devices[0];
      else OVXX_DO_THROW(std::runtime_error("No OpenCL devices found."));
    }
  }
  return dev;
}
Example #2
0
static int
run_platform(radiant_t radiant)
{
    radiant_platform_t platform;
    int status;

    /* Initialize Radiant */
    platform = radiant_platform_create(radiant, NULL);

    if (platform == NULL)
    {
        status = radiant_engine_errno(radiant);
        fprintf(stderr, "Unable to create platform (%d).\n", status);
        return status;
    }

    status = default_platform(platform);

    /* Clean up. */
    radiant_platform_destroy(platform);

    return status;
}
Example #3
0
cl::Device getDevice() {
  // init platforms
  std::vector<cl::Platform> platforms;
  cl::Platform::get(&platforms);

  // select default platform
  cl::Platform default_platform;
  for (auto &platform : platforms) {
    std::string platformVersion = platform.getInfo<CL_PLATFORM_VERSION>();
    if (platformVersion.find("OpenCL 2.") != std::string::npos) {
      default_platform = platform;
      break;
    }
  }
  if (default_platform() == nullptr) {
    throw std::runtime_error("No OpenCL 2.x platform found.");
  }

  // init devices
  std::vector<cl::Device> all_devices;
  default_platform.getDevices(CL_DEVICE_TYPE_ALL, &all_devices);

  // select default device
  cl::Device default_device;
  for (auto &device : all_devices) {
    if (device()) {
      default_device = device;
      break;
    }
  }
  if (default_device() == nullptr) {
    throw std::runtime_error("No device found.");
  }

  // init context
  return default_device;
}