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

📄 dotprod_serial.c

📁 Pthread lib库完整说明文档
💻 C
字号:
/******************************************************************************* FILE: dotprod_serial.c* DESCRIPTION:*   This is a simple serial program which computes the dot product of two *   vectors.  The threaded version can is dotprod_mutex.c.* SOURCE: Vijay Sonnad, IBM* LAST REVISED: 04/05/05 Blaise Barney******************************************************************************/#include <stdio.h>#include <stdlib.h>/*   The following structure contains the necessary information  to allow the function "dotprod" to access its input data and place its output so that it can be accessed later. */typedef struct {  double      *a;  double      *b;  double     sum;   int    veclen; } DOTDATA;#define VECLEN 100  DOTDATA dotstr; /*We will use a function (dotprod) to perform the scalar product. All input to this routine is obtained through a structure of type DOTDATA and all output from this function is written intothis same structure.  While this is unnecessarily restrictive for a sequential program, it will turn out to be useful whenwe modify the program to compute in parallel.*/void *dotprod(void){/* Define and use local variables for convenience */   int start, end, i;    double mysum, *x, *y;   start=0;   end = dotstr.veclen;   x = dotstr.a;   y = dotstr.b;/*Perform the dot product and assign resultto the appropriate variable in the structure. */   mysum = 0;   for (i=start; i<end ; i++)     {      mysum += (x[i] * y[i]);    }   dotstr.sum = mysum;   return ;}/*The main program initializes data and calls the dotprd() function.Finally, it prints the result.*/int main (int argc, char *argv[]){int i,len;double *a, *b;   /* Assign storage and initialize values */len = VECLEN;a = (double*) malloc (len*sizeof(double));b = (double*) malloc (len*sizeof(double));  for (i=0; i<len; i++) {  a[i]=1;  b[i]=a[i];  }dotstr.veclen = len; dotstr.a = a; dotstr.b = b; dotstr.sum=0;/* Perform the  dotproduct */dotprod ();/* Print result and release storage */ printf ("Sum =  %f \n", dotstr.sum);free (a);free (b);}

⌨️ 快捷键说明

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