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

📄 pmandel.h

📁 MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程环境.
💻 H
字号:
#ifndef _PM_H_#define _PM_H_#include "mpe_graphics.h"#include "mpi.h"#include "mpe.h"#include "fract_gen.h"#define LOG 1#define MAX_RECT_PASSED 4extern MPI_Datatype winspecs_type, flags_type, NUM_type, rect_type;extern FILE *debug_file;typedef enum _Algorithms {  alg_block,  alg_separate_rect,  alg_solid_rect} Algorithms;extern MPE_XGraph tracking_win;typedef struct _Winspecs {  int height, width;		/* size of the window */  int bw;			/* whether to draw in black&white */  int xpos, ypos;		/* position of the window */  int numColors;		/* number of colors to use */  int my_tracking_color;        /* Color used in tracking window, if used. */  MPE_Color *colorArray;	/* colors */} Winspecs;typedef struct _Flags {  char *logfile;		/* name of logfile (NULL for no logging) */  char *inf;			/* input file (NULL for no input file) */  char *outf;			/* output file (NULL for no output file) */  Winspecs *winspecs;		/* so we only need to pass one */  int breakout;			/* when to stop subdividing */  int randomize;		/* whether to proceed in a random order */  int colReduceFactor;		/* how many iteration levels each color will				   span */  int loop;			/* continually loop through input file */  int zoom;			/* ask for zoom rectangle after each */  int askNeighbor;		/* in alg_solid_rect, whether to ask neighbor				   or master for work */  int sendMasterComplexity;	/* in alg_solid_rect with !askNeighbor,				   whether to send the master the complexity				   of the region you need computed */  int drawBlockRegion;		/* in alg_solid_rect, whether to draw the				   region computed at once or to				   wait and draw a complete rectangle */  int fractal;			/* fractal type-MBROT, JULIA, or NEWTON */  int maxiter;			/* bailout point  */  int with_tracking_win;        /* boolean: add a second window for                                   indicating who computed what. */  int no_remote_X;              /* boolean: master handles all X displaying. */  double boundary_sq;		/* boundary for JULIA & MBROT */  double epsilon;		/* epsilon for NEWTON */  NUM rmin, rmax, imin, imax;	/* region to be computed */  NUM julia_r, julia_i;		/* point the Julia set is related to */} Flags;/* logfile events */#define S_COMPUTE 10#define E_COMPUTE 11#define S_DRAW_BLOCK 12#define E_DRAW_BLOCK 13#define S_WAIT_FOR_MESSAGE 14#define E_WAIT_FOR_MESSAGE 15#define S_DRAW_RECT 16#define E_DRAW_RECT 17#define S_DRAW_CHUNK 18#define E_DRAW_CHUNK 19#define SEND_RECTS 20/* defaults: */#define DEF_height    500#define DEF_width     500#define DEF_bw        0#define DEF_xpos      -1#define DEF_ypos      -1#define DEF_numColors 256#define DEF_logfile   0#define DEF_inf       0#define DEF_outf      0#define DEF_breakout  12#define DEF_randomize 1#define DEF_colReduceFactor 4#define DEF_loop      0#define DEF_zoom      1#define DEF_askNeighbor 1#define DEF_sendMasterComplexity 0#define DEF_drawBlockRegion 1#define DEF_fractal   MBROT#define DEF_maxiter   1000#define DEF_boundary  2.0#define DEF_epsilon   .01/*#define DEF_rmin      -.8#define DEF_rmax      -.7#define DEF_imin      .05#define DEF_imax      .15*/#define DEF_rmin      -2.0#define DEF_rmax      2.0#define DEF_imin      -2.0#define DEF_imax      2.0#define DEF_julia_r   .331#define DEF_julia_i   -.4#define DEF_with_tracking_win 0#define DEF_no_remote_X 1typedef struct {  int l, r, t, b, length;  /* length =  (r.r-r.l+1) * (r.b-r.t+1) */} rect;typedef struct {  int head, tail, size, randomPt, randomize;  rect *r;} rect_queue;/* messge tags: *//*    master to slave: */#define READY_TO_START   42#define READY_FOR_MORE   43#define ADD2Q            44#define RECTS_TO_ENQUEUE 45/*    slave to master: */#define ASSIGNMENT       46#define ALL_DONE         47/* Some new message tags for use in sending the point data to the master. */#define POINT_COUNT  201#define POINT_DATA   202#define RECT_SPEC    203#define RECT_COLOR   204#define BLOCK_TYPE   205#define TRACKING_COLOR 206/* One of the following two integers are sent to the master to tell it   whether to expect a block of points or a specification for a rectangle.   (much of this is only needed because I am avoiding the use of MPI_Probe)*/#define POINTS POINT_COUNT#define RECTANGLE RECT_SPEC#if LOG #define MPE_LOG_SEND( to, tag, size ) \  if (flags->logfile) MPE_Log_send( to, tag, size )#define MPE_LOG_RECEIVE( from, tag, size ) \  if (flags->logfile) MPE_Log_receive( from, tag, size )#define MPE_LOG_EVENT( event, data, str ) \  if (flags->logfile) MPE_Log_event( event, data, str )#define MPE_DESCRIBE_STATE( start, end, name , color ) \  if (flags->logfile) MPE_Describe_state( start, end, name , color )#define MPE_DESCRIBE_EVENT( event, name ) \  if (flags->logfile) MPE_Describe_event( event, name )#define MPE_INIT_LOG() \  if (flags->logfile) MPE_Init_log()#define MPE_FINISH_LOG( file ) \  if (flags->logfile) MPE_Finish_log( file )#else#define MPE_LOG_SEND( to, tag, size ) {}#define MPE_LOG_RECEIVE( from, tag, size ) {}#define MPE_LOG_EVENT( event, data, str ) {}#define MPE_DESCRIBE_STATE( start, end, name , color ) {}#define MPE_DESCRIBE_EVENT( event, name ) {}#define MPE_INIT_LOG() {}#define MPE_FINISH_LOG( file ) {}#endif#endif/* _PM_H_ */

⌨️ 快捷键说明

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