Skip to content

Commit 4e8af7b

Browse files
committed
print warning if Lanczos did not converge
1 parent fabcd44 commit 4e8af7b

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

src/genmap-impl.h

+2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ void metric_finalize();
8080
void metric_acc(metric m,double count);
8181
void metric_tic(struct comm *c,metric m);
8282
void metric_toc(struct comm *c,metric m);
83+
double metric_get_value(int level,metric m);
8384
void metric_push_level();
85+
uint metric_get_levels();
8486
void metric_print(struct comm *c);
8587

8688
struct GenmapHandle_private {

src/genmap-rsb.c

+13
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,19 @@ void GenmapRSB(GenmapHandle h,int verbose){
7777
metric_push_level();
7878
}
7979

80+
sint converged=1,buf;
81+
for(i=0; i<metric_get_levels(); i++){
82+
int val=(int)metric_get_value(i,NFIEDLER);
83+
if(val>=npass*maxIter){
84+
converged=0;
85+
break;
86+
}
87+
}
88+
comm_allreduce(&global_c->gsc,gs_int,gs_min,&converged,1,&buf);// min
89+
if(converged==0 && GenmapCommRank(global_c)==0){
90+
printf("WARNING: Lanczos failed to converge during partitioning!");
91+
}
92+
8093
//metric_print(&global_c->gsc);
8194
metric_finalize();
8295

src/genmap-statistics.c

+8
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ void metric_toc(struct comm *c,metric m){
3737
comm_barrier(c);
3838
}
3939

40+
double metric_get_value(int level,metric m){
41+
return stack[level*MAXMETS+m];
42+
}
43+
4044
void metric_push_level(){
4145
assert(stack_size<=stack_max && "stack_size > stack_max");
4246

@@ -52,6 +56,10 @@ void metric_push_level(){
5256
stack_size++;
5357
}
5458

59+
uint metric_get_levels(){
60+
return stack_size;
61+
}
62+
5563
void metric_print(struct comm *c){
5664
double min[MAXSIZE],max[MAXSIZE],sum[MAXSIZE],buf[MAXSIZE];
5765
uint max_size=stack_size*MAXMETS;

0 commit comments

Comments
 (0)