     A negative return status means invalid <gpu_num>. **/
 {
  int i,b,f;
+ double total_flops,total_traffic_in,total_traffic_out;
  clock_t ctm;
 
  if(gpu_num >= 0 && gpu_num < MAX_GPUS_PER_NODE){

 }else{
  return -1; //invalid GPU number
 }
 for(i=b;i<=f;i++){
  if(gpu_is_mine(i) != GPU_OFF){
   ctm=clock();
   gpu_stats[i].time_active=((double)(ctm-gpu_stats[i].time_start))/CLOCKS_PER_SEC;
   printf("\n#MSG(TAL-SH::NV-TAL): Statistics on GPU #%d:\n",i);
   printf(" Number of tasks submitted: %llu\n",gpu_stats[i].tasks_submitted);
   printf(" Number of tasks completed: %llu\n",gpu_stats[i].tasks_completed);

//  }else{
//   printf("\n#MSG(TAL-SH::NV-TAL): Statistics on GPU #%d: GPU is OFF\n",i);
  }
 }
 if(gpu_num == -1){
  printf("\n#MSG(TAL-SH::NV-TAL): Statistics across all GPU devices:\n");
  printf(" Number of Flops processed   : %G\n",total_flops);
  printf(" Number of Bytes to GPUs     : %G\n",total_traffic_in);
  printf(" Number of Bytes from GPUs   : %G\n",total_traffic_out);
  printf(" Average arithmetic intensity: %G\n",total_flops/(total_traffic_in+total_traffic_out));
  printf("#END_MSG\n");
 }
 return 0;
}
