⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendrecv.java

📁 MPI for java for Distributed Programming
💻 JAVA
字号:
/* * File         : SendRecv.java * Author       : Sang Lim * Revision     : $Revision: 1.1.1.1 $ * Updated      : $Date: 2005/03/19 16:06:39 $ */import mpjdev.*;import mpjbuf.*;import java.io.*;public class SendRecv {  public static void main(String[] args) throws Exception {    Comm.init(args);    Buffer wb = new Buffer(500);    int id = Comm.WORLD.id();    int size = Comm.WORLD.size();    if (id == 0) {      float[] fArray0 = new float[50];      for (int i = 0; i < fArray0.length; i++)        fArray0[i] = i;      wb.putSectionHeader(Buffer.FLOAT);      wb.write(fArray0, 0, fArray0.length);      int[] indexes = new int[30];      indexes[0] = 10;      indexes[1] = 2;      indexes[5] = 4;      indexes[6] = 3;      int srcOff = 7, rank = 2, exts = 5, strs = 0;      wb.strGather(fArray0, srcOff, rank, exts, strs, indexes);      indexes[0] = 0;      indexes[1] = 1;      for (int i = 2; i < 30; i++)        indexes[i] = indexes[i - 1] + 2;      wb.gather(fArray0, 24, 2, indexes);      indexes[0] = 0;      indexes[1] = 0;      for (int i = 2; i < 30; i++)        indexes[i] = indexes[i - 1] + 2;      wb.gather(fArray0, 24, 2, indexes);      wb.commit();      Comm.WORLD.send(wb, 1, 99);    }    else if (id == 1) {      Buffer rb = new Buffer(500);      Comm.WORLD.recv(rb, 0, 99);      rb.commit();      float[] rArray0 = new float[50];      int numEls = rb.getSectionHeader(Buffer.FLOAT);      System.out.println("numEls (as read by getSectionHeader()" + numEls);      rb.read(rArray0, 0, rArray0.length);      System.out.println("******* WRITE SECTION OF MESSAGE *******");      for (int i = 0; i < rArray0.length; i++)        System.out.println("First section of message[" + i + "] = " + rArray0[i]);      rb.read(rArray0, 0, 12);      System.out.println("\n\n******* READ SECTION OF MESSAGE *******");      for (int i = 0; i < 12; i++)        System.out.println("First section of message[" + i + "] = " +                           rArray0[i]);      rb.read(rArray0, 0, 24);      System.out.println("\n\n******* ODD GATHER SECTION OF MESSAGE *******");      for (int i = 0; i < 24; i++)        System.out.println("First section of message[" + i + "] = " +                           rArray0[i]);      System.out.println("\n\n******* EVEN GATHER SECTION OF MESSAGE *******");      rb.read(rArray0, 0, 24);      for (int i = 0; i < 24; i++)        System.out.println("Second section of message[" + i + "] = " +                           rArray0[i]);      System.out.println("\n\n******* STRGATHER SECTION OF MESSAGE *******");      rb.commit(); // Rewind buffer      rb.getSectionHeader(Buffer.FLOAT);      rb.read(rArray0, 0, 50);      for (int i = 0; i < 50; i++)        rArray0[i] = 0;      int[] indexes = new int[30];      for (int i = 0; i < 50; i++)        rArray0[i] = 0;      indexes[0] = 10;      indexes[1] = 2;      indexes[5] = 4;      indexes[6] = 3;      int dstOff = 7, rank = 2, exts = 5, strs = 0;      rb.strScatter(rArray0, dstOff, rank, exts, strs, indexes);      System.out.println("\n\n******* STRSCATTERED MESSAGE *******");      for (int i = 0; i < 50; i++)        System.out.println("StrScatter of message[" + i + "] = " +                           rArray0[i]);      indexes[0] = 0;      indexes[1] = 1;      for (int i = 2; i < 30; i++)        indexes[i] = indexes[i - 1] + 2;      rb.scatter(rArray0, 24, 2, indexes);      indexes[0] = 0;      indexes[1] = 0;      for (int i = 2; i < 30; i++)        indexes[i] = indexes[i - 1] + 2;      rb.scatter(rArray0, 24, 2, indexes);      System.out.println("\n\n******* SCATTERED MESSAGE *******");      for (int i = 0; i < 50; i++)        System.out.println("Scattered message[" + i + "] = " + rArray0[i]);    }    //Comm.WORLD.barrier();    Comm.finish();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -