#include #include "bench8sc.h" #define MASK 0x7fffffff /* A zero followed by 31 ones*/ #define MASK63 0x7fffffffffffffff /* A zero followed by 63 ones */ #define max(A,B) ((A) > (B) ? (A) : (B)) static char cvs_info[] = "BMARKGRP $Date: 2005/01/10 21:04:37 $ $Revision: 1.2 $ $RCSfile: s8sc.c,v $ $Name: rel_5 $"; int s8s(int n, int k, int l, int t, long *d, double *a, int32 ia[NONZERO][MATRIXSIZE], int penum, int npes) { void irand(int,int[],int[]); void brand64(int,int[],long int[]); void get_my_idata(int, int, int, int, int, int, int*, int*, int*); void get_my_bdata64(int, int, int, int, int, int, long int[], int*, int*); void initiran(int,int,int[]); unsigned int i,j,m,kk,ii; double tmp; long itemp, jj, mm; int state[632]; int gseed = 9911; int zero = 0, one = 1, two = 2, ten = 10; int datafirst, datalast; int myshare, nelems, chunksize, nseqs; int index = 0; int rdsize = MATRIXSIZE * NONZERO * NMATRICES; long *la; int maxlen; int halft; long *randomdata; int32 *randint; long temp; maxlen = max(MATRIXSIZE * NONZERO * NMATRICES/npes, MATRIXSIZE*2); randomdata = (long *) malloc(maxlen*8); if (randomdata == (long *)0) { printf("Can't malloc space for randomdata\n"); return(-1); } randint = (int32 *)randomdata; /* * Generate the D array * The D array needs to be replicated on each site so we will generate * it in parallel identically at each PE. */ initiran(0, gseed, state); /* initialize the rand#gen identically */ #if defined(__alpha) irand(2*t,state,(int *)d); #elif defined(_CRAYMPP) brand64(t,state,(long *)d); #endif /* Have to worry about endian-ness. T3E and SPARC are big-endian. DEC alpha is little-endian. */ for (i=0; i