Рассчитать гистограмму с помощью OpenMP

Я хочу распараллелить этот код для получения максимальной производительности. «Гистограмма» хранит количество вещей определенного цвета (существует 10 разных цветов, поэтому размер гистограммы равен 10). «img» - это массив, в котором хранится определенная информация об изображении. В каждом индексе img хранится цвет (значение int, диапазон 0..9). Это код:

for( i=0; i<N1; i++ ){
  for( j=0; j<N2; j++ ){
    histogram[ img[i][j] ]  = histogram[ img[i][j] ] + 1;
  }
}

Я пробовал это, но производительность настолько плоха (хуже, чем последовательное исполнение):

#pragma omp parallel for schedule(static, N1/nthreads) private(i,j)
for(i=0; i<N1; i++){
  for(j=0; j<N2; j++)
  {
    #pragma omp atomic
    histogram[img[i][j]]++;
  }
}

Какие-либо предложения? Спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос