From c85b513fcee3891a2c421925eb46179f44b55577 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Sun, 24 Nov 2013 10:51:37 +0000 Subject: [PATCH] Problem with locking fixed. New problem arises with Vertex not in cell or segfault --- src/vertex.c | 8 ++++---- src/taint_test.c | 2 +- src/tape | 6 +++--- src/general.h | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/general.h b/src/general.h index b4ce974..98303ac 100644 --- a/src/general.h +++ b/src/general.h @@ -154,7 +154,7 @@ ts_double projArea; ts_double relR; ts_double solAngle; - ts_int locked; + ts_uint *locked; }; typedef struct ts_vertex ts_vertex; diff --git a/src/taint_test.c b/src/taint_test.c index 07b53c1..e501592 100644 --- a/src/taint_test.c +++ b/src/taint_test.c @@ -25,7 +25,7 @@ for(i=0;i<vesicle->vlist->n;i++){ vertex_taint(vesicle->vlist->vtx[i],1); vertex_untaint(vesicle->vlist->vtx[i],1); - printf("%d taint amount %d\n",i,vesicle->vlist->vtx[i]->locked); + printf("%d taint amount %u\n",i,*(vesicle->vlist->vtx[i]->locked)); if(vertex_tainted(vesicle->vlist->vtx[i], 0, 1)) printf("Ooops, Main %d is tainted!\n",i); for(j=0;j<vesicle->vlist->vtx[i]->neigh_no;j++){ if(vertex_tainted(vesicle->vlist->vtx[i]->neigh[j], 0, 1)){ diff --git a/src/tape b/src/tape index b23adac..73727fa 100644 --- a/src/tape +++ b/src/tape @@ -28,10 +28,10 @@ quiet=false #what type of multiprocessing? (*none, smp, cluster, distributed, cuda, auto) -#currently only none makes sense. +#currently only none and smp makes sense. If set to none, smp_cores defaults to 1 multiprocessing=smp -#how many cores are allowed to process in SMP? -smp_cores=4 +#how many cores are allowed to process in SMP? If smp_cores=0, then number of threads will corespond with number of harware processor cores. +smp_cores=6 #how many nodes in cluster? cluster_nodes=50 #max number of processes in distributed (voluntary) environment diff --git a/src/vertex.c b/src/vertex.c index cd29e13..30b294f 100644 --- a/src/vertex.c +++ b/src/vertex.c @@ -23,7 +23,7 @@ for(i=0;i<N;i++) { vlist->vtx[i]=(ts_vertex *)calloc(1,sizeof(ts_vertex)); vlist->vtx[i]->idx=i; - + vlist->vtx[i]->locked=(ts_uint *)calloc(1,sizeof(ts_vertex)); /* initialize Ylm for spherical hamonics DONE in sh.c */ /* for(i=0;i<l;i++){ vlist->vtx[i]->Ylm[i]=(ts_double **)calloc(2*i+1,sizeof(ts_double *)); @@ -316,7 +316,7 @@ ts_bool vertex_taint(ts_vertex *vtx, ts_uint level){ ts_uint i; - vtx->locked++; //lock current vertex + (*(vtx->locked))++; //lock current vertex if(level==0){ //if we reach last in recursion exit return TS_SUCCESS; } @@ -327,7 +327,7 @@ } ts_bool vertex_untaint(ts_vertex *vtx, ts_uint level){ - vtx->locked--; + (*(vtx->locked))--; if(level==0){ return TS_SUCCESS; } @@ -339,7 +339,7 @@ } inline ts_bool vertex_tainted(ts_vertex *vtx, ts_uint level, ts_uint amount){ - if(vtx->locked>amount) return 1; + if(*(vtx->locked)>amount) return 1; if(level==0){ return 0; } -- Gitblit v1.9.3