Я выполняю параллельную обработку данных в OpenCL и хотел бы увеличить пропускную способность с помощью векторных инструкций (SIMD). Чтобы использовать int4, double2 и т. д., мне нужно прочесать массивы входных данных. Как лучше всего это сделать?
От
A[0] A[1] A[2] ... A[N] B[0] B[1] B[2] ... B[N] C[0]...C[N] D[0]...D[N]
как один комбинированный буфер или отдельные
To
A[0] B[0] C[0] D[0] A[1] B[1] C[1] D[1] ... A[N] B[N] C[N] D[N]
N может достигать 20000, а сейчас удваивается. Я использую GCN GPGPU, предпочтительный размер двойного вектора — 2.
-Должен ли я подготовить другое ядро, которое прочесывает данные для определенной ширины вектора?
-Я полагаю, что процессор будет работать медленно, делая то же самое.