Я хочу запустить приложение OpenCL в Windows 10 с использованием моей видеокарты GTX970. Но следующий код не работает = (Запуск OpenCL под Windows 10
#define __CL_ENABLE_EXCEPTIONS
#include <CL/cl.hpp>
#include <CL/cl.h>
#include <vector>
#include <fstream>
#include <iostream>
#include <iomanip>
int main() {
std::vector<cl::Platform> platforms;
std::vector<cl::Device> devices;
try
{
cl::Platform::get(&platforms);
std::cout << platforms.size() << std::endl;
for (cl_uint i = 0; i < platforms.size(); ++i)
{
platforms[i].getDevices(CL_DEVICE_TYPE_GPU, &devices);
}
std::cout << devices.size() << std::endl;
}
catch (cl::Error e) {
std::cout << std::endl << e.what() << " : " << e.err() << std::endl;
}
return 0;
}
Это дает мне код ошибки -1. Я использую Visual Studio 2015 Community Edition, чтобы запустить его с установленным NVIDIA CUDA SDK v8.0 и настроенными путями, поэтому компилятором и компоновщик знает SDK
Может кто-то пожалуйста, объясните, что случилось с этим фрагментом
заранее спасибо
EDIT:.?! Может кто-нибудь объяснить мне, почему, когда я пытаюсь отлаживать этот код он падает при получении идентификатора платформы, однако, когда я не отлаживаю этот код, который он печатает, что у меня есть две платформы (моя карта графического процессора и целочисленный графический процессор)
Nvidia поддерживает только OpenCL 1.1. Я бы настоятельно предложил получить карту AMD или, по крайней мере, написать какой-то OpenCL 2.0 и запустить его, используя либо процессор AMD, либо Intel (или оба). Также: обязательно посмотрите примеры OpenCL, включенные в SDK Nvidia, часто даже простая инициализация требует обмана. Заключительное примечание: API C++ устарел, поэтому использовать его не рекомендуется. Какова реальная проблема, с которой вы сталкиваетесь, понятия не имею, поэтому это подразумевается как (длинный) комментарий. – rubenvb
Ничего себе, но просмотрщик gpu caps дает мне информацию о том, что моя графическая карта поддерживает OpenCL 1.2. Это имеет значение? – EdZhavoronkov
@Ed может быть 1,2, но все хорошие вещи (что делает OpenCL конкурентоспособным с CUDA) в 2.0. – rubenvb