не совсем верно это помещать в ответ, я не уверен.
Если я верно понимаю, код в GPU общий для всех ядер (там правда разные типы, не только вычислительные, и у каждого свой язык и правила, но мы говорим про конкретно вычисления), это значит когда ты запускаешь kernel, инструкции выполняются одновременно на всех ядрах синхронно,.. прыжок по условию это пропуск какой то секции инструкций, это значит ядра, у которых выбран пропуск инструкций будут ждать когда другие ядра, для которых нужно пройти эту секцию, завершат вычисления (гуглить thread divergence).
Но это было актуально на заре появления gpgpu, возможно сейчас все сложнее, внутри чипа ядра распределены по нескольким блокам, сами блоки как то разделяют память, есть своя регистровая и кеш память.
Кстати на практике большее значение имеет работа именно с оперативной памятью, там она блоками разбита, как именно блоки общаются между собой вопрос (единая шина или матричная структура это хз) но в любом случае если код ждет память, его будут ждать все (соответственно все в пределах секции)... компилятор почти наверняка кеширует данные из глобальной памяти в разделяемую и регистровую (для блоков и соответственно ядер), т.е. все будет зависеть еще и от работы оптимизатора.