X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/15badc71ce964f6dae6428c9a4c0198fad5d4936..ec3e4ee5f1a7ffeb96e044057809944f364014e6:/src/smpi/colls/alltoall-3dmesh.c diff --git a/src/smpi/colls/alltoall-3dmesh.c b/src/smpi/colls/alltoall-3dmesh.c index ca10de7191..81b1ecdd7c 100644 --- a/src/smpi/colls/alltoall-3dmesh.c +++ b/src/smpi/colls/alltoall-3dmesh.c @@ -1,3 +1,9 @@ +/* Copyright (c) 2013-2014. The SimGrid Team. + * All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + #include "colls_private.h" #include @@ -50,7 +56,7 @@ int smpi_coll_tuned_alltoall_3dmesh(void *send_buff, int send_count, MPI_Status status, *statuses; int i, j, src, dst, rank, num_procs, num_reqs, X, Y, Z, block_size, count; int my_z, two_dsize, my_row_base, my_col_base, my_z_base, src_row_base; - int src_z_base, send_offset, recv_offset, tag = 1; + int src_z_base, send_offset, recv_offset, tag = COLL_TAG_ALLTOALL; char *tmp_buff1, *tmp_buff2; @@ -76,15 +82,15 @@ int smpi_coll_tuned_alltoall_3dmesh(void *send_buff, int send_count, block_size = extent * send_count; - tmp_buff1 = (char *) xbt_malloc(block_size * num_procs * two_dsize); - tmp_buff2 = (char *) xbt_malloc(block_size * two_dsize); + tmp_buff1 = (char *) smpi_get_tmp_sendbuffer(block_size * num_procs * two_dsize); + tmp_buff2 = (char *) smpi_get_tmp_recvbuffer(block_size * two_dsize); statuses = (MPI_Status *) xbt_malloc(num_reqs * sizeof(MPI_Status)); reqs = (MPI_Request *) xbt_malloc(num_reqs * sizeof(MPI_Request)); req_ptr = reqs; - send_offset = recv_offset = (rank % two_dsize) * block_size * num_procs; + recv_offset = (rank % two_dsize) * block_size * num_procs; smpi_mpi_sendrecv(send_buff, send_count * num_procs, send_type, rank, tag, tmp_buff1 + recv_offset, num_procs * recv_count, @@ -174,7 +180,7 @@ int smpi_coll_tuned_alltoall_3dmesh(void *send_buff, int send_count, free(reqs); free(statuses); - free(tmp_buff1); - free(tmp_buff2); + smpi_free_tmp_buffer(tmp_buff1); + smpi_free_tmp_buffer(tmp_buff2); return MPI_SUCCESS; }