Комментировать

конечно, лучше сначала

конечно, лучше сначала загрузить A в shared memory, потом считать. В любом случае время выполнения программы будет ограничено пропускной способностью памяти (ПСП). Если A читать один раз, а не три, то потребление ПСП будет в 2 раза меньше. Соответственно, работать будет до 2х раз быстрее. Вопрос в том, как обрабатывать точки на границе блока.

Хранить B в shared memory смысла не вижу.