# HG changeset patch # User hausers # Date 1322668585 -3600 # Node ID 8194b72c6c30fb2f29a75ac90de1be1b10c3cf0e initial import diff -r 000000000000 -r 8194b72c6c30 src/Application/SSR_Sieve/Divide_Pr.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/Application/SSR_Sieve/Divide_Pr.c Wed Nov 30 16:56:25 2011 +0100 @@ -0,0 +1,94 @@ +#include "SSR_Sieve.h" + + +#define BLOCK_LOW(id,p,n) ((id)*(n)/(p)) +//#define BLOCK_HIGH(id,p,n) (BLOCK_LOW(id+1,p,n)-1) +#define BLOCK_SIZE(id,p,n) (BLOCK_LOW(id+1,p,n)-BLOCK_LOW(id,p,n)) +//#define BLOCK_OWNER(index,p,n) ((((p)*(index)+1)-1)/(n)) +// + +int findNextK(char *primeNumbers,int k) { + int i= k+1; + while (primeNumbers[i] == 1) i++; + return i; +} + +void divideIntoSubArrays (void *_sieveParams, VirtProcr *animPr) { + SieveParams *sieveParams; + char *primeNumbers; + SubSequence *subSequence[NUM_CORES]; +// struct SubSequence *subSequence[NUM_CORES]; + VirtProcr *intervalProcr[NUM_CORES]; + void *msg[NUM_CORES]; + int p; // number of threads + int i; + int n; + int k; + int maxNum; + int offset; + int blockLow,blockHigh,blockSize; + + p= NUM_CORES; + + sieveParams= (SieveParams *)_sieveParams; + + maxNum= sieveParams->maxNum; + primeNumbers= sieveParams->primeNumbers; + + // create data_structures for each virtual processor + for (i= 0; i
primeNumbers= &primeNumbers[blockLow]; + subSequence[i]->offset= blockLow; + subSequence[i]->cV= k; + subSequence[i]->size= blockSize; + subSequence[i]->mainPr= animPr; + intervalProcr[i]= SSR__create_procr_with(&intervalPr,subSequence[i],animPr); + } + // synchronization point + for (i= 0; i
primeNumbers= primeNumbers;
+ sieveParams->maxNum= n;
+
+ SSR__create_seed_procr_and_do_work(÷IntoSubArrays,sieveParams);
+
+ return primeNumbers;
+}
+
diff -r 000000000000 -r 8194b72c6c30 src/Application/SSR_Sieve/IntervalPr.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Application/SSR_Sieve/IntervalPr.c Wed Nov 30 16:56:25 2011 +0100
@@ -0,0 +1,24 @@
+#include "SSR_Sieve.h"
+
+void intervalPr (void *_intervalParams, VirtProcr *animPr) {
+ SubSequence *intervalSequence;
+ VirtProcr *mainPr;
+ char* primeNumbers;
+ int offset;
+ int size;
+ int cV;
+
+ intervalSequence= (SubSequence *)_intervalParams;
+ primeNumbers= intervalSequence->primeNumbers;
+ offset= intervalSequence->offset;
+ size= intervalSequence->size;
+ cV= intervalSequence->cV;
+ mainPr= intervalSequence->mainPr;
+
+ sieve(primeNumbers,size,offset,cV);
+
+ SSR__send_from_to(NULL,animPr,mainPr);
+
+ SSR__dissipate_procr(animPr);
+}
+
diff -r 000000000000 -r 8194b72c6c30 src/Application/SSR_Sieve/SSR_Sieve.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Application/SSR_Sieve/SSR_Sieve.h Wed Nov 30 16:56:25 2011 +0100
@@ -0,0 +1,40 @@
+#ifndef SSR_SIEVE_H
+#define SSR_SIEVE_H
+#endif
+
+#include
+#include