aboutsummaryrefslogtreecommitdiff
path: root/src/indexamajig.c
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2022-11-16 11:57:13 +0100
committerThomas White <taw@physics.org>2023-05-02 11:22:29 +0200
commit7260e3a2710296665dbceb427e447da38175513f (patch)
treec2d71c750755c597d217be2e269e386130a89909 /src/indexamajig.c
parentd5289850ddee26f603b1fddbc652f6d609905927 (diff)
indexamajig: Add --cpu-pin
Similar code was stripped out 3.5 years ago by 4f4e5d05269eee6b192c271f2f9730a1ad3a4fbd. However, it seems there are still systems where it improves performance a lot.
Diffstat (limited to 'src/indexamajig.c')
-rw-r--r--src/indexamajig.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/indexamajig.c b/src/indexamajig.c
index 2f431636..fa153bf5 100644
--- a/src/indexamajig.c
+++ b/src/indexamajig.c
@@ -9,7 +9,7 @@
* Copyright © 2012 Lorenzo Galli
*
* Authors:
- * 2010-2021 Thomas White <taw@physics.org>
+ * 2010-2022 Thomas White <taw@physics.org>
* 2011 Richard Kirian
* 2012 Lorenzo Galli
* 2012 Chunhong Yoon
@@ -97,6 +97,7 @@ struct indexamajig_arguments
char **copy_headers;
int n_copy_headers;
char *harvest_file;
+ int cpu_pin;
struct taketwo_options **taketwo_opts_ptr;
struct felix_options **felix_opts_ptr;
@@ -445,6 +446,10 @@ static error_t parse_arg(int key, char *arg, struct argp_state *state)
args->asapo_params.wait_for_stream = 1;
break;
+ case 222 :
+ args->cpu_pin = 1;
+ break;
+
/* ---------- Peak search ---------- */
case 't' :
@@ -879,6 +884,7 @@ int main(int argc, char *argv[])
args.asapo_params.source = NULL;
args.asapo_params.stream = NULL;
args.asapo_params.wait_for_stream = 0;
+ args.cpu_pin = 0;
args.serial_start = 1;
args.if_peaks = 1;
args.if_multi = 0;
@@ -1000,6 +1006,7 @@ int main(int argc, char *argv[])
{"asapo-stream", 220, "str", OPTION_NO_USAGE, "ASAP::O stream name"},
{"asapo-wait-for-stream", 221, NULL, OPTION_NO_USAGE,
"Wait for ASAP::O stream to appear"},
+ {"cpu-pin", 222, NULL, OPTION_NO_USAGE, "Pin worker processes to CPUs"},
{NULL, 0, 0, OPTION_DOC, "Peak search options:", 3},
{"peaks", 301, "method", 0, "Peak search method. Default: zaef"},
@@ -1394,7 +1401,7 @@ int main(int argc, char *argv[])
r = create_sandbox(&args.iargs, args.n_proc, args.prefix, args.basename,
fh, st, tmpdir, args.serial_start,
&args.zmq_params, &args.asapo_params,
- timeout, args.profile);
+ timeout, args.profile, args.cpu_pin);
if ( pf8_data != NULL ) free_pf8_private_data(pf8_data);
if ( detgeom != NULL) detgeom_free(detgeom);