0
나는 이것을 보았지만, 객체가 아닌 프리미티브를 다루고 있기 때문에 도움이되지 않았다. 이것은 단지 프로젝트의 추가 섹션의 일부입니다. 그것은 그대로지만, 제대로 작동시키고 싶습니다.MPJ Express 송수신 - ClassCastException
괜찮습니다.하지만 실행하면 20 행에서 ClassCastException이 발생합니다.
/* Java Version (mine) */
public class PingPongJava {
public static void main(String args[]) throws Exception {
int me;
int size;
int recv_buf = 0;
int buf = 0;
int send_buf = 101;
double tic = 0, toc = 0;
MPI.Init(args);
me = MPI.COMM_WORLD.Rank();
size = MPI.COMM_WORLD.Size();
tic = MPI.Wtime();
for (int i = 0; i < 50; i++){
if (me == 0){
MPI.COMM_WORLD.Send(send_buf, 0,1,MPI.INT, 17, 100);
MPI.COMM_WORLD.Recv(recv_buf, 0,1, MPI.INT, 23, 100);
}
else{
MPI.COMM_WORLD.Recv(buf, 0, 1, MPI.INT, 17, 100);
MPI.COMM_WORLD.Send(buf, 0,1,MPI.INT, 23, 100);
}
}
toc = MPI.Wtime();
if (me == 0){
System.out.println("Time taken is " + (toc-tic)/100);
}
MPI.Finalize();
}
}
내가
/* Point-to-point communication.
*/
#include <mpi.h>
#include <stdio.h>
int main(int argc, char **argv){
int rank, size, i, recv_buf, send_buf=101, buf;
MPI_Status status;
double tic, toc;
MPI_Init(&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &rank);
MPI_Comm_size (MPI_COMM_WORLD, &size);
tic = MPI_Wtime();
for(i=0;i<50;i++){
if(rank==0){
MPI_Send(&send_buf, 1, MPI_INT, 1, 17 , MPI_COMM_WORLD);
MPI_Recv(&recv_buf, 1, MPI_INT, 1, 23, MPI_COMM_WORLD, &status);
}else{
MPI_Recv(&buf, 1, MPI_INT, 0, 17, MPI_COMM_WORLD, &status);
MPI_Send(&buf, 1, MPI_INT, 0, 23, MPI_COMM_WORLD);
}
}
toc = MPI_Wtime();
if(rank==0)
printf("Average time for a single message: %lf seconds \n", (toc-tic)/100.0);
MPI_Finalize();
return 0;
}