1

私は現在 X10 をいじっていますが、複数の例外が発生しています。これは私が作成したコードです:

メイン.x10

public class Main {

// main Method for the Main class
public static def main(argv:Rail[String]) {
    Console.OUT.println("This is the main place. (ID="+here.id+")");
    val dataItem = new Data();
    // no global reference, data is copied to each place.
    finish for (p in Place.places()) {
        at (p) async {
            Console.OUT.println("This is place no: "+here.id+". The value of dataItem is "+dataItem.getValue()+".");
            dataItem.incValue();
        }
    }
    Console.OUT.println("Final value of dataItem without GlobalRef in multiple places at place "+here.id+": "+dataItem.getValue());
    dataItem.setValue(0);
    finish for (p in Place.places()) {
        async {
            Console.OUT.println("This is place no: "+here.id+". The value of dataItem is "+dataItem.getValue()+".");
            dataItem.incValue();
        }
    }
    Console.OUT.println("Final value of dataItem without GlobalRef in one place at place "+here.id+": "+dataItem.getValue());
    dataItem.setValue(0);
    val globalRefDataItem = GlobalRef[Data](dataItem);
    finish for (p in Place.places()) {
        at (p) async {
            val globalDataItemUnwrapped = globalRefDataItem();
            Console.OUT.println("This is place no: "+here.id+". The value of dataItem is "+globalDataItemUnwrapped.getValue()+".");
            atomic globalDataItemUnwrapped.incValue();
        }
    }
    Console.OUT.println("Final value of dataItem with GlobalRef in multiple places at place "+here.id+": "+dataItem.getValue());
}

}

データ.x10

public class Data{
private var value:Long;
def getValue():Long{
    return value;
}
def setValue(value:long){
    this.value = value;
}
def incValue(){
    this.value = this.value+1;
}
}

X10DT の出力は次のとおりです。

This is the main place. (ID=0)
This is place no: 3. The value of dataItem is 0.
This is place no: 1. The value of dataItem is 0.
This is place no: 2. The value of dataItem is 0.
This is place no: 0. The value of dataItem is 0.
Final value of dataItem without GlobalRef in multiple places at place 0: 0
This is place no: 0. The value of dataItem is 0.
This is place no: 0. The value of dataItem is 1.
This is place no: 0. The value of dataItem is 2.
This is place no: 0. The value of dataItem is 3.
Final value of dataItem without GlobalRef in one place at place 0: 4
This is place no: 0. The value of dataItem is 0.
Command used: /home/martze/x10dt/workspace/Example/bin/Main
Uncaught exception at place 0: x10.lang.MultipleExceptions
x10.lang.FailedDynamicCheckException: !(here == x$0.home)
at x10aux::throwException(x10::lang::CheckedThrowable*)
at Main__closure__3::__apply()
at x10::lang::Activity::run()
at x10::lang::Runtime__Worker::loop()
at x10::lang::Runtime__Worker::__apply()
at x10::lang::Runtime__Pool::run()
at 
at GC_inner_start_routine
at GC_call_with_stack_base
at 
at clone
x10.lang.FailedDynamicCheckException: !(here == x$0.home)
at x10aux::throwException(x10::lang::CheckedThrowable*)
at Main__closure__3::__apply()
at x10::lang::Activity::run()
at x10::lang::Runtime__Worker::loop()
at x10::lang::Runtime__Worker::__apply()
at x10::lang::Runtime__Pool::run()
at 
at GC_inner_start_routine
at GC_call_with_stack_base
at 
at clone
x10.lang.FailedDynamicCheckException: !(here == x$0.home)
at x10aux::throwException(x10::lang::CheckedThrowable*)
at Main__closure__3::__apply()
at x10::lang::Activity::run()
at x10::lang::Runtime__Worker::loop()
at x10::lang::Runtime__Worker::__apply()
at x10::lang::Runtime__Pool::run()
at 
at GC_inner_start_routine
at GC_call_with_stack_base
at 
at clone

私はグーグルを試しましたが、結果はまったく役に立たなかったいくつかのドキュメントを指しているだけでした. 私の環境変数は X10_NTHREADS=1 に設定されており、場所の数を 4 に設定しています。Ubuntu で作業しており、C++ バックエンドを使用しています。

このエラーについて何ができますか? また、このエラーは何を意味しますか?

4

1 に答える 1