Я новичок в OpenMP, и моя задача состоит в том, чтобы улучшить код, приведенный ниже, используя две различные возможности:OpenMP для цикла
// Size = 400, CHUNKSIZE = 100 and there are 4 threads
#pragma omp parallel for schedule(static, CHUNK_SIZE)
for(int i=0; i<SIZE; i++){
for(int k=0; k<i; k++){
A[i][k] = 42*foo
}
}
В первом я хотел бы изменить расписание от статического ориентироваться, потому что работа в второй цикл неуравновешен и неуклонно растет. Итак, сначала размер куска начинается с больших и уменьшается, чтобы лучше справляться с дисбалансом нагрузки между итерациями. Чем больше «становится», тем больше работы для второго цикла. На данный момент я не уверен, если динамика может быть лучше, чем руководствоваться?
Для второй возможности я понятия не имею.
StackOverflow - это не сайт, который просто сбрасывает вам задачи. Вы должны показать, что вы пробовали, и сузить до определенной проблемы. Кроме того, нет смысла рассуждать о производительности пустого цикла. – Zulan
Кроме того, ваш код имеет опечатки и плохой интервал. Пожалуйста, покажите еще несколько усилий в этом сообщении, прежде чем задавать вопрос ... – NoseKnowsAll
Я отредактировал мой вопрос. Теперь лучше? –