static int mca_btl_ugni_component_progress (void) { mca_btl_ugni_module_t *ugni_module; unsigned int i; int count = 0; for (i = 0 ; i < mca_btl_ugni_component.ugni_num_btls ; ++i) { ugni_module = mca_btl_ugni_component.modules + i; mca_btl_ugni_progress_wait_list (ugni_module); count += mca_btl_ugni_progress_datagram (ugni_module); count += mca_btl_ugni_progress_local_smsg (ugni_module); count += mca_btl_ugni_progress_remote_smsg (ugni_module); count += mca_btl_ugni_progress_rdma (ugni_module, 0); if (mca_btl_ugni_component.progress_thread_enabled) { count += mca_btl_ugni_progress_rdma (ugni_module, 1); } /* post pending after progressing rdma */ mca_btl_ugni_post_pending (ugni_module); } return count; }
static int mca_btl_ugni_component_progress (void) { mca_btl_ugni_module_t *ugni_module = mca_btl_ugni_component.modules; int count = 0; count += mca_btl_ugni_progress_remote_smsg (ugni_module); if (ugni_module->active_datagrams) { count += mca_btl_ugni_progress_datagram (ugni_module->devices); } for (int i = 0 ; i < mca_btl_ugni_component.virtual_device_count ; ++i) { mca_btl_ugni_device_t *device = ugni_module->devices + i; if (device->smsg_connections) { count += mca_btl_ugni_progress_local_smsg (ugni_module, device); mca_btl_ugni_progress_wait_list (ugni_module); } if (device->dev_rdma_local_cq.active_operations) { count += mca_btl_ugni_progress_rdma (ugni_module, device, &device->dev_rdma_local_cq); } if (mca_btl_ugni_component.progress_thread_enabled && device->dev_rdma_local_irq_cq.active_operations) { count += mca_btl_ugni_progress_rdma (ugni_module, device, &device->dev_rdma_local_irq_cq); } } return count; }
static int mca_btl_ugni_component_progress (void) { mca_btl_ugni_module_t *ugni_module; static int64_t call_count = 0; int64_t cur_call_count = OPAL_THREAD_ADD64(&call_count, 1); unsigned int i; int count = 0; for (i = 0 ; i < mca_btl_ugni_component.ugni_num_btls ; ++i) { ugni_module = mca_btl_ugni_component.modules + i; if ((cur_call_count & 0x7) == 0) { count += mca_btl_ugni_progress_datagram (ugni_module); } if (ugni_module->connected_peer_count) { mca_btl_ugni_progress_wait_list (ugni_module); count += mca_btl_ugni_progress_local_smsg (ugni_module); count += mca_btl_ugni_progress_remote_smsg (ugni_module); } if (ugni_module->active_rdma_count) { count += mca_btl_ugni_progress_rdma (ugni_module, 0); } if (mca_btl_ugni_component.progress_thread_enabled) { count += mca_btl_ugni_progress_rdma (ugni_module, 1); } /* post pending after progressing rdma */ mca_btl_ugni_post_pending (ugni_module); } return count; }
static int mca_btl_ugni_component_progress (void) { mca_btl_ugni_module_t *ugni_module; unsigned int i; int count = 0; for (i = 0 ; i < mca_btl_ugni_component.ugni_num_btls ; ++i) { ugni_module = mca_btl_ugni_component.modules + i; mca_btl_ugni_retry_failed (ugni_module); mca_btl_ugni_progress_wait_list (ugni_module); count += mca_btl_ugni_progress_datagram (ugni_module); count += mca_btl_ugni_progress_local_smsg (ugni_module); count += mca_btl_ugni_progress_remote_smsg (ugni_module); count += mca_btl_ugni_progress_rdma (ugni_module); } return count; }