From ac79e576ef59eba7c391fefccbd1eab6a8a2752f Mon Sep 17 00:00:00 2001 From: Edgar Gabriel Date: Sun, 10 Jun 2018 16:34:19 -0500 Subject: [PATCH] fcoll/base: do not use the two_phase compoment with CUDA support the two_phase compoment does not work with some collective I/O operations on CUDA buffers due to the data sieving (i.e. both read and write operations) executed on some buffers, which are not anticipated in the GPU buffer management of the code. Signed-off-by: Edgar Gabriel --- ompi/mca/fcoll/base/fcoll_base_file_select.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ompi/mca/fcoll/base/fcoll_base_file_select.c b/ompi/mca/fcoll/base/fcoll_base_file_select.c index 34b6e176a1..874c765dc4 100644 --- a/ompi/mca/fcoll/base/fcoll_base_file_select.c +++ b/ompi/mca/fcoll/base/fcoll_base_file_select.c @@ -280,11 +280,18 @@ int mca_fcoll_base_query_table (struct ompio_file_t *file, char *name) } } if (!strcmp (name, "two_phase")) { +#if OPAL_CUDA_SUPPORT + /* do not use the two_phase component with CUDA + buffers, since the data sieving causes trouble + on unmanaged GPU buffers. + */ +#else if ((int)file->f_cc_size < file->f_bytes_per_agg && (0 == file->f_stripe_size || file->f_cc_size < file->f_stripe_size) && (LUSTRE != file->f_fstype) ) { return 1; } +#endif } return 0; }