资源简介

本程序是mandelbrot集在MPI下的实现,实验中采用了静态调度的并行程序设计方法。

资源截图

代码片段和文件信息

#include “mpi.h“
#include 
#include 

#define MAX_DEPTH 256 //最大的迭代次数
#define WIDTH 40//1024
#define HIGHT 40//768
#define N (WIDTH)*(HIGHT)


//实际坐标的范围
float left_x = -2.0;
float left_y = -2.0;
float right_x = 2.0;
float right_y = 2.0;

struct complex1{
float real;
float img;
};

int cal(struct complex1 c);
void write_count(int *countschar *strint wint h);

int main(int argcchar *argv[])
{
int myrankmsgtag=1group_sizelocal_N;
int ij n;
int local_hight begin_hight;
int *counts *local_count;
float dxdyxy;
char str[20];
MPI_Status status;
struct complex1 c;
MPI_Init(&argc&argv);
MPI_Comm_size(MPI_COMM_WORLD &group_size);
MPI_Comm_rank(MPI_COMM_WORLD &myrank);
local_N=HIGHT/group_size; 
if(HIGHT!=local_N*group_size) 
{
MPI_Finalize();
return 0;
}

if (myrank==0)
{
MPI_Bcast(&left_x 1 MPI_FLOAT 0 MPI_COMM_WORLD);
MPI_Bcast(&left_y 1 MPI_FLOAT 0 MPI_COMM_WORLD);
MPI_Bcast(&right_x 1 MPI_FLOAT 0 MPI_COMM_WORLD);
MPI_Bcast(&right_y 1 MPI_FLOAT 0 MPI_COMM_WORLD);


local_hight = HIGHT / group_size;
local_N = local_hight * WIDTH;
dx = (right_x - left_x) / WIDTH;
dy = (right_y - left_y) / HIGHT;
begin_hight = myrank * local_hight;
local_count = (int *)malloc(2 * local_N * sizeof(int));

for(j = begin_hight n = 0; j < begin_hight

评论

共有 条评论