X10代码无法识别CPU的第二个核心

时间:2014-06-15 20:52:41

标签: multicore x10-language

我在X10中写了一个规范的“Hello,World”演示类:

class Hello {
  public static def main(args:Rail[String]):void {    
     finish for (p in Place.places()) {
        at (p) async Console.OUT.println(here+" says hello");
     }
     Console.OUT.println("Goodbye");
  }
}

我的电脑有2核CPU,但X10代码无法识别两个处理核心。据我了解,它只识别CPU的一个核心。因此,控制台的输出如下:

Place(0) says hello
Goodbye

而不是

Place(0) says hello
Place(1) says hello
Goodbye

可能是预期的。

如何强制X10代码识别笔记本电脑上可用CPU的所有处理内核? 我的笔记本电脑配备了Intel Core 2 Duo CPU。操作系统是Windows 7。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,无论可用的物理内核数量多少,X10都只会启动一个位置。 (实际上,根据您的应用程序,为每个多核CPU运行一个位置可能更好,并使用async来利用一个地方内的多线程并行性。

要请求不同数量的地点,请设置环境变量X10_NPLACES或使用-np选项到x10启动器,即

X10_NPLACES=2 x10 Hello
x10 -np 2 Hello