У меня есть программа OpenMP, которая вычисляет переменные в цикле.
int a[1000000];
int b[1000000];
int c[1000000];
int d[1000000];
#pragma omp parallel for private(i) shared(a,b,c,d)
for (i=0;i<1000000;++i)
{
d[i] = b[i]*a[i] + c[i]+10;
}
Я использовал perf и perf сказал, что узким местом является чтение и запись в памяти.
Первый вопрос: можно ли разбить массивы A, B, C, D и поместить их в разные банки памяти с помощью OpenMP?
Второй вопрос: если я разделю массивы A, B, C, D на более мелкие, ускорят ли они выполнение цикла?