don't report bogus timings

This commit is contained in:
Axel Kohlmeyer
2021-08-29 17:56:47 -04:00
parent 4d1a6cbd73
commit 39d8b239ff
2 changed files with 14 additions and 9 deletions

View File

@ -224,7 +224,9 @@ void BaseEllipsoidT::output_times() {
#ifdef USE_OPENCL #ifdef USE_OPENCL
// Workaround for timing issue on Intel OpenCL // Workaround for timing issue on Intel OpenCL
if (times[0] > 80e6) times[0]=0.0;
if (times[3] > 80e6) times[3]=0.0; if (times[3] > 80e6) times[3]=0.0;
if (times[6] > 80e6) times[6]=0.0;
#endif #endif
if (device->replica_me()==0) if (device->replica_me()==0)
@ -237,17 +239,18 @@ void BaseEllipsoidT::output_times() {
fprintf(screen,"\n-------------------------------------"); fprintf(screen,"\n-------------------------------------");
fprintf(screen,"--------------------------------\n"); fprintf(screen,"--------------------------------\n");
if (device->procs_per_gpu()==1 && times[3]>0) { if (device->procs_per_gpu()==1 && (times[3] > 0.0)) {
fprintf(screen,"Data Transfer: %.4f s.\n",times[0]/replica_size); if (times[0] > 0.0)
fprintf(screen,"Data Transfer: %.4f s.\n",times[0]/replica_size);
fprintf(screen,"Neighbor copy: %.4f s.\n",times[1]/replica_size); fprintf(screen,"Neighbor copy: %.4f s.\n",times[1]/replica_size);
if (nbor->gpu_nbor()>0) if (nbor->gpu_nbor() > 0.0)
fprintf(screen,"Neighbor build: %.4f s.\n",times[2]/replica_size); fprintf(screen,"Neighbor build: %.4f s.\n",times[2]/replica_size);
else else
fprintf(screen,"Neighbor unpack: %.4f s.\n",times[2]/replica_size); fprintf(screen,"Neighbor unpack: %.4f s.\n",times[2]/replica_size);
fprintf(screen,"Force calc: %.4f s.\n",times[3]/replica_size); fprintf(screen,"Force calc: %.4f s.\n",times[3]/replica_size);
fprintf(screen,"LJ calc: %.4f s.\n",times[4]/replica_size); fprintf(screen,"LJ calc: %.4f s.\n",times[4]/replica_size);
} }
if (times[6]>0) if (times[6] > 0.0)
fprintf(screen,"Device Overhead: %.4f s.\n",times[6]/replica_size); fprintf(screen,"Device Overhead: %.4f s.\n",times[6]/replica_size);
fprintf(screen,"Average split: %.4f.\n",avg_split); fprintf(screen,"Average split: %.4f.\n",avg_split);
fprintf(screen,"Lanes / atom: %d.\n",_threads_per_atom); fprintf(screen,"Lanes / atom: %d.\n",_threads_per_atom);

View File

@ -777,28 +777,30 @@ void DeviceT::output_times(UCL_Timer &time_pair, Answer<numtyp,acctyp> &ans,
#ifdef USE_OPENCL #ifdef USE_OPENCL
// Workaround for timing issue on Intel OpenCL // Workaround for timing issue on Intel OpenCL
if (times[0] > 80e6) times[0]=0.0;
if (times[3] > 80e6) times[3]=0.0; if (times[3] > 80e6) times[3]=0.0;
if (times[5] > 80e6) times[5]=0.0; if (times[5] > 80e6) times[5]=0.0;
#endif #endif
if (replica_me()==0) if (replica_me()==0)
if (screen && times[6]>0.0) { if (screen && (times[6] > 0.0)) {
fprintf(screen,"\n\n-------------------------------------"); fprintf(screen,"\n\n-------------------------------------");
fprintf(screen,"--------------------------------\n"); fprintf(screen,"--------------------------------\n");
fprintf(screen," Device Time Info (average): "); fprintf(screen," Device Time Info (average): ");
fprintf(screen,"\n-------------------------------------"); fprintf(screen,"\n-------------------------------------");
fprintf(screen,"--------------------------------\n"); fprintf(screen,"--------------------------------\n");
if (time_device() && times[3]>0) { if (time_device() && (times[3] > 0.0)) {
fprintf(screen,"Data Transfer: %.4f s.\n",times[0]/_replica_size); if (times[0] > 0.0)
fprintf(screen,"Data Transfer: %.4f s.\n",times[0]/_replica_size);
fprintf(screen,"Neighbor copy: %.4f s.\n",times[1]/_replica_size); fprintf(screen,"Neighbor copy: %.4f s.\n",times[1]/_replica_size);
if (nbor.gpu_nbor()>0) if (nbor.gpu_nbor() > 0.0)
fprintf(screen,"Neighbor build: %.4f s.\n",times[2]/_replica_size); fprintf(screen,"Neighbor build: %.4f s.\n",times[2]/_replica_size);
else else
fprintf(screen,"Neighbor unpack: %.4f s.\n",times[2]/_replica_size); fprintf(screen,"Neighbor unpack: %.4f s.\n",times[2]/_replica_size);
fprintf(screen,"Force calc: %.4f s.\n",times[3]/_replica_size); fprintf(screen,"Force calc: %.4f s.\n",times[3]/_replica_size);
} }
if (times[5]>0) if (times[5] > 0.0)
fprintf(screen,"Device Overhead: %.4f s.\n",times[5]/_replica_size); fprintf(screen,"Device Overhead: %.4f s.\n",times[5]/_replica_size);
fprintf(screen,"Average split: %.4f.\n",avg_split); fprintf(screen,"Average split: %.4f.\n",avg_split);
fprintf(screen,"Lanes / atom: %d.\n",threads_per_atom); fprintf(screen,"Lanes / atom: %d.\n",threads_per_atom);