Changeset 13602
- Timestamp:
- 10/10/12 23:00:39 (12 years ago)
- Location:
- issm/trunk-jpl/src/c/toolkits
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/toolkits/mpi/patches/DetermineLocalSize.cpp
r13558 r13602 6 6 #include <math.h> 7 7 #include "../../../shared/shared.h" 8 #include "../../../include/types.h" 8 9 9 int DetermineLocalSize(int global_size ){10 int DetermineLocalSize(int global_size,COMM comm){ 10 11 11 12 /*output: */ … … 18 19 19 20 /*from MPI: */ 20 extern int num_procs; 21 extern int my_rank; 21 int num_procs2; 22 int my_rank2; 23 24 /*recover my_rank2*/ 25 MPI_Comm_rank(comm,&my_rank2); 26 MPI_Comm_size(comm,&num_procs2); 27 22 28 23 29 /*We are not bound by any library, just use what seems most logical*/ 24 num_local_rows=xNew<int>(num_procs );30 num_local_rows=xNew<int>(num_procs2); 25 31 26 for (i=0;i<num_procs ;i++){32 for (i=0;i<num_procs2;i++){ 27 33 /*Here, we use floor. We under distribute rows. The rows 28 34 left are then redistributed, therefore resulting in a 29 35 more even distribution.*/ 30 num_local_rows[i]=(int)floor((double)global_size/(double)num_procs );36 num_local_rows[i]=(int)floor((double)global_size/(double)num_procs2); 31 37 } 32 38 33 39 /*There may be some rows left. Distribute evenly.*/ 34 row_rest=global_size - num_procs *(int)floor((double)global_size/(double)num_procs);40 row_rest=global_size - num_procs2*(int)floor((double)global_size/(double)num_procs2); 35 41 for (i=0;i<row_rest;i++){ 36 42 num_local_rows[i]++; 37 43 } 38 local_size=num_local_rows[my_rank ];44 local_size=num_local_rows[my_rank2]; 39 45 40 46 /*free ressources: */ -
issm/trunk-jpl/src/c/toolkits/mpi/patches/mpipatches.h
r13559 r13602 6 6 #ifndef MPI_PATCHES_H_ 7 7 #define MPI_PATCHES_H_ 8 int DetermineLocalSize(int global_size); 8 9 #include "../../../include/types.h" 10 11 int DetermineLocalSize(int global_size,COMM comm); 12 9 13 #endif -
issm/trunk-jpl/src/c/toolkits/petsc/patches/NewMat.cpp
r13596 r13602 32 32 33 33 /*Determine local sizes: */ 34 m=DetermineLocalSize(M );35 n=DetermineLocalSize(N );34 m=DetermineLocalSize(M,comm); 35 n=DetermineLocalSize(N,comm); 36 36 37 37 nnz=(int)((double)M*(double)N*sparsity); //number of non zeros. … … 60 60 61 61 /*Determine local sizes: */ 62 m=DetermineLocalSize(M );63 n=DetermineLocalSize(N );62 m=DetermineLocalSize(M,comm); 63 n=DetermineLocalSize(N,comm); 64 64 65 65 nnz=(int)((double)M*(double)N*sparsity); //number of non zeros. … … 99 99 100 100 /*Determine local sizes: */ 101 m=DetermineLocalSize(M );102 n=DetermineLocalSize(N );101 m=DetermineLocalSize(M,comm); 102 n=DetermineLocalSize(N,comm); 103 103 104 104 /*Figure out number of non zeros per row: */ -
issm/trunk-jpl/src/c/toolkits/petsc/patches/NewVec.cpp
r13599 r13602 30 30 } 31 31 else{ 32 local_size=DetermineLocalSize(size );32 local_size=DetermineLocalSize(size,comm); 33 33 } 34 34
Note:
See TracChangeset
for help on using the changeset viewer.