Если объявленные вами массивы не слишком велики, локальные или глобальные переменные (подобные C) в шейдере будут самыми быстрыми.Эти переменные хранятся в регистрах или в памяти, которая находится ближе (так быстрее) к шейдерному блоку.
Все другие упомянутые вами опции (текстуры и SSBO) используют более медленную память.Они предназначены для данных, которые могут быть видны различным шейдерам или вызовам шейдеров.Если данные выполнения, с которыми вы работаете, слишком велики для того, чтобы поместиться в обычную переменную, они могут обеспечить запасное «пустое место».Хотя ожидайте гораздо более медленной производительности.
Кроме того, поскольку вы задали этот вопрос, мне очень любопытно узнать, над каким типом алгоритма вы работаете, для которого требуется так много временного хранилища.