X10 - 多个地方的分段错误

时间:2013-02-21 20:02:15

标签: linux segmentation-fault x10-language

我对X10语言完全陌生,我尝试了以下代码,并且在使用多个Place时出现了分段错误。运行带有多个Place的X10蒙特卡罗样本时出现同样的错误。我在Core 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);
        }
}

仅当我将参数发送到计数功能时才会发生这种情况。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

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故障有很多原因......