Здравствуйте, elmal, Вы писали:
E>Здравствуйте, С3141566=Z, Вы писали:
СZ>>На первый взгляд. Про куду не помню, но в opencl сonditional syncthreads (барьер) самое UB, которое только может быть, которое в большинстве случаев приводит к гонке.
E>Конечно есть такая вероятность. Но подобный код весьма распространен, я когда игрался, весьма активно использовал, и проблем не было.
Нет он просто не должен работать. Смотри в точке барьера все потоки должны иметь одинаковое состояние. А те, потоки которые у тебя вышли по ретурну такого иметь не могут по определению. Соответственно, что делать остальным? Самое простое просто выкинуть барьер из кода, что часто и происходит.
E>Брал за основу кода статью: http://isaac.gelado.cat/sites/isaac.gelado.cat/files/publications/samos_2013_histogramming.pdf
Там все чисто в этом плане.