При профилировании кода на языке C я хотел бы отключить/сократить количество потоков OMP до 1. После краткого поиска я нашел это question. Поэтому я решил сделать что-то вродеОтключение OpenMP при включенном профилировании
#ifdef foo
#define omp_get_thread_num() 0
#endif
где foo
является макрос, который является истинным, если -pg
флаг устанавливается при компиляции с GCC.
Мой вопрос в том, что такое значение foo
, и этот метод теперь позволит мне получить разумную информацию профилирования (заставив OpenMP просто использовать один поток).
Или даже (но не такой портативный, как 'export OMP_NUM_THREADS = 1')' taskset -c 0./A.out', чтобы ограничить ядра ЦП, доступные для среды выполнения omp. – osgx