Можно ли передать массив объектов или другой тип данных в MPI.COMM_WORLD.Scatter? - PullRequest
1 голос
/ 12 марта 2020

Я копаюсь в документации, но все еще не могу понять, как использовать другие типы данных, кроме массива int s. Есть ли способ отправить данные, кроме массива целых? Приведенный ниже код работает нормально, если я использую массив только целых чисел. Я попытался заменить MPI.INT на MPI.OBJECT, но это не сработало. Вот пример отправки некоторых данных всем процессам, кроме root.

import mpi.*;

public class MPIHello {

    static class Node {
        private static int data;
        public Node(int d) {
            this.data = d;
        }
        public static int getData() {
            return data;
        }
    };

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MPI.Init(args);

        int me = MPI.COMM_WORLD.Rank();
        int size = MPI.COMM_WORLD.Size();

        Node[] Buf = new Node[1];
        if (me == 0)
        {
            for (int i=1; i<size; i++)
            {
                Buf[0] = new Node(13);
                MPI.COMM_WORLD.Send(Buf, 0, Buf.length, MPI.INT, i, 0);
            }

        }
        else
        {
            MPI.COMM_WORLD.Recv(Buf, 0, Buf.length, MPI.INT, 0, 0);

            System.out.println(Buf[0].getData());
        }

        MPI.Finalize();
    }

}

1) Пробная отправка Object[] arr = new Object[1];, которая также не будет работать

...