【问题标题】:Derived data type in MPI javaMPI java中的派生数据类型
【发布时间】:2014-12-03 01:39:18
【问题描述】:

我是mpi java的新手,我想构造一个由n个字符串组成的派生数据类型。这个想法是向每个处理器发送一组(派生的)数据。我已阅读这些文档https://www.open-mpi.org/papers/mpi-java-spec/mpiJava-spec.pdf,但我无法创建有效代码。

你能给我一些反馈吗?


@rlegendi 我放了一些代码,但我完全被阻止了,因为我不知道如何继续。

class Data{
   char[] data1;
   char[] data2;

   public Data(String d1, String d2)
   {
        this.data1 = d1.toCharArray();
        this.data2 = d2.toCharArray();
   }
}

class testMPI{
     MPI.Init(argv);
     int myRank = MPI.COMM_WORLD.getRank();
     int nProcs = MPI.COMM_WORLD.getSize();

     Data[] myData = new Data[4]; 
     myData[0] = new Data("d1", "this is a test");
     ....
     myData[3] = new Data("the third data", "this is another test");


     // How to create teh derivated data to send a part of myData[] to several processes???
     if (myRank == 0)
     {
           // calculate offset and chunk
           // send myData[0] and [1] to proc#1 and myData[2] and [3] to proc#2
           for (i=1 ; i < nProcs; i++)
                  MPI.COMM_WORLD.send(myData[offset], chunk, MPI.OBJECT??, i, 1);
     }
     else
           MPI.COMM_WORLD.receive(recv, chunk, MPI.OBJECT??, i, 1);
}

所以我不明白的是如何创建派生 MPI 数据类型以将数组的一部分传输到每个处理器。

【问题讨论】:

  • 给我们看一些代码。你得到什么错误?
  • 您不需要派生数据类型。将其作为大小为 chucnk 的缓冲区发送,就像您正在做的那样,类型为 MPI.OBJECT.CHAR,或者它在 JavaMPI 中调用的任何内容。

标签: java mpi


【解决方案1】:

为了澄清我最初的问题,我不知道如何使用 MPI java 将数组切片(复杂数据类型、对象、字符串等)发送到每个计算元素。

谢谢。

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 2012-02-03
    • 2017-05-27
    • 2014-08-08
    • 2012-11-27
    • 2018-02-26
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多