//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); }
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(); }
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; }