From cdb51dbec109ccde45c8a4ceb29ea925d01e2920 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 29 Apr 2022 16:13:10 +0200 Subject: Strip out time-accounts --- src/process_image.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) (limited to 'src/process_image.c') diff --git a/src/process_image.c b/src/process_image.c index 20d6c9c1..46c5f729 100644 --- a/src/process_image.c +++ b/src/process_image.c @@ -50,7 +50,6 @@ #include #include #include -#include #include "process_image.h" #include "predict-refine.h" @@ -103,7 +102,6 @@ static struct image *file_wait_open_read(const char *filename, const char *event, DataTemplate *dtempl, struct sb_shm *sb_shared, - TimeAccounts *taccs, char *last_task, signed int wait_for_file, int cookie, @@ -116,7 +114,6 @@ static struct image *file_wait_open_read(const char *filename, int r; struct image *image; - time_accounts_set(taccs, TACC_WAITFILE); set_last_task(last_task, "wait for file"); do { @@ -150,13 +147,11 @@ static struct image *file_wait_open_read(const char *filename, do { - time_accounts_set(taccs, TACC_IMAGE_DATA); set_last_task(last_task, "read file"); sb_shared->pings[cookie]++; - image = image_read_with_time_accounting(dtempl, filename, event, - no_image_data, no_mask_data, - taccs); + image = image_read(dtempl, filename, event, + no_image_data, no_mask_data); if ( image == NULL ) { if ( wait_for_file && !read_retry_done ) { read_retry_done = 1; @@ -178,7 +173,7 @@ static struct image *file_wait_open_read(const char *filename, void process_image(const struct index_args *iargs, struct pattern_args *pargs, Stream *st, int cookie, const char *tmpdir, - int serial, struct sb_shm *sb_shared, TimeAccounts *taccs, + int serial, struct sb_shm *sb_shared, char *last_task) { struct image *image; @@ -190,7 +185,6 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, int any_crystals; if ( pargs->zmq_data != NULL ) { - time_accounts_set(taccs, TACC_IMAGE_DATA); set_last_task(last_task, "unpacking messagepack object"); image = image_read_data_block(iargs->dtempl, pargs->zmq_data, @@ -198,13 +192,12 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, iargs->data_format, serial, iargs->no_image_data, - iargs->no_mask_data, - taccs); + iargs->no_mask_data); if ( image == NULL ) return; } else { image = file_wait_open_read(pargs->filename, pargs->event, iargs->dtempl, - sb_shared, taccs, last_task, + sb_shared, last_task, iargs->wait_for_file, cookie, iargs->no_image_data, @@ -222,7 +215,6 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, image->serial = serial; /* Take snapshot of image before applying horrible noise filters */ - time_accounts_set(taccs, TACC_FILTER); set_last_task(last_task, "image filter"); sb_shared->pings[cookie]++; @@ -240,12 +232,10 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, filter_noise(image); } - time_accounts_set(taccs, TACC_RESRANGE); set_last_task(last_task, "resolution range"); sb_shared->pings[cookie]++; mark_resolution_range_as_bad(image, iargs->highres, +INFINITY); - time_accounts_set(taccs, TACC_PEAKSEARCH); sb_shared->pings[cookie]++; switch ( iargs->peaks ) { @@ -363,7 +353,6 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, image->hit = 1; /* Index the pattern */ - time_accounts_set(taccs, TACC_INDEXING); set_last_task(last_task, "indexing"); index_pattern_3(image, iargs->ipriv, &sb_shared->pings[cookie], last_task); @@ -376,7 +365,6 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, free(rn); /* Set beam/crystal parameters */ - time_accounts_set(taccs, TACC_PREDPARAMS); set_last_task(last_task, "prediction params"); if ( iargs->fix_profile_r >= 0.0 ) { for ( i=0; in_crystals; i++ ) { @@ -400,7 +388,6 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, } /* Integrate! */ - time_accounts_set(taccs, TACC_INTEGRATION); set_last_task(last_task, "integration"); sb_shared->pings[cookie]++; integrate_all_5(image, iargs->int_meth, PMODEL_XSPHERE, @@ -411,7 +398,6 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, &sb_shared->term_lock, iargs->overpredict); streamwrite: - time_accounts_set(taccs, TACC_WRITESTREAM); set_last_task(last_task, "stream write"); sb_shared->pings[cookie]++; ret = stream_write_chunk(st, image, iargs->stream_flags); @@ -430,7 +416,6 @@ streamwrite: out: /* Count crystals which are still good */ - time_accounts_set(taccs, TACC_TOTALS); set_last_task(last_task, "process_image finalisation"); sb_shared->pings[cookie]++; pthread_mutex_lock(&sb_shared->totals_lock); -- cgit v1.2.3 From 3fb81ddf7059599dba9b8b223156801af6885fc1 Mon Sep 17 00:00:00 2001 From: Thomas White Date: Fri, 29 Apr 2022 16:53:49 +0200 Subject: Add improved profiling Improvements: - Recursive, so we can see how things are working at different levels - Everything is profiled, even if not explicitly labelled - No possibility of losing time - Detects mistakes if routines aren't wrapped correctly --- src/process_image.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/process_image.c') diff --git a/src/process_image.c b/src/process_image.c index 46c5f729..5282e135 100644 --- a/src/process_image.c +++ b/src/process_image.c @@ -50,6 +50,7 @@ #include #include #include +#include #include "process_image.h" #include "predict-refine.h" @@ -150,8 +151,10 @@ static struct image *file_wait_open_read(const char *filename, set_last_task(last_task, "read file"); sb_shared->pings[cookie]++; + profile_start("image-read"); image = image_read(dtempl, filename, event, no_image_data, no_mask_data); + profile_end("image-read"); if ( image == NULL ) { if ( wait_for_file && !read_retry_done ) { read_retry_done = 1; @@ -186,6 +189,7 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, if ( pargs->zmq_data != NULL ) { set_last_task(last_task, "unpacking messagepack object"); + profile_start("read-data-block"); image = image_read_data_block(iargs->dtempl, pargs->zmq_data, pargs->zmq_data_size, @@ -193,8 +197,10 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, serial, iargs->no_image_data, iargs->no_mask_data); + profile_end("read-data-block"); if ( image == NULL ) return; } else { + profile_start("file-wait-open-read"); image = file_wait_open_read(pargs->filename, pargs->event, iargs->dtempl, sb_shared, last_task, @@ -202,6 +208,7 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, cookie, iargs->no_image_data, iargs->no_mask_data); + profile_end("file-wait-open-read"); if ( image == NULL ) { if ( iargs->wait_for_file != 0 ) { pthread_mutex_lock(&sb_shared->totals_lock); @@ -216,27 +223,36 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, /* Take snapshot of image before applying horrible noise filters */ set_last_task(last_task, "image filter"); + profile_start("image-filter"); sb_shared->pings[cookie]++; if ( (iargs->median_filter > 0) || iargs->noisefilter ) { + profile_start("data-backup"); prefilter = backup_image_data(image->dp, image->detgeom); + profile_end("data-backup"); } else { prefilter = NULL; } if ( iargs->median_filter > 0 ) { + profile_start("median-filter"); filter_median(image, iargs->median_filter); + profile_end("median-filter"); } if ( iargs->noisefilter ) { + profile_start("noise-filter"); filter_noise(image); + profile_end("noise-filter"); } + profile_end("image-filter"); set_last_task(last_task, "resolution range"); sb_shared->pings[cookie]++; mark_resolution_range_as_bad(image, iargs->highres, +INFINITY); sb_shared->pings[cookie]++; + profile_start("peak-search"); switch ( iargs->peaks ) { case PEAK_HDF5: @@ -310,13 +326,16 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, break; } + profile_end("peak-search"); image->peak_resolution = estimate_peak_resolution(image->features, image->lambda, image->detgeom); if ( prefilter != NULL ) { + profile_start("restore-filter-backup"); restore_image_data(image->dp, image->detgeom, prefilter); + profile_end("restore-filter-backup"); } rn = getcwd(NULL, 0); @@ -354,8 +373,10 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, /* Index the pattern */ set_last_task(last_task, "indexing"); + profile_start("index"); index_pattern_3(image, iargs->ipriv, &sb_shared->pings[cookie], last_task); + profile_end("index"); r = chdir(rn); if ( r ) { @@ -389,6 +410,7 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, /* Integrate! */ set_last_task(last_task, "integration"); + profile_start("integration"); sb_shared->pings[cookie]++; integrate_all_5(image, iargs->int_meth, PMODEL_XSPHERE, iargs->push_res, @@ -396,14 +418,17 @@ void process_image(const struct index_args *iargs, struct pattern_args *pargs, iargs->int_diag, iargs->int_diag_h, iargs->int_diag_k, iargs->int_diag_l, &sb_shared->term_lock, iargs->overpredict); + profile_end("integration"); streamwrite: set_last_task(last_task, "stream write"); + profile_start("write-stream"); sb_shared->pings[cookie]++; ret = stream_write_chunk(st, image, iargs->stream_flags); if ( ret != 0 ) { ERROR("Error writing stream file.\n"); } + profile_end("write-stream"); int n = 0; for ( i=0; in_crystals; i++ ) { -- cgit v1.2.3