Exemplo n.º 1
0
  //benchmark memory
  THREADABLE_FUNCTION_1ARG(bench_memory_bandwidth, int,mem_size)
  {
    //allocate double
    double *a=nissa_malloc("a",mem_size/sizeof(double),double);
    double *b=nissa_malloc("b",mem_size/sizeof(double),double);
    
    //first call to warm up
    bench_memory_copy(a,b,mem_size);
    
    //exec 10 times
    int ntests=10;
    double bench_time=-take_time();
    for(int i=0;i<ntests;i++) bench_memory_copy(a,b,mem_size);
    bench_time+=take_time();
    bench_time/=ntests;
    
    nissa_free(a);
    nissa_free(b);
    
    master_printf("time to copy %d Mbytes: %lg, %lg Mbs\n",mem_size/1024/1024,
		  bench_time,mem_size/1024/1024/bench_time);
  }
Exemplo n.º 2
0
  void close_bissa()
  {
    master_printf("Closing bissa\n");
    
    //unset lx geometry
    if(lx_geom_inited) unset_lx_geometry();
    
    //unset eo geometry
    if(eo_geom_inited) unset_eo_geometry();
    
    //stop the random generator
    if(loc_rnd_gen_inited) stop_loc_rnd_gen();
    
    //print information over the maximum amount of memory used
    master_printf("Maximal memory used during the run: %d bytes (",max_required_memory);
    if(rank==0) fprintf_friendly_filesize(stdout,max_required_memory);
    master_printf(") per rank\n\n");
    
    //check wether there are still allocated vectors
    if(main_vect.next!=NULL && rank==0)
      {
	printf("Warning, there are still allocated vectors:\n");
	print_all_vect_content();
	printf("For a total of %d bytes\n",compute_vect_memory_usage());
      }
    
    tot_time+=take_time();
    master_printf("Total time: %lg s\n",tot_time);
#ifdef COMM_BENCH
    master_printf("Total communication time: %lg s\n",tot_comm_time);
#endif
    
    //free thread delays pattern
    #if THREAD_DEBUG>=2
    free(delayed_thread_barrier);
    free(delay_rnd_gen);
    #endif
    
    MPI_Barrier(MPI_COMM_WORLD);
    master_printf("   Ciao!\n\n");
    MPI_Finalize();
  }
Exemplo n.º 3
0
int main (int argc, char *argv[])
{
	s4_t *s4;
	s4_transaction_t *t;
	int i;
	char *filename = tmpnam (NULL);
	GTimeVal cur, prev;

	g_thread_init (NULL);
	log_init(G_LOG_LEVEL_MASK & ~G_LOG_LEVEL_DEBUG);
	g_get_current_time (&prev);

	s4 = s4_open (filename, NULL, S4_NEW);

	if (s4 == NULL) {
		fprintf (stderr, "Could not open %s\n", argv[1]);
		exit (1);
	}

	take_time ("s4_open took", &prev, &cur);

	for (i = 0; i < ENTRIES; i++) {
		s4_val_t *val;
		val = s4_val_new_int (i);
		t = s4_begin (s4, 0);
		s4_add (t, "a", val, "b", val, "src");
		s4_commit (t);
		s4_val_free (val);
	}

	take_time ("s4be_ip_add took", &prev, &cur);

	for (i = 0; i < ENTRIES; i++) {
		s4_val_t *val;
		val = s4_val_new_int (i);
		t = s4_begin (s4, 0);
		s4_del (t, "a", val, "b", val, "src");
		s4_commit (t);
		s4_val_free (val);
	}

	take_time ("s4be_ip_del took", &prev, &cur);

	t = s4_begin (s4, 0);
	for (i = 0; i < ENTRIES; i++) {
		s4_val_t *val;
		val = s4_val_new_int (i);
		s4_add (t, "a", val, "b", val, "src");
		s4_val_free (val);
	}
	s4_commit (t);

	take_time ("s4be_ip_add took", &prev, &cur);

	t = s4_begin (s4, 0);
	for (i = 0; i < ENTRIES; i++) {
		s4_val_t *val;
		val = s4_val_new_int (i);
		s4_del (t, "a", val, "b", val, "src");
		s4_val_free (val);
	}
	s4_commit (t);

	take_time ("s4be_ip_del took", &prev, &cur);

	for (i = ENTRIES; i > 0; i--) {
		s4_val_t *val;
		val = s4_val_new_int (i);
		t = s4_begin (s4, 0);
		s4_add (t, "a", val, "b", val, "src");
		s4_commit (t);
		s4_val_free (val);
	}

	take_time ("s4be_ip_add (backwards) took", &prev, &cur);

	for (i = ENTRIES; i > 0; i--) {
		s4_val_t *val;
		val = s4_val_new_int (i);
		t = s4_begin (s4, 0);
		s4_del (t, "a", val, "b", val, "src");
		s4_commit (t);
		s4_val_free (val);
	}

	take_time ("s4be_ip_del (backwards) took", &prev, &cur);

	s4_close (s4);

	take_time ("s4_close took", &prev, &cur);

	g_unlink (filename);
	g_unlink (g_strconcat (filename, ".log", NULL));

	take_time ("g_unlink took", &prev, &cur);

	return 0;
}