Last change
on this file since 15396 was 15396, checked in by Mathieu Morlighem, 12 years ago |
merged trunk-jpl and trunk for revision 15394
|
File size:
1.1 KB
|
Line | |
---|
1 | /*! \file: GetOwnershipBoundariesFromRange.cpp
|
---|
2 | * \brief from a local range on each cpu, we determine what
|
---|
3 | * lower row and upper row from a matrix a cpu owns.
|
---|
4 | */
|
---|
5 |
|
---|
6 | #ifdef HAVE_CONFIG_H
|
---|
7 | #include <config.h>
|
---|
8 | #else
|
---|
9 | #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
|
---|
10 | #endif
|
---|
11 |
|
---|
12 | #include <stdio.h>
|
---|
13 | #include "../../../shared/MemOps/MemOps.h"
|
---|
14 | #include "../../../shared/io/Comm/Comm.h"
|
---|
15 |
|
---|
16 | void GetOwnershipBoundariesFromRange(int* plower_row,int* pupper_row,int range,COMM comm){
|
---|
17 |
|
---|
18 | /*externals :*/
|
---|
19 | int my_rank;
|
---|
20 | int num_procs;
|
---|
21 |
|
---|
22 | /*recover my_rank and num_procs:*/
|
---|
23 | MPI_Comm_size(comm,&num_procs);
|
---|
24 | MPI_Comm_rank(comm,&my_rank);
|
---|
25 |
|
---|
26 | /*output: */
|
---|
27 | int lower_row,upper_row;
|
---|
28 |
|
---|
29 | /*Gather all range values into allranges, for all nodes*/
|
---|
30 | int* allranges=xNew<int>(num_procs);
|
---|
31 | MPI_Allgather(&range,1,MPI_INT,allranges,1,MPI_INT,comm);
|
---|
32 |
|
---|
33 | /*From all ranges, get lower row and upper row*/
|
---|
34 | lower_row=0;
|
---|
35 | upper_row=lower_row+allranges[0];
|
---|
36 | for(int i=1;i<=my_rank;i++){
|
---|
37 | lower_row=lower_row+allranges[i-1];
|
---|
38 | upper_row=upper_row+allranges[i];
|
---|
39 | }
|
---|
40 |
|
---|
41 | /*Assign output*/
|
---|
42 | *plower_row=lower_row;
|
---|
43 | *pupper_row=upper_row;
|
---|
44 | xDelete<int>(allranges);
|
---|
45 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.