Заранее извиняюсь за неопределенность этого вопроса.
Справочная информация:
Я пытаюсь написать функцию морфологической обработки изображений в OpenCL.У меня есть __local буфер, который я использую для хранения данных для каждого пикселя (каждый пиксель представлен рабочим элементом, пока не развернут цикл).Кроме того, поскольку я только начинаю тестировать, я использую только одну рабочую группу (изображение 8x8 пикселей, поэтому я могу вручную проверить результаты).
Проблема:
Бывают случаи, когда данныеодин, два, три или даже четыре пикселя должны быть добавлены в буфер пикселей другого.Так как это смежные пиксели в одной рабочей группе, я уверен, что я вызываю локальные конфликты банка памяти.Это нормально, скорость не мой главный приоритет (пока!).Однако эти банковские конфликты, похоже, сбрасывают данные и даже портят данные.Я был очень осторожен, чтобы не переполнить и не переполнить буферы.
Итак, мой первый вопрос: возможно ли, что банковские конфликты приводят к повреждению и потере данных?Спецификация Opencl, похоже, указывает на то, что операция должна сериализоваться, замедляя пропускную способность, но о потере данных не упоминается.
Мой второй вопрос: Справка!- Что я могу с этим поделать?
Любое руководство будет с благодарностью - спасибо!