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",
"[1|0|] Enable/Disable FCA Allgather support",
false, false,
0,
1,
&mca_coll_fca_component.fca_enable_allgather);
mca_base_param_reg_int(c, "enable_allgatherv",
"[1|0|] Enable/Disable FCA Allgatherv support",
false, false,
0,
1,
&mca_coll_fca_component.fca_enable_allgatherv);
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.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",
spec.size);
goto orig_allgather;
@ -297,7 +298,6 @@ int mca_coll_fca_allgather(void *sbuf, int scount, struct ompi_datatype_t *sdtyp
orig_allgather:
return fca_module->previous_allgather(sbuf, scount, sdtype, rbuf, rcount, rdtype,
comm, fca_module->previous_allgather_module);
}
@ -320,7 +320,8 @@ int mca_coll_fca_allgatherv(void *sbuf, int scount,
spec.rbuf = rbuf;
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",
spec.sendsize);
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) */
relemsize = mca_coll_fca_get_buf_size(rdtype, 1, comm_size);
for (i = 0; i < comm_size; ++i) {
spec.recvsizes[i] *= relemsize;
spec.displs[i] *= relemsize;
spec.recvsizes[i] = rcounts[i] * relemsize;
spec.displs[i] = disps[i] * relemsize;
}
FCA_VERBOSE(5,"Using FCA Allgatherv");