Skip to content

Commit 377bad1

Browse files
committed
Merge pull request #747 from hppritcha/topic/ofi_progress_fix
mtl/ofi: don't inline ofi progress method
2 parents f09b834 + f5c43c1 commit 377bad1

File tree

2 files changed

+46
-37
lines changed

2 files changed

+46
-37
lines changed

ompi/mca/mtl/ofi/mtl_ofi.h

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ extern int ompi_mtl_ofi_del_procs(struct mca_mtl_base_module_t *mtl,
5252
size_t nprocs,
5353
struct ompi_proc_t **procs);
5454

55+
int ompi_mtl_ofi_progress_no_inline(void);
56+
5557
__opal_attribute_always_inline__ static inline int
5658
ompi_mtl_ofi_progress(void)
5759
{
@@ -115,42 +117,7 @@ ompi_mtl_ofi_progress(void)
115117

116118

117119
/* MTL interface functions */
118-
__opal_attribute_always_inline__ static inline int
119-
ompi_mtl_ofi_finalize(struct mca_mtl_base_module_t *mtl)
120-
{
121-
opal_progress_unregister(ompi_mtl_ofi_progress);
122-
123-
/**
124-
* Close all the OFI objects
125-
*/
126-
if (fi_close((fid_t)ompi_mtl_ofi.ep)) {
127-
opal_output(ompi_mtl_base_framework.framework_output,
128-
"fi_close failed: %s", strerror(errno));
129-
abort();
130-
}
131-
if (fi_close((fid_t)ompi_mtl_ofi.cq)) {
132-
opal_output(ompi_mtl_base_framework.framework_output,
133-
"fi_close failed: %s", strerror(errno));
134-
abort();
135-
}
136-
if (fi_close((fid_t)ompi_mtl_ofi.av)) {
137-
opal_output(ompi_mtl_base_framework.framework_output,
138-
"fi_close failed: %s", strerror(errno));
139-
abort();
140-
}
141-
if (fi_close((fid_t)ompi_mtl_ofi.domain)) {
142-
opal_output(ompi_mtl_base_framework.framework_output,
143-
"fi_close failed: %s", strerror(errno));
144-
abort();
145-
}
146-
if (fi_close((fid_t)ompi_mtl_ofi.fabric)) {
147-
opal_output(ompi_mtl_base_framework.framework_output,
148-
"fi_close failed: %s", strerror(errno));
149-
abort();
150-
}
151-
152-
return OMPI_SUCCESS;
153-
}
120+
int ompi_mtl_ofi_finalize(struct mca_mtl_base_module_t *mtl);
154121

155122
__opal_attribute_always_inline__ static inline int
156123
ompi_mtl_ofi_get_error(int error_num)

ompi/mca/mtl/ofi/mtl_ofi_component.c

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ ompi_mtl_ofi_component_close(void)
101101
return OMPI_SUCCESS;
102102
}
103103

104+
int
105+
ompi_mtl_ofi_progress_no_inline(void)
106+
{
107+
ompi_mtl_ofi_progress();
108+
}
104109

105110
static mca_mtl_base_module_t*
106111
ompi_mtl_ofi_component_init(bool enable_progress_threads,
@@ -338,7 +343,7 @@ ompi_mtl_ofi_component_init(bool enable_progress_threads,
338343
/**
339344
* Activate progress callback.
340345
*/
341-
ret = opal_progress_register(ompi_mtl_ofi_progress);
346+
ret = opal_progress_register(ompi_mtl_ofi_progress_no_inline);
342347
if (OMPI_SUCCESS != ret) {
343348
opal_output_verbose(1, ompi_mtl_base_framework.framework_output,
344349
"%s:%d: opal_progress_register failed: %d\n",
@@ -373,5 +378,42 @@ ompi_mtl_ofi_component_init(bool enable_progress_threads,
373378
return NULL;
374379
}
375380

381+
int
382+
ompi_mtl_ofi_finalize(struct mca_mtl_base_module_t *mtl)
383+
{
384+
opal_progress_unregister(ompi_mtl_ofi_progress_no_inline);
385+
386+
/**
387+
* * Close all the OFI objects
388+
* */
389+
if (fi_close((fid_t)ompi_mtl_ofi.ep)) {
390+
opal_output(ompi_mtl_base_framework.framework_output,
391+
"fi_close failed: %s", strerror(errno));
392+
abort();
393+
}
394+
if (fi_close((fid_t)ompi_mtl_ofi.cq)) {
395+
opal_output(ompi_mtl_base_framework.framework_output,
396+
"fi_close failed: %s", strerror(errno));
397+
abort();
398+
}
399+
if (fi_close((fid_t)ompi_mtl_ofi.av)) {
400+
opal_output(ompi_mtl_base_framework.framework_output,
401+
"fi_close failed: %s", strerror(errno));
402+
abort();
403+
}
404+
if (fi_close((fid_t)ompi_mtl_ofi.domain)) {
405+
opal_output(ompi_mtl_base_framework.framework_output,
406+
"fi_close failed: %s", strerror(errno));
407+
abort();
408+
}
409+
if (fi_close((fid_t)ompi_mtl_ofi.fabric)) {
410+
opal_output(ompi_mtl_base_framework.framework_output,
411+
"fi_close failed: %s", strerror(errno));
412+
abort();
413+
}
414+
415+
return OMPI_SUCCESS;
416+
}
417+
376418

377419

0 commit comments

Comments
 (0)