我正在使用一个C程序,使用OpenMP 4.0在Windows7上使用gcc 4.9.2进行编译。我的电脑是双核心,有四个线程。 我想使用线程关联传播,并使用2个线程放在不同的核心。所以,当我设置环境变量从DOS用:使用OpenMP在两个内核上设置线程关联
- 集OMP_NUM_THREADS = 2
- 集OMP_PROC_BIND =传播
- 集OMP_PLACES = “核”
我得到的,与变量OMP_DISPLAY_ENV = true,这个:
libgomp: Invalid value for environment variable OMP_PLACES
OPENMP DISPLAY ENVIRONMENT BEGIN
_OPENMP = '201307'
OMP_DYNAMIC = 'FALSE'
OMP_NESTED = 'FALSE'
OMP_NUM_THREADS = '2'
OMP_SCHEDULE = 'DYNAMIC'
OMP_PROC_BIND = 'SPREAD'
OMP_PLACES = ''
OMP_STACKSIZE = '12872703'
OMP_WAIT_POLICY = 'PASSIVE'
OMP_THREAD_LIMIT = '4294967295'
OMP_MAX_ACTIVE_LEVELS = '2147483647'
OMP_CANCELLATION = 'FALSE'
OMP_DEFAULT_DEVICE = '0'
OPENMP DISPLAY ENVIRONMENT END
看来,输入是无效的,所以我把它改为:
- 集OMP_PLACES = “核”
libgomp: Affinity not supported on this configuration
OPENMP DISPLAY ENVIRONMENT BEGIN
_OPENMP = '201307'
OMP_DYNAMIC = 'FALSE'
OMP_NESTED = 'FALSE'
OMP_NUM_THREADS = '2'
OMP_SCHEDULE = 'DYNAMIC'
OMP_PROC_BIND = 'SPREAD'
OMP_PLACES = ''
OMP_STACKSIZE = '3107827'
OMP_WAIT_POLICY = 'PASSIVE'
OMP_THREAD_LIMIT = '4294967295'
OMP_MAX_ACTIVE_LEVELS = '2147483647'
OMP_CANCELLATION = 'FALSE'
OMP_DEFAULT_DEVICE = '0'
OPENMP DISPLAY ENVIRONMENT END
这是结果:亲不支持的。我报复了相同的结果:
集OMP_PLACES = “{0},{2},{1},{3}”
是否有任何的你知道如何解决这个问题?
喜吉尔。我在Ubuntu上测试过相同的配置,我同意你的看法。不幸的是,我必须为我的应用程序使用Win7,并且我想发现在gcc版本4.9.2和版本4.9.3之间使用OpenMP是否有任何差异。我会让你知道的。 – Franktrt
再次吉尔斯。我使用gcc版本5.1在Windows7上测试了我的应用程序,得到了相同的结果。所以我最终说Windows 7机器不支持OpenMP线程关联。 – Franktrt