linux - X10 - 多地点的段错误

标签 linux segmentation-fault x10-language

我是 X10 语言的新手,我尝试了以下代码,但在使用多个 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);
        }
}

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

非常感谢任何帮助。

最佳答案

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 效率更高,因为这不会在当前位置创建单独的事件。

你确定在蒙特卡洛积分样本上是同样的错误吗?段错误有很多原因......

关于linux - X10 - 多地点的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15011158/

相关文章:

c - 说当我将一个项目放在数组的开头时出现段错误

concurrency - X10 并行处理共享变量

linux - write() 到文件什么时候返回 EWOULDBLOCK?

mysql - mysql 5.4 有 linux 32 位版本吗?

c - 添加到单链表末尾 段错误 C

ios - 命令因信号 : Segmentation fault: 11 (Only Sometimes) 而失败

x10-language - X10中 'async'之前或之后的 'for'有什么区别?

python - 我如何将加载/保存功能合并到我用 python 编写的游戏中

objective-c - 使用 native Mac 应用程序在远程 Linux 机器上执行 SSH 命令。 ( Objective-C )