Проблема с использованием printf в ядре OpenCL ⇐ C++
Проблема с использованием printf в ядре OpenCL
Я использую OpenCL 2.0 на AMD. Код довольно прост. Если я использую 1 printf, работа идет хорошо. А вот если я добавлю второй printf, то будут кривые данные.
Мой код на хосте C++:
cl_int код ошибки; // Получаем доступные платформы платформы вектор; Платформа::get(&платформы); // Выбираем платформу по умолчанию и создаем контекст, используя эту платформу и графический процессор cl_context_properties cps[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)(платформы[0])(), 0 }; Контекстный контекст (CL_DEVICE_TYPE_GPU, cps); устройства вектора = context.getInfo(); Очередь CommandQueue = CommandQueue(context, devices[0]); // Читаем исходный файл имя строки; имя += "CalcN.cl"; std::ifstream sourceFile (имя); std::string sourceCode( std::istreambuf_iterator(sourceFile), (std::istreambuf_iterator())); Программа::Sources source(1, std::make_pair(sourceCode.c_str(), sourceCode.length() + 1)); Программа program = Программа(контекст, источник); код ошибки = program.build(устройства); если (код ошибки!= CL_SUCCESS) { cout
Я использую OpenCL 2.0 на AMD. Код довольно прост. Если я использую 1 printf, работа идет хорошо. А вот если я добавлю второй printf, то будут кривые данные.
Мой код на хосте C++:
cl_int код ошибки; // Получаем доступные платформы платформы вектор; Платформа::get(&платформы); // Выбираем платформу по умолчанию и создаем контекст, используя эту платформу и графический процессор cl_context_properties cps[3] = { CL_CONTEXT_PLATFORM, (cl_context_properties)(платформы[0])(), 0 }; Контекстный контекст (CL_DEVICE_TYPE_GPU, cps); устройства вектора = context.getInfo(); Очередь CommandQueue = CommandQueue(context, devices[0]); // Читаем исходный файл имя строки; имя += "CalcN.cl"; std::ifstream sourceFile (имя); std::string sourceCode( std::istreambuf_iterator(sourceFile), (std::istreambuf_iterator())); Программа::Sources source(1, std::make_pair(sourceCode.c_str(), sourceCode.length() + 1)); Программа program = Программа(контекст, источник); код ошибки = program.build(устройства); если (код ошибки!= CL_SUCCESS) { cout
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение