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

У Интела на эту тему есть

У Интела на эту тему есть текст(ы) (хотя нету GPU, но суть одна). Про то, что нужен не массив структур, а структура массивов.

Смысл тут вот в чем: если у вас атрибуты структуры, то они лежат в памяти рядом, соответственно два одинаковых атрибута одной структуры лежат далеко друг от друга. А быстрый доступ к памяти (что на GPU, что на CPU) - к соседним элементам.
Т.е. если у вас код такого вот типа

  1. struct A {
  2.   int value;
  3.   char purga[200];
  4. };
  5. A values[10000];
  6. ..
  7. for(i=0;i<...)
  8.  sum += values[i].value;

То гораздо выгоднее вынести нужные вам значения куда-то в памяти компактно. И векторизация может случиться и прочие 33 удовольствия.