1
1
This commit was SVN r23773.
Этот коммит содержится в:
Mike Dubman 2010-09-20 06:29:54 +00:00
родитель f754bde8eb
Коммит 58aa7fd161
2 изменённых файлов: 8 добавлений и 7 удалений

Просмотреть файл

@ -281,13 +281,13 @@ static int fca_register(void)
mca_base_param_reg_int(c, "enable_allgather", mca_base_param_reg_int(c, "enable_allgather",
"[1|0|] Enable/Disable FCA Allgather support", "[1|0|] Enable/Disable FCA Allgather support",
false, false, false, false,
0, 1,
&mca_coll_fca_component.fca_enable_allgather); &mca_coll_fca_component.fca_enable_allgather);
mca_base_param_reg_int(c, "enable_allgatherv", mca_base_param_reg_int(c, "enable_allgatherv",
"[1|0|] Enable/Disable FCA Allgatherv support", "[1|0|] Enable/Disable FCA Allgatherv support",
false, false, false, false,
0, 1,
&mca_coll_fca_component.fca_enable_allgatherv); &mca_coll_fca_component.fca_enable_allgatherv);
mca_base_param_reg_int(c, "enable_gather", mca_base_param_reg_int(c, "enable_gather",

Просмотреть файл

@ -275,7 +275,8 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
spec.rbuf = rbuf; spec.rbuf = rbuf;
spec.size = mca_coll_fca_get_buf_size(sdtype, scount, scount); spec.size = mca_coll_fca_get_buf_size(sdtype, scount, scount);
if (spec.size < 0 || spec.size > fca_module->fca_comm_caps.max_payload) { if (spec.size < 0 || spec.size > fca_module->fca_comm_caps.max_payload ||
!FCA_DT_IS_CONTIGUOUS_MEMORY_LAYOUT(rdtype, ompi_comm_size(comm))) {
FCA_VERBOSE(5, "Unsupported allgather operation size %d, using fallback\n", FCA_VERBOSE(5, "Unsupported allgather operation size %d, using fallback\n",
spec.size); spec.size);
goto orig_allgather; goto orig_allgather;
@ -297,7 +298,6 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
orig_allgather: orig_allgather:
return fca_module->previous_allgather(sbuf, scount, sdtype, rbuf, rcount, rdtype, return fca_module->previous_allgather(sbuf, scount, sdtype, rbuf, rcount, rdtype,
comm, fca_module->previous_allgather_module); comm, fca_module->previous_allgather_module);
} }
@ -320,7 +320,8 @@ int mca_coll_fca_allgatherv(void *sbuf, int scount,
spec.rbuf = rbuf; spec.rbuf = rbuf;
spec.sendsize = mca_coll_fca_get_buf_size(sdtype, scount, scount); spec.sendsize = mca_coll_fca_get_buf_size(sdtype, scount, scount);
if (spec.sendsize < 0 || spec.sendsize > fca_module->fca_comm_caps.max_payload) { if (spec.sendsize < 0 || spec.sendsize > fca_module->fca_comm_caps.max_payload ||
!FCA_DT_IS_CONTIGUOUS_MEMORY_LAYOUT(rdtype, ompi_comm_size(comm))) {
FCA_VERBOSE(5, "Unsupported allgatherv operation size %d, using fallback\n", FCA_VERBOSE(5, "Unsupported allgatherv operation size %d, using fallback\n",
spec.sendsize); spec.sendsize);
goto orig_allgatherv; goto orig_allgatherv;
@ -332,8 +333,8 @@ int mca_coll_fca_allgatherv(void *sbuf, int scount,
/* convert MPI counts which depend on dtype) to FCA sizes (which are in bytes) */ /* convert MPI counts which depend on dtype) to FCA sizes (which are in bytes) */
relemsize = mca_coll_fca_get_buf_size(rdtype, 1, comm_size); relemsize = mca_coll_fca_get_buf_size(rdtype, 1, comm_size);
for (i = 0; i < comm_size; ++i) { for (i = 0; i < comm_size; ++i) {
spec.recvsizes[i] *= relemsize; spec.recvsizes[i] = rcounts[i] * relemsize;
spec.displs[i] *= relemsize; spec.displs[i] = disps[i] * relemsize;
} }
FCA_VERBOSE(5,"Using FCA Allgatherv"); FCA_VERBOSE(5,"Using FCA Allgatherv");