?? dotprod_serial.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 + -