예제 #1
0
int 
main () {
	HPCC_Params *params = initialize();
	double copyGBs, scaleGBs, addGBs, triadGBs;
	int failure;

	HPCC_Stream (params, 1, &copyGBs, &scaleGBs, &addGBs, &triadGBs, &failure);
	return 0;
}
예제 #2
0
int main(int argc, char **argv)
{
  int num_nodes = xmp_num_nodes();

  /* Set parameters */
  if(argc != 2){
#pragma xmp task on p(1)
    fprintf(stderr, "./STREAM (number of vector).\ne.g../STREAM 1000\n");
    return 1;
  }
  array_elements = atoi(argv[1]);

  /* Malloc arrays */
  a = malloc(sizeof(double) * array_elements);
  b = malloc(sizeof(double) * array_elements);
  c = malloc(sizeof(double) * array_elements);

  /* Initialize arrays */
#pragma omp parallel for
  for(int j=0;j<array_elements;j++){
    a[j] = 1.0;
    b[j] = 2.0;
    c[j] = 0.0;
  }

  /* Execute STREAM */
  double triadGBs = HPCC_Stream();

#pragma xmp task on p(1)
  printf("[Vector size is %d] Total Triad %.4f GB/s on %d nodes\n", 
	 array_elements, triadGBs, num_nodes);

#include <omp.h>
#pragma xmp task on p(1)
  {
#pragma omp parallel
    {
#pragma omp single
      printf("Number of Threads requested = %d\n", omp_get_num_threads());
    }
  }
  
  /* Verification */
  checkSTREAMresults(num_nodes);

  return 0;
}