我正在使用一个C程序,在Windows 7上使用OpenMP 4.0编译gcc 4.9.2。
我的计算机是双核的,有四个线程。
我想使用线程亲和力扩展并使用2个线程放在不同的核心上。所以当我使用DOS设置环境变量时:
- set OMP_NUM_THREADS=2
- set OMP_PROC_BIND=spread
- set OMP_PLACES="cores"
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="cores"
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
这是结果:不支持亲和性。即使使用以下命令,我仍然得到相同的结果:
set OMP_PLACES="{0},{2},{1},{3}"
你们中有人知道如何解决这个问题吗?