OpenMP中的环境变量包括下面的一些:
  ・ OMP_SCHEDULE;
  ・ OMP_NUM_THREADS;
  ・ OMP_DYNAMIC;
  ・ OMP_NESTED.

  OMP_SCHEDULE用来指定DO循环的调度方式,注意,只有那些调度方式在程序中被指定为RUNTIME类型的DO和PARALLEL DO知道语句会受这个环境变量的影响。与在程序中给出调度参数一样,OMP_SCHEDULE可以取任何合法的调度类型(注意,不能为RUNTIME,因为这没有意义)与调度块大小(注意,调度块必须为正整数,当然也可以省略)。如果调度块大小参数被省略,那么除了STATIC类型外,其它的调度类型都会假设这个参数为1,而对于STATIC调度类型,它将把循环的各个叠代尽可能均匀的分配到各个处理器上。

  设置OMP_SCHEDULE的例子(c shell,下同):
 
  setenv OMP_SCHEDULE "GUIDED,4"
  setenv OMP_SCHEDULE "dynamic"

  OMP_NUM_THREADS用来设置OpenMP程序运行时工作线程的数目,它必须是一个正整数,不同的OpenMP实现会对合法的值作不同的规定(比如,pgf77编译器需要这个数为2的幂),当这个环境变量不设置时,缺省值与OpenMP编译器的实现有关,当请求得线程数操作了系统的容量,此时的程序行为也与编译器的实现有关。有两个例外,一个是程序中显示的调用OMP_SET_NUM_THREADS函数来设置程序线程数,一个是PARALLEL指导语句本身就给出了NUM_THREADS子句来指明对应的PARALLEL需要产生的线程数。当线程数动态调整开关(见下面的OMP_DYNAMIC)被打开的时候,这个环境变量给出的是程序中最大线程数。

  设置OMP_NUM_THREADS例子:

  setenv OMP_NUM_THREADS 8

  OMP_DYNAMIC被称为线程数动态调整开关。当它的值为TRUE时,在执行PARALLEL时,运行时库会根据系统资源状况动态调整工作线程数目。当为FALSE时,这种动态调整被关闭。可以用OMP_SET_DYNAMIC调用来在程序中设定这个开关。这个变量的缺省值与OpenMP编译器的实现有关。

  设置OMP_DYNAMIC的例子:

  setenv OMP_DYNAMIC TRUE

  OMP_NESTED是控制嵌套并行性的开关。当它的值为TRUE时,嵌套并行性允许,当为FALSE时,嵌套的并行块被当作串行部分执行。缺省值为FALSE。

  设置OMP_NESTED的例子:

  setenv OMP_NESTED TRUE