X10-多位置分割故障



我对X10语言完全陌生,我尝试了以下代码,但在使用多个Place时出现了分段错误。当我用一个以上的Place运行X10的蒙特卡罗样本时,我也会得到同样的错误。我在酷睿i7 2Ghz处理器上使用64位Debian Linux上的X10 2.3版本。

import x10.util.Timer;
public class placetest{
        public static def main(args: Array[String](1)){
                finish for(var i:Int=1;i<=4;i++){
                      val ii = i;
                      val pk = Place.place(ii);
                      val k = 1;
                      async at(pk) count(k);
                }
                Console.OUT.println("Finished");
        }
        public static def count(i:Int){
                Console.OUT.println("Test" + i);
        }
}

只有当我向count函数发送参数时才会发生这种情况。

非常感谢您的帮助。

X10中的位置编号从0到Place。MAX_PLACES,因此for循环应索引为

finish for(var i:Int=0;i<4;i++){

然而,编写依赖于特定位置的代码通常是个坏主意。更好的是:

finish for (place in Place.places()) {
    val k = 1;
    at(place) async count(k);
}

这将适用于任何数量的地方。

注意,我还切换了async at的顺序——使用at(p) async更有效,因为这不会在当前位置创建单独的活动。

你确定这是蒙特卡洛积分样本上的相同错误吗?Seg故障有很多原因。。。

相关内容

  • 没有找到相关文章

最新更新