void rdm_sr_setup(bool is_noreg, enum fi_progress pm) { int ret = 0, i = 0; hints = fi_allocinfo(); cr_assert(hints, "fi_allocinfo"); hints->domain_attr->cq_data_size = NUMEPS * 2; hints->domain_attr->control_progress = pm; hints->domain_attr->data_progress = pm; hints->mode = ~0; hints->caps = is_noreg ? hints->caps : FI_SOURCE | FI_MSG; hints->fabric_attr->name = strdup("gni"); /* Get info about fabric services with the provided hints */ for (; i < NUMEPS; i++) { ret = fi_getinfo(FI_VERSION(1, 0), NULL, 0, 0, hints, &fi[i]); cr_assert(!ret, "fi_getinfo"); } if (is_noreg) rdm_sr_setup_common_eps(); else rdm_sr_setup_common(); }
void rdm_sr_setup_common(void) { int ret = 0, i = 0; rdm_sr_setup_common_eps(); for (i = 0; i < NUMEPS; i++) { ret = fi_mr_reg(dom[i], target, 3 * BUF_SZ, FI_REMOTE_WRITE, 0, 0, 0, rem_mr + i, &target); cr_assert_eq(ret, 0); ret = fi_mr_reg(dom[i], source, BUF_SZ, FI_REMOTE_WRITE, 0, 0, 0, loc_mr + i, &source); cr_assert_eq(ret, 0); ret = fi_mr_reg(dom[i], iov_dest_buf, IOV_CNT * BUF_SZ, FI_REMOTE_WRITE, 0, 0, 0, iov_dest_buf_mr + i, &iov_dest_buf); cr_assert_eq(ret, 0); ret = fi_mr_reg(dom[i], iov_src_buf, IOV_CNT * BUF_SZ, FI_REMOTE_WRITE, 0, 0, 0, iov_src_buf_mr + i, &iov_src_buf); cr_assert_eq(ret, 0); mr_key[i] = fi_mr_key(rem_mr[i]); iov_dest_buf_mr_key[i] = fi_mr_key(iov_dest_buf_mr[i]); } }