Update onesided components to fix the case (on 64 bit machines) where the total offset is greater than 2^31-1 bytes.
See: http://www.open-mpi.org/community/lists/users/2008/01/4880.php This commit was SVN r17400.
Этот коммит содержится в:
родитель
b5fe63048f
Коммит
b88a3f7a94
@ -522,7 +522,7 @@ ompi_osc_pt2pt_sendreq_recv_put(ompi_osc_pt2pt_module_t *module,
|
|||||||
{
|
{
|
||||||
int ret = OMPI_SUCCESS;
|
int ret = OMPI_SUCCESS;
|
||||||
void *target = (unsigned char*) module->p2p_win->w_baseptr +
|
void *target = (unsigned char*) module->p2p_win->w_baseptr +
|
||||||
(header->hdr_target_disp * module->p2p_win->w_disp_unit);
|
((unsigned long)header->hdr_target_disp * module->p2p_win->w_disp_unit);
|
||||||
ompi_proc_t *proc = ompi_comm_peer_lookup( module->p2p_comm, header->hdr_origin );
|
ompi_proc_t *proc = ompi_comm_peer_lookup( module->p2p_comm, header->hdr_origin );
|
||||||
struct ompi_datatype_t *datatype =
|
struct ompi_datatype_t *datatype =
|
||||||
ompi_osc_base_datatype_create(proc, &inbuf);
|
ompi_osc_base_datatype_create(proc, &inbuf);
|
||||||
@ -605,7 +605,7 @@ ompi_osc_pt2pt_sendreq_recv_accum_long_cb(ompi_osc_pt2pt_mpireq_t *mpireq)
|
|||||||
void *payload = (void*) (header + 1);
|
void *payload = (void*) (header + 1);
|
||||||
int ret;
|
int ret;
|
||||||
void *target = (unsigned char*) module->p2p_win->w_baseptr +
|
void *target = (unsigned char*) module->p2p_win->w_baseptr +
|
||||||
(header->hdr_target_disp * module->p2p_win->w_disp_unit);
|
((unsigned long)header->hdr_target_disp * module->p2p_win->w_disp_unit);
|
||||||
|
|
||||||
/* lock the window for accumulates */
|
/* lock the window for accumulates */
|
||||||
OPAL_THREAD_LOCK(&longreq->req_module->p2p_acc_lock);
|
OPAL_THREAD_LOCK(&longreq->req_module->p2p_acc_lock);
|
||||||
@ -677,7 +677,7 @@ ompi_osc_pt2pt_sendreq_recv_accum(ompi_osc_pt2pt_module_t *module,
|
|||||||
struct ompi_datatype_t *datatype =
|
struct ompi_datatype_t *datatype =
|
||||||
ompi_osc_base_datatype_create(proc, &payload);
|
ompi_osc_base_datatype_create(proc, &payload);
|
||||||
void *target = (unsigned char*) module->p2p_win->w_baseptr +
|
void *target = (unsigned char*) module->p2p_win->w_baseptr +
|
||||||
(header->hdr_target_disp * module->p2p_win->w_disp_unit);
|
((unsigned long)header->hdr_target_disp * module->p2p_win->w_disp_unit);
|
||||||
|
|
||||||
if (NULL == datatype) {
|
if (NULL == datatype) {
|
||||||
opal_output(ompi_osc_base_output,
|
opal_output(ompi_osc_base_output,
|
||||||
|
@ -183,7 +183,7 @@ ompi_osc_rdma_sendreq_rdma(ompi_osc_rdma_module_t *module,
|
|||||||
descriptor->des_dst_cnt = 1;
|
descriptor->des_dst_cnt = 1;
|
||||||
descriptor->des_dst[0].seg_addr.lval =
|
descriptor->des_dst[0].seg_addr.lval =
|
||||||
module->m_peer_info[target].peer_base +
|
module->m_peer_info[target].peer_base +
|
||||||
(sendreq->req_target_disp * module->m_win->w_disp_unit);
|
((unsigned long)sendreq->req_target_disp * module->m_win->w_disp_unit);
|
||||||
descriptor->des_dst[0].seg_len =
|
descriptor->des_dst[0].seg_len =
|
||||||
sendreq->req_origin_bytes_packed;
|
sendreq->req_origin_bytes_packed;
|
||||||
descriptor->des_dst[0].seg_key.key64 =
|
descriptor->des_dst[0].seg_key.key64 =
|
||||||
@ -213,7 +213,7 @@ ompi_osc_rdma_sendreq_rdma(ompi_osc_rdma_module_t *module,
|
|||||||
descriptor->des_src_cnt = 1;
|
descriptor->des_src_cnt = 1;
|
||||||
descriptor->des_src[0].seg_addr.lval =
|
descriptor->des_src[0].seg_addr.lval =
|
||||||
module->m_peer_info[target].peer_base +
|
module->m_peer_info[target].peer_base +
|
||||||
(sendreq->req_target_disp * module->m_win->w_disp_unit);
|
((unsigned long)sendreq->req_target_disp * module->m_win->w_disp_unit);
|
||||||
descriptor->des_src[0].seg_len =
|
descriptor->des_src[0].seg_len =
|
||||||
sendreq->req_origin_bytes_packed;
|
sendreq->req_origin_bytes_packed;
|
||||||
descriptor->des_src[0].seg_key.key64 =
|
descriptor->des_src[0].seg_key.key64 =
|
||||||
@ -790,7 +790,7 @@ ompi_osc_rdma_sendreq_recv_put(ompi_osc_rdma_module_t *module,
|
|||||||
{
|
{
|
||||||
int ret = OMPI_SUCCESS;
|
int ret = OMPI_SUCCESS;
|
||||||
void *target = (unsigned char*) module->m_win->w_baseptr +
|
void *target = (unsigned char*) module->m_win->w_baseptr +
|
||||||
(header->hdr_target_disp * module->m_win->w_disp_unit);
|
((unsigned long)header->hdr_target_disp * module->m_win->w_disp_unit);
|
||||||
ompi_proc_t *proc = ompi_comm_peer_lookup( module->m_comm, header->hdr_origin );
|
ompi_proc_t *proc = ompi_comm_peer_lookup( module->m_comm, header->hdr_origin );
|
||||||
struct ompi_datatype_t *datatype =
|
struct ompi_datatype_t *datatype =
|
||||||
ompi_osc_base_datatype_create(proc, inbuf);
|
ompi_osc_base_datatype_create(proc, inbuf);
|
||||||
@ -889,7 +889,7 @@ ompi_osc_rdma_sendreq_recv_accum_long_cb(ompi_osc_rdma_longreq_t *longreq)
|
|||||||
ompi_osc_rdma_module_t *module = longreq->req_module;
|
ompi_osc_rdma_module_t *module = longreq->req_module;
|
||||||
unsigned char *target_buffer =
|
unsigned char *target_buffer =
|
||||||
(unsigned char*) module->m_win->w_baseptr +
|
(unsigned char*) module->m_win->w_baseptr +
|
||||||
(header->hdr_target_disp * module->m_win->w_disp_unit);
|
((unsigned long)header->hdr_target_disp * module->m_win->w_disp_unit);
|
||||||
|
|
||||||
/* lock the window for accumulates */
|
/* lock the window for accumulates */
|
||||||
OPAL_THREAD_LOCK(&longreq->req_module->m_acc_lock);
|
OPAL_THREAD_LOCK(&longreq->req_module->m_acc_lock);
|
||||||
@ -971,7 +971,7 @@ ompi_osc_rdma_sendreq_recv_accum(ompi_osc_rdma_module_t *module,
|
|||||||
unsigned char *target_buffer;
|
unsigned char *target_buffer;
|
||||||
|
|
||||||
target_buffer = (unsigned char*) module->m_win->w_baseptr +
|
target_buffer = (unsigned char*) module->m_win->w_baseptr +
|
||||||
(header->hdr_target_disp * module->m_win->w_disp_unit);
|
((unsigned long)header->hdr_target_disp * module->m_win->w_disp_unit);
|
||||||
|
|
||||||
/* lock the window for accumulates */
|
/* lock the window for accumulates */
|
||||||
OPAL_THREAD_LOCK(&module->m_acc_lock);
|
OPAL_THREAD_LOCK(&module->m_acc_lock);
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user