test_field2d_threads.c

来自「波浪数值模拟」· C语言 代码 · 共 90 行

C
90
字号
#include <stdlib.h>#include <stdio.h>#include <glib.h>#include "field.h"field2D *AA;field2D *CC;field2D *BB;void error_message(char *s){  fprintf(stderr,"%s\n",s);  exit(-1);}void zero_all(int nx,int ny ){   AA = allocate_field2D(nx,ny);   CC = allocate_field2D(nx,ny);   BB = allocate_field2D(nx,ny);   field2D_set_to_value(AA,0.0);   field2D_set_to_value(BB,1.0);   field2D_set_to_value(CC,2.0);}void set_field2D_to_random(field2D *AA){  int nx = AA->N;  int ny = AA->M;  double *dd = AA->data;  int i;  for (i=0;i<nx*ny;i++) {    *dd++ = rand()/RAND_MAX;  }}int main(int argc, char *argv[]){  int nx, ny;  int i,num;  int flag;  nx = atoi(argv[1]);  ny = atoi(argv[2]);  num = atoi(argv[3]);  flag = atoi(argv[4]);  zero_all(nx,ny);  fprintf(stderr," ** test_field2D_threads **\n");  if (flag == 1) {  // use threads     fprintf(stderr,"Using thread w/ cpu=2 version\n");    field2D_init_threads(2);    for (i=0;i<num;i++) {      field2D_self_add_threads(AA,BB);    }  }  else {  // don't use threads    fprintf(stderr,"Using no threads\n");    for (i=0;i<num;i++) {      field2D_self_add(AA,BB);    }  }  printf("AA(1,1) = %g\n",DR2(AA,1,1));}

⌨️ 快捷键说明

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