OpenMP Тест производительностиC++

Программы на C++. Форум разработчиков
Anonymous
OpenMP Тест производительности

Сообщение Anonymous »

Я разработчик (на Linux) и внедрил рабочий процесс Python, в котором приложение C/C ++, параллельное с OpenMP, называется примерно в 100 раз. Я протестировал рабочий процесс на различные числа потоков. В первой реализации я использовал переменную среды omp_num_threads , чтобы установить количество параллельных потоков, но я наблюдал некоторое странное поведение. Во второй реализации я установил количество параллельных потоков во время выполнения, используя omp_set_num_threads и установил omp_num_threads = 1 , что привело к лучшей производительности, см. Изображение.
Сравнение производительности
после краткого расследования с «Strace». Я обнаружил, что линейная открыть, что я обнаружил. По -видимому, каждый поток инициализируется, и память выделяется для каждого потока, что занимает минутку. С 48 потоками и ~ 100 вызовами это происходит ~ 4800 раз. Однако это влияет на другие приложения, которые получают доступ к этой переменной среды. < /P>
Есть ли способ изменить поведение OpenMP? Я разработчик и знаю, что переменная среды установлена, а также влияет на другие приложения. Тем не менее, я также делюсь рабочим процессом с другими людьми, у которых нет опыта разработки и не знакомы с Linux, которые просто хотят выполнить рабочий процесс. (18.1.3) & libomp, тот же результат.

Подробнее здесь: https://stackoverflow.com/questions/797 ... mance-test

Вернуться в «C++»