From 2ccb276a15564b09dcb6fd8d07e39201a08569fe Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Thu, 2 Feb 2023 11:31:07 +0530 Subject: [PATCH 01/38] added forall check --- Changes_list.txt | 48 +--- graphcode/generated_cuda/PageRank_DSL_V2.cu | 67 +++--- graphcode/generated_cuda/PageRank_DSL_V2.h | 5 +- graphcode/generated_cuda/bc_dsl_v3.cu | 22 +- graphcode/generated_cuda/bc_dsl_v3.h | 12 +- graphcode/generated_cuda/sssp_dslV2.h | 2 +- graphcode/generated_cuda/temp_algo.cu | 113 +++++++++ graphcode/generated_cuda/temp_algo.h | 31 +++ .../generated_cuda/triangle_counting_dsl.cu | 97 ++++++++ .../generated_cuda/triangle_counting_dsl.h | 42 ++++ graphcode/generated_mpi/PageRank_DSL_V2.cc | 215 ++++++++++++++++++ graphcode/generated_mpi/PageRank_DSL_V2.h | 24 ++ graphcode/generated_omp/temp_algo.cc | 4 +- graphcode/manual_omp/triangle_counting_dsl.cc | 13 +- graphcode/temp_algo | 5 + src/parser/lrparser.y | 2 +- src/parser/y.tab.c | 2 +- src/symbolutil/SymbolTableBuilder.cpp | 1 + 18 files changed, 605 insertions(+), 100 deletions(-) create mode 100644 graphcode/generated_cuda/temp_algo.cu create mode 100644 graphcode/generated_cuda/temp_algo.h create mode 100644 graphcode/generated_cuda/triangle_counting_dsl.cu create mode 100644 graphcode/generated_cuda/triangle_counting_dsl.h create mode 100644 graphcode/generated_mpi/PageRank_DSL_V2.cc create mode 100644 graphcode/generated_mpi/PageRank_DSL_V2.h diff --git a/Changes_list.txt b/Changes_list.txt index 0829dc1b..3175e2b7 100644 --- a/Changes_list.txt +++ b/Changes_list.txt @@ -1,46 +1,4 @@ -lexer.l : return, Incremental, Decremental, Static, updates. -Lrparser.y: 1. function nonterminal rules updated. - 2. IfStmt nonterminal rules updated. - 3. rightList nonterminal rules updated. - 4. forall nonterminal rules updated. - 5. ‘updates’ new datatype added. - 6. staticGen/dynamicGen commandline option added. -ASTHelper.cpp: 1. Functype count updation. - 2. func variant node creation. - 3. return statement node creation. -ASTNodeTypes.hpp: 1. New field added to Identifier class. - 2. function class is updated. ( field to decide on lock initialization in initial parts - of the function). - 3. return statement’s class definition is added. - -MainContext.cpp/MainContext.hpp: 1. currentFunc’s info addition is achieved through fields and methods. - -SymbolTableBuilder.cpp: 1. InitialLockDecl for omp. - 2. push itrBFS to parallelConstruct as well. - -SymbolTableBuilder.h: 1. Addition currentFunc field. - 2. change of ‘parallelConstruct’ stack to a vector datastructure. - -dsl_cpp_generator.cpp: 1. Added various function_counts’ field. - 2. info regarding the current function type. - 3. generateWhileStmt logic added. - 4. return statement generation logic added. - 5. generateReductionCallStmt logic modified. - 6. generatePropertyDefination graphid extraction logic slightly modified. - - -MakeFile: 1. Compilation commands changed. - -Generation places where graphId vector’s content was used: - -1. ‘generateAssignment’ call. -2. ‘generatePropertyDefination’ call. -3. ‘generatefixedpt_filter’ call. -4. - - - - - - +lrparser.y : LINE 574 uncomment the line to activate the -o (optimize) option +For fixing the segmentation fault in PageRank_DSL_V2 :- +SymbolTableBuilder.cpp : LINE 375 added a check to see if the forall statement is a for loop or a forall loop \ No newline at end of file diff --git a/graphcode/generated_cuda/PageRank_DSL_V2.cu b/graphcode/generated_cuda/PageRank_DSL_V2.cu index d6a17120..5902a01e 100644 --- a/graphcode/generated_cuda/PageRank_DSL_V2.cu +++ b/graphcode/generated_cuda/PageRank_DSL_V2.cu @@ -28,22 +28,19 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, for(int i=0; i<= V; i++) { int temp = g.indexofNodes[i]; h_meta[i] = temp; + temp = g.rev_indexofNodes[i]; + h_rev_meta[i] = temp; } for(int i=0; i< E; i++) { int temp = g.edgeList[i]; h_data[i] = temp; - temp = srcList[i]; + temp = g.srcList[i]; h_src[i] = temp; temp = edgeLen[i]; h_weight[i] = temp; } - for(int i=0; i<= V; i++) { - int temp = g.rev_indexofNodes[i]; - h_rev_meta[i] = temp; - } - int* d_meta; int* d_data; @@ -68,7 +65,7 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, // CSR END //LAUNCH CONFIG const unsigned threadsPerBlock = 512; - unsigned numThreads = (V < threadsPerBlock)? V: 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; @@ -86,41 +83,51 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, //BEGIN DSL PARSING - float num_nodes = (float)g.num_nodes( ); // asst in .cu - float* d_pageRank_nxt; cudaMalloc(&d_pageRank_nxt, sizeof(float)*(V)); + float num_nodes = (float)g.num_nodes( ); // asst in .cu + initKernel <<>>(V,d_pageRank,(float)1 / num_nodes); int iterCount = 0; // asst in .cu float diff; // asst in .cu - do - {diff = 0.000000; - cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); - cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); - cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); - Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_pageRank,d_pageRank_nxt); - cudaDeviceSynchronize(); - cudaMemcpyFromSymbol(&diff, ::diff, sizeof(float), 0, cudaMemcpyDeviceToHost); - cudaMemcpyFromSymbol(&delta, ::delta, sizeof(float), 0, cudaMemcpyDeviceToHost); - cudaMemcpyFromSymbol(&num_nodes, ::num_nodes, sizeof(float), 0, cudaMemcpyDeviceToHost); + bool tempVar_ Å(?V = false; // asst in .cu + + do{ + if (tempVar_ Å(?V){ // if filter begin + + } // if filter end + tempVar_ Å(?V = true; + diff = 0.000000; + cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); + Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_pageRank,d_pageRank_nxt); + cudaDeviceSynchronize(); + + + + ; // asst in .cu + ; // asst in .cu + cudaMemcpy(d_pageRank, d_pageRank_nxt, sizeof(float)*V, cudaMemcpyDeviceToDevice); + iterCount++; + cudaMemcpyFromSymbol(&diff, ::diff, sizeof(float), 0, cudaMemcpyDeviceToHost); - ; // asst in .cu + }while((diff > beta) && (iterCount < maxIter)); - ; // asst in .cu + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_pageRank_nxt); - cudaMemcpy(d_pageRank, d_pageRank_nxt, sizeof(float)*V, cudaMemcpyDeviceToDevice); - iterCount++; - }while((diff > beta) && (iterCount < maxIter));//TIMER STOP - cudaEventRecord(stop,0); - cudaEventSynchronize(stop); - cudaEventElapsedTime(&milliseconds, start, stop); - printf("GPU Time: %.6f ms\n", milliseconds); + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); - cudaMemcpy(pageRank, d_pageRank, sizeof(float)*(V), cudaMemcpyDeviceToHost); -} //end FUN + cudaMemcpy(pageRank, d_pageRank, sizeof(float)*(V), cudaMemcpyDeviceToHost); + } //end FUN diff --git a/graphcode/generated_cuda/PageRank_DSL_V2.h b/graphcode/generated_cuda/PageRank_DSL_V2.h index 7b840daa..0373ffff 100644 --- a/graphcode/generated_cuda/PageRank_DSL_V2.h +++ b/graphcode/generated_cuda/PageRank_DSL_V2.h @@ -19,10 +19,12 @@ __device__ int maxIter ; __device__ float num_nodes ; // DEVICE ASSTMENT in .h -__device__ int iterCount ; // DEVICE ASSTMENT in .h +; // DEVICE ASSTMENT in .h __device__ float diff ; // DEVICE ASSTMENT in .h +; // DEVICE ASSTMENT in .h + __global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,float* d_pageRank,float* d_pageRank_nxt){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; @@ -32,6 +34,7 @@ __global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d for (int edge = d_rev_meta[v]; edge < d_rev_meta[v+1]; edge++) {int nbr = d_src[edge] ; sum = sum + d_pageRank[nbr] / (d_meta[nbr+1]-d_meta[nbr]); + } // end FOR NBR ITR. TMP FIX! float val = (1 - delta) / num_nodes + delta * sum; // DEVICE ASSTMENT in .h diff --git a/graphcode/generated_cuda/bc_dsl_v3.cu b/graphcode/generated_cuda/bc_dsl_v3.cu index 36096923..7db85408 100644 --- a/graphcode/generated_cuda/bc_dsl_v3.cu +++ b/graphcode/generated_cuda/bc_dsl_v3.cu @@ -27,22 +27,19 @@ void Compute_BC(graph& g,double* BC,std::set& sourceSet) for(int i=0; i<= V; i++) { int temp = g.indexofNodes[i]; h_meta[i] = temp; + temp = g.rev_indexofNodes[i]; + h_rev_meta[i] = temp; } for(int i=0; i< E; i++) { int temp = g.edgeList[i]; h_data[i] = temp; - temp = srcList[i]; + temp = g.srcList[i]; h_src[i] = temp; temp = edgeLen[i]; h_weight[i] = temp; } - for(int i=0; i<= V; i++) { - int temp = g.rev_indexofNodes[i]; - h_rev_meta[i] = temp; - } - int* d_meta; int* d_data; @@ -67,7 +64,7 @@ void Compute_BC(graph& g,double* BC,std::set& sourceSet) // CSR END //LAUNCH CONFIG const unsigned threadsPerBlock = 512; - unsigned numThreads = (V < threadsPerBlock)? V: 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; @@ -121,7 +118,7 @@ void Compute_BC(graph& g,double* BC,std::set& sourceSet) cudaMemcpy(d_finished, &finished, sizeof(bool)*(1), cudaMemcpyHostToDevice); //Kernel LAUNCH - fwd_pass<<>>(V, d_meta, d_data,d_weight, d_delta, d_sigma, d_level, d_hops_from_source, d_finished, d_BC); ///TODO from varList + fwd_pass<<>>(V, d_meta, d_data,d_weight, d_delta, d_sigma, d_level, d_hops_from_source, d_finished,d_BC); ///DONE from varList incrementDeviceVar<<<1,1>>>(d_hops_from_source); cudaDeviceSynchronize(); //MUST - rupesh @@ -138,13 +135,20 @@ void Compute_BC(graph& g,double* BC,std::set& sourceSet) while(hops_from_source > 1) { //KERNEL Launch - back_pass<<>>(V, d_meta, d_data, d_weight, d_delta, d_sigma, d_level, d_hops_from_source, d_finished, d_BC); ///TODO from varList + back_pass<<>>(V, d_meta, d_data, d_weight, d_delta, d_sigma, d_level, d_hops_from_source, d_finished + ,d_BC); ///DONE from varList hops_from_source--; cudaMemcpy(d_hops_from_source, &hops_from_source, sizeof(int)*(1), cudaMemcpyHostToDevice); } //accumulate_bc<<>>(V,d_delta, d_BC, d_level, src); + } + + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_delta); + cudaFree(d_sigma); + //TIMER STOP cudaEventRecord(stop,0); cudaEventSynchronize(stop); diff --git a/graphcode/generated_cuda/bc_dsl_v3.h b/graphcode/generated_cuda/bc_dsl_v3.h index 7e236d27..77d32c24 100644 --- a/graphcode/generated_cuda/bc_dsl_v3.h +++ b/graphcode/generated_cuda/bc_dsl_v3.h @@ -13,7 +13,7 @@ void Compute_BC(graph& g,double* BC,std::set& sourceSet); -__global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished, float* d_BC) { +__global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished,double* d_BC) { unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= n) return; if(d_level[v] == *d_hops_from_source) { @@ -24,12 +24,14 @@ __global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_ *d_finished = false; } if(d_level[w] == *d_hops_from_source + 1) { - atomicAdd(&d_sigma[w], d_sigma[v]); + d_sigma[w] = d_sigma[w] + d_sigma[v]; + } } } // end if d lvl } // kernel end -__global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished, float* d_BC) { + +__global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished,double* d_BC) { unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= n) return; auto grid = cooperative_groups::this_grid(); @@ -38,11 +40,13 @@ __global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d int w = d_data[edge]; if(d_level[w] == *d_hops_from_source) { d_delta[v] = d_delta[v] + (d_sigma[v] / d_sigma[w]) * (1 + d_delta[w]); + } // end IF } // end FOR grid.sync(); // Device-level syncs across all grids. Ref:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#grid-synchronization-cg - d_BC[v] = d_BC[v] + d_delta[v]/2.0; + d_BC[v] = d_BC[v] + d_delta[v]; } // end if d lvl } // kernel end + #endif diff --git a/graphcode/generated_cuda/sssp_dslV2.h b/graphcode/generated_cuda/sssp_dslV2.h index 606b1c50..d4c9173e 100644 --- a/graphcode/generated_cuda/sssp_dslV2.h +++ b/graphcode/generated_cuda/sssp_dslV2.h @@ -14,7 +14,7 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src -__device__ bool finished ; // DEVICE ASSTMENT in .h +; // DEVICE ASSTMENT in .h __global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,bool* d_modified,int* d_weight,int* d_dist){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; diff --git a/graphcode/generated_cuda/temp_algo.cu b/graphcode/generated_cuda/temp_algo.cu new file mode 100644 index 00000000..00e1f936 --- /dev/null +++ b/graphcode/generated_cuda/temp_algo.cu @@ -0,0 +1,113 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#include "temp_algo.h" + +void count_nodes(graph& g) + +{ + // CSR BEGIN + int V = g.num_nodes(); + int E = g.num_edges(); + + printf("#nodes:%d\n",V); + printf("#edges:%d\n",E); + int* edgeLen = g.getEdgeLen(); + + int *h_meta; + int *h_data; + int *h_src; + int *h_weight; + int *h_rev_meta; + + h_meta = (int *)malloc( (V+1)*sizeof(int)); + h_data = (int *)malloc( (E)*sizeof(int)); + h_src = (int *)malloc( (E)*sizeof(int)); + h_weight = (int *)malloc( (E)*sizeof(int)); + h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); + + for(int i=0; i<= V; i++) { + int temp = g.indexofNodes[i]; + h_meta[i] = temp; + temp = g.rev_indexofNodes[i]; + h_rev_meta[i] = temp; + } + + for(int i=0; i< E; i++) { + int temp = g.edgeList[i]; + h_data[i] = temp; + temp = g.srcList[i]; + h_src[i] = temp; + temp = edgeLen[i]; + h_weight[i] = temp; + } + + + int* d_meta; + int* d_data; + int* d_src; + int* d_weight; + int* d_rev_meta; + bool* d_modified_next; + + cudaMalloc(&d_meta, sizeof(int)*(1+V)); + cudaMalloc(&d_data, sizeof(int)*(E)); + cudaMalloc(&d_src, sizeof(int)*(E)); + cudaMalloc(&d_weight, sizeof(int)*(E)); + cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); + cudaMalloc(&d_modified_next, sizeof(bool)*(V)); + + cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); + cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); + + // CSR END + //LAUNCH CONFIG + const unsigned threadsPerBlock = 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; + unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; + + + // TIMER START + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + float milliseconds = 0; + cudaEventRecord(start,0); + + + //DECLAR DEVICE AND HOST vars in params + + //BEGIN DSL PARSING + int* d_prop; + cudaMalloc(&d_prop, sizeof(int)*(V)); + + int x; // asst in .cu + + int y; // asst in .cu + + int z; // asst in .cu + + int w = 0; // asst in .cu + + y = x + 10; + z = x; + initKernel <<>>(V,d_prop,(int)(x || z)); + + cudaMemcpyToSymbol(::y, &y, sizeof(int), 0, cudaMemcpyHostToDevice); + count_nodes_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_prop); + cudaDeviceSynchronize(); + + + + + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_prop); + + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); + +} //end FUN diff --git a/graphcode/generated_cuda/temp_algo.h b/graphcode/generated_cuda/temp_algo.h new file mode 100644 index 00000000..b59fa17b --- /dev/null +++ b/graphcode/generated_cuda/temp_algo.h @@ -0,0 +1,31 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#ifndef GENCPP_TEMP_ALGO_H +#define GENCPP_TEMP_ALGO_H +#include +#include +#include +#include +#include "../graph.hpp" +#include "../libcuda.cuh" +#include + +void count_nodes(graph& g); + + + +; // DEVICE ASSTMENT in .h + +__device__ int y ; // DEVICE ASSTMENT in .h + +; // DEVICE ASSTMENT in .h + +; // DEVICE ASSTMENT in .h + +__global__ void count_nodes_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,int* d_prop){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + initIndex<<<1,1>>>(V,d_prop,v,(int)y); //InitIndexDevice +} // end KER FUNC + +#endif diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu new file mode 100644 index 00000000..819d8c1e --- /dev/null +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -0,0 +1,97 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#include "triangle_counting_dsl.h" + +void Compute_TC(graph& g) + +{ + // CSR BEGIN + int V = g.num_nodes(); + int E = g.num_edges(); + + printf("#nodes:%d\n",V); + printf("#edges:%d\n",E); + int* edgeLen = g.getEdgeLen(); + + int *h_meta; + int *h_data; + int *h_src; + int *h_weight; + int *h_rev_meta; + + h_meta = (int *)malloc( (V+1)*sizeof(int)); + h_data = (int *)malloc( (E)*sizeof(int)); + h_src = (int *)malloc( (E)*sizeof(int)); + h_weight = (int *)malloc( (E)*sizeof(int)); + h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); + + for(int i=0; i<= V; i++) { + int temp = g.indexofNodes[i]; + h_meta[i] = temp; + temp = g.rev_indexofNodes[i]; + h_rev_meta[i] = temp; + } + + for(int i=0; i< E; i++) { + int temp = g.edgeList[i]; + h_data[i] = temp; + temp = g.srcList[i]; + h_src[i] = temp; + temp = edgeLen[i]; + h_weight[i] = temp; + } + + + int* d_meta; + int* d_data; + int* d_src; + int* d_weight; + int* d_rev_meta; + bool* d_modified_next; + + cudaMalloc(&d_meta, sizeof(int)*(1+V)); + cudaMalloc(&d_data, sizeof(int)*(E)); + cudaMalloc(&d_src, sizeof(int)*(E)); + cudaMalloc(&d_weight, sizeof(int)*(E)); + cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); + cudaMalloc(&d_modified_next, sizeof(bool)*(V)); + + cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); + cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); + + // CSR END + //LAUNCH CONFIG + const unsigned threadsPerBlock = 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; + unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; + + + // TIMER START + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + float milliseconds = 0; + cudaEventRecord(start,0); + + + //DECLAR DEVICE AND HOST vars in params + + //BEGIN DSL PARSING + int triangle_count = 0; // asst in .cu + + cudaMemcpyToSymbol(::triangle_count, &triangle_count, sizeof(int), 0, cudaMemcpyHostToDevice); + Compute_TC_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next); + cudaDeviceSynchronize(); + + + + + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); + +} //end FUN diff --git a/graphcode/generated_cuda/triangle_counting_dsl.h b/graphcode/generated_cuda/triangle_counting_dsl.h new file mode 100644 index 00000000..5bd3af60 --- /dev/null +++ b/graphcode/generated_cuda/triangle_counting_dsl.h @@ -0,0 +1,42 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#ifndef GENCPP_TRIANGLE_COUNTING_DSL_H +#define GENCPP_TRIANGLE_COUNTING_DSL_H +#include +#include +#include +#include +#include "../graph.hpp" +#include "../libcuda.cuh" +#include + +void Compute_TC(graph& g); + + + +__device__ int triangle_count ; // DEVICE ASSTMENT in .h + +__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + for (int edge = d_meta[v]; edge < d_meta[v+1]; edge++) { // FOR NBR ITR + int u = d_data[edge]; + if (u < v){ // if filter begin + for (int edge = d_meta[v]; edge < d_meta[v+1]; edge++) { // FOR NBR ITR + int w = d_data[edge]; + if (w > v){ // if filter begin + if (findNeighborSorted(u, w, d_meta, d_data)){ // if filter begin + atomicAdd(& triangle_count, (int)1); + + } // if filter end + + } // if filter end + + } // end FOR NBR ITR. TMP FIX! + + } // if filter end + + } // end FOR NBR ITR. TMP FIX! +} // end KER FUNC + +#endif diff --git a/graphcode/generated_mpi/PageRank_DSL_V2.cc b/graphcode/generated_mpi/PageRank_DSL_V2.cc new file mode 100644 index 00000000..4363f99d --- /dev/null +++ b/graphcode/generated_mpi/PageRank_DSL_V2.cc @@ -0,0 +1,215 @@ +#include"PageRank_DSL_V2.h" + +void Compute_PR(graph g,float beta,float delta,int maxIter, + float* pageRank) +{ + int my_rank,np,part_size,startv,endv; + struct timeval start, end, start1, end1; + long seconds,micros; + mpi::communicator world; + my_rank = world.rank(); + np = world.size(); + int *index,*rev_index, *all_weight,*edgeList, *srcList; + int *local_index,*local_rev_index, *weight,*local_edgeList, *local_srcList; + int _num_nodes, _actual_num_nodes; + int dest_pro; + if(my_rank == 0) + { + gettimeofday(&start, NULL); + g.parseGraph(); + _num_nodes = g.num_nodes(); + _actual_num_nodes = g.ori_num_nodes(); + all_weight = g.getEdgeLen(); + edgeList = g.getEdgeList(); + srcList = g.getSrcList(); + index = g.getIndexofNodes(); + rev_index = g.getRevIndexofNodes(); + part_size = g.num_nodes()/np; + MPI_Bcast (&_num_nodes,1,MPI_INT,my_rank,MPI_COMM_WORLD); + MPI_Bcast (&_actual_num_nodes,1,MPI_INT,my_rank,MPI_COMM_WORLD); + MPI_Bcast (&part_size,1,MPI_INT,my_rank,MPI_COMM_WORLD); + local_index = new int[part_size+1]; + local_rev_index = new int[part_size+1]; + for(int i=0;i > send_data(np); + vector < vector > receive_data(np); + vector < vector > send_data_float(np); + vector < vector > receive_data_float(np); + vector < vector > send_data_double(np); + vector < vector > receive_data_double(np); + diff = 0.000000; + float* sum = new float[part_size]; + for(int i0=0;i0= startv && nbr <= endv) + { + sum[v-startv] = sum[v-startv] + pageRank[nbr-startv] / ; + } + } + for (int edge1 = local_index[v-startv]; edge1 < local_index[v-startv+1]; edge1++) + { + int nbr = local_edgeList[edge1]; + if(!(nbr >= startv && nbr <= endv)) + { + dest_pro = nbr / part_size; + send_data[dest_pro].push_back(v); + send_data[dest_pro].push_back(nbr); + send_data[dest_pro].push_back(local_index[v-startv]); + send_data[dest_pro].push_back(local_index[v-startv+1]); + send_data_float[dest_pro].push_back(pageRank[v-startv]); + } + } + } + all_to_all(world, send_data_float, receive_data_float); + all_to_all(world, send_data, receive_data); + for(int t=0;t= startv && v <= endv) + pageRank_nxt[v - startv] = val; + } + diff = all_reduce(world, diff, std::plus()); + pageRank = pageRank_nxt; +iterCount++; +send_data.clear(); +vector >().swap(send_data); +receive_data.clear(); +vector >().swap(receive_data); +send_data_float.clear(); +vector >().swap(send_data_float); +receive_data_float.clear(); +vector >().swap(receive_data_float); +send_data_double.clear(); +vector >().swap(send_data_double); +receive_data_double.clear(); +vector >().swap(receive_data_double); +} while ( diff > beta && iterCount < maxIter); + +gettimeofday(&end, NULL); +seconds = (end.tv_sec - start.tv_sec); +micros = ((seconds * 1000000) + end.tv_usec) - (start.tv_usec); +if(my_rank==0) +{ +printf("The iteration time = %ld micro secs.\n",micros); +printf("The iteration time = %ld secs.\n",seconds); +} +float* final_pageRank; +if (my_rank == 0) +{ +final_pageRank = new float [_num_nodes]; +gather(world, pageRank, part_size, final_pageRank, 0); +for (int t = 0; t < _actual_num_nodes; t++) + cout << "pageRank[" << t << "] = " << final_pageRank[t] << endl; +} +else +{ +gather(world, pageRank, part_size, final_pageRank, 0); +} +delete [] local_index; +delete [] local_rev_index; +delete [] weight; +delete [] local_edgeList; +delete [] local_srcList; +} \ No newline at end of file diff --git a/graphcode/generated_mpi/PageRank_DSL_V2.h b/graphcode/generated_mpi/PageRank_DSL_V2.h new file mode 100644 index 00000000..79ab81b9 --- /dev/null +++ b/graphcode/generated_mpi/PageRank_DSL_V2.h @@ -0,0 +1,24 @@ +#ifndef GENCPP_PAGERANK_DSL_V2_H +#define GENCPP_PAGERANK_DSL_V2_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "mpi_graph.hpp" + +using namespace std; +namespace mpi = boost::mpi; + +void Compute_PR(graph g,float beta,float delta,int maxIter, + float* pageRank); + +#endif diff --git a/graphcode/generated_omp/temp_algo.cc b/graphcode/generated_omp/temp_algo.cc index 005edd27..7b24fef7 100644 --- a/graphcode/generated_omp/temp_algo.cc +++ b/graphcode/generated_omp/temp_algo.cc @@ -2,10 +2,10 @@ void count_nodes(graph& g) { - int* prop=new int[g.num_nodes()]; int x = 0 ; int y = 0 ; int z = 0 ; + int* prop=new int[g.num_nodes()]; y = x + 10; z = x; #pragma omp parallel for @@ -14,4 +14,4 @@ void count_nodes(graph& g) prop[t] = (x || z); } -} \ No newline at end of file +} diff --git a/graphcode/manual_omp/triangle_counting_dsl.cc b/graphcode/manual_omp/triangle_counting_dsl.cc index 9d27a561..8e6d6376 100644 --- a/graphcode/manual_omp/triangle_counting_dsl.cc +++ b/graphcode/manual_omp/triangle_counting_dsl.cc @@ -39,16 +39,18 @@ void Compute_TC(graph& g) int main() { - graph G("../dataRecords/sample.txt"); + graph G("../sample_graphs/test_graph.txt"); G.parseGraph(); + float* node_pr = new float[G.num_nodes()]; + - /*double startTime = omp_get_wtime(); + // double startTime = omp_get_wtime(); Compute_TC(G); - double endTime = omp_get_wtime(); - printf("EXECUTION TIME %f \n", endTime - startTime);*/ + // double endTime = omp_get_wtime(); + // printf("EXECUTION TIME %f \n", endTime - startTime); - /* char *outputfilename = "outputN.txt"; + char *outputfilename = "outputN.txt"; FILE *outputfilepointer; outputfilepointer = fopen(outputfilename, "w"); @@ -57,6 +59,5 @@ int main() { fprintf(outputfilepointer, "%d %0.9lf\n", i, node_pr[i]); } -*/ } \ No newline at end of file diff --git a/graphcode/temp_algo b/graphcode/temp_algo index 44a7d8cd..06902b3c 100644 --- a/graphcode/temp_algo +++ b/graphcode/temp_algo @@ -3,10 +3,15 @@ function count_nodes(Graph g) int x; int y; int z; + int w = 0; propNode prop; y = x+10; z = x; g.attachNodeProperty(prop = (x || z)); + + forall(v in g.nodes()) { + v.prop = y; + } } \ No newline at end of file diff --git a/src/parser/lrparser.y b/src/parser/lrparser.y index 46aad001..902e7442 100644 --- a/src/parser/lrparser.y +++ b/src/parser/lrparser.y @@ -571,7 +571,7 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; - //cpp_backend.setOptimized(); + cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); } diff --git a/src/parser/y.tab.c b/src/parser/y.tab.c index 7fc9955f..03fe9a55 100644 --- a/src/parser/y.tab.c +++ b/src/parser/y.tab.c @@ -2996,7 +2996,7 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; - //cpp_backend.setOptimized(); + cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); } diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index f91c19f6..446c1154 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -372,6 +372,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) if((backend.compare("omp")==0 || backend.compare("cuda")==0 || backend.compare("openACC")==0 ) || (backend.compare("mpi")==0) &&forAll->isForall()) { + if(forAll->isForall()) parallelConstruct.pop_back(); } break; From 9e9c6480289e1b6327da74834318d545378fae43 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Thu, 9 Feb 2023 19:36:22 +0530 Subject: [PATCH 02/38] temp fix for fixedPoint --- Changes_list.txt | 3 +- graphcode/generated_cuda/PageRank_DSL_V2.cu | 52 ++--- graphcode/generated_cuda/PageRank_DSL_V2.h | 3 +- graphcode/generated_cuda/sssp_dslV2.cu | 2 + graphcode/generated_cuda/sssp_dslV2.h | 2 +- src/analyser/deviceVars/deviceVarsAnalyser.h | 4 +- src/analyser/deviceVars/getUsedVars.cpp | 14 ++ src/ast/ASTNodeTypes.hpp | 21 ++ .../backend_cuda/dsl_cpp_generator.cpp | 11 +- src/backends/backend_cuda/dsl_cpp_generator.h | 1 + .../backend_cuda/tempCodeRunnerFile.cpp | 1 - src/debug.txt | 218 ++++++++++++++++++ src/parser/lrparser.y | 2 +- src/parser/y.tab.c | 2 +- src/symbolutil/SymbolTableBuilder.cpp | 1 + 15 files changed, 302 insertions(+), 35 deletions(-) delete mode 100644 src/backends/backend_cuda/tempCodeRunnerFile.cpp create mode 100644 src/debug.txt diff --git a/Changes_list.txt b/Changes_list.txt index 3175e2b7..07892e3f 100644 --- a/Changes_list.txt +++ b/Changes_list.txt @@ -1,4 +1,5 @@ lrparser.y : LINE 574 uncomment the line to activate the -o (optimize) option For fixing the segmentation fault in PageRank_DSL_V2 :- -SymbolTableBuilder.cpp : LINE 375 added a check to see if the forall statement is a for loop or a forall loop \ No newline at end of file +SymbolTableBuilder.cpp : LINE 375 added a check to see if the forall statement is a for loop or a forall loop +deviceVarsAnalyser.h : getTempVar() LINE 284 removed static cast and used strcpy since it previously generated random characters \ No newline at end of file diff --git a/graphcode/generated_cuda/PageRank_DSL_V2.cu b/graphcode/generated_cuda/PageRank_DSL_V2.cu index 5902a01e..13e5a59e 100644 --- a/graphcode/generated_cuda/PageRank_DSL_V2.cu +++ b/graphcode/generated_cuda/PageRank_DSL_V2.cu @@ -94,40 +94,40 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, float diff; // asst in .cu - bool tempVar_ Å(?V = false; // asst in .cu + bool tempVar_0 = false; // asst in .cu - do{ - if (tempVar_ Å(?V){ // if filter begin + do{ + if (tempVar_0){ // if filter begin - } // if filter end - tempVar_ Å(?V = true; - diff = 0.000000; - cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); - cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); - cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); - Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_pageRank,d_pageRank_nxt); - cudaDeviceSynchronize(); + } // if filter end + tempVar_0 = true; + diff = 0.000000; + cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); + Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_pageRank,d_pageRank_nxt); + cudaDeviceSynchronize(); - ; // asst in .cu + ; // asst in .cu - ; // asst in .cu + ; // asst in .cu - cudaMemcpy(d_pageRank, d_pageRank_nxt, sizeof(float)*V, cudaMemcpyDeviceToDevice); - iterCount++; - cudaMemcpyFromSymbol(&diff, ::diff, sizeof(float), 0, cudaMemcpyDeviceToHost); + cudaMemcpy(d_pageRank, d_pageRank_nxt, sizeof(float)*V, cudaMemcpyDeviceToDevice); + iterCount++; + cudaMemcpyFromSymbol(&diff, ::diff, sizeof(float), 0, cudaMemcpyDeviceToHost); - }while((diff > beta) && (iterCount < maxIter)); + }while((diff > beta) && (iterCount < maxIter)); - //cudaFree up!! all propVars in this BLOCK! - cudaFree(d_pageRank_nxt); + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_pageRank_nxt); - //TIMER STOP - cudaEventRecord(stop,0); - cudaEventSynchronize(stop); - cudaEventElapsedTime(&milliseconds, start, stop); - printf("GPU Time: %.6f ms\n", milliseconds); + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); - cudaMemcpy(pageRank, d_pageRank, sizeof(float)*(V), cudaMemcpyDeviceToHost); - } //end FUN + cudaMemcpy(pageRank, d_pageRank, sizeof(float)*(V), cudaMemcpyDeviceToHost); +} //end FUN diff --git a/graphcode/generated_cuda/PageRank_DSL_V2.h b/graphcode/generated_cuda/PageRank_DSL_V2.h index 0373ffff..36c2548e 100644 --- a/graphcode/generated_cuda/PageRank_DSL_V2.h +++ b/graphcode/generated_cuda/PageRank_DSL_V2.h @@ -32,7 +32,8 @@ __global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d float sum = 0.000000; // DEVICE ASSTMENT in .h for (int edge = d_rev_meta[v]; edge < d_rev_meta[v+1]; edge++) - {int nbr = d_src[edge] ; + { + int nbr = d_src[edge] ; sum = sum + d_pageRank[nbr] / (d_meta[nbr+1]-d_meta[nbr]); } // end FOR NBR ITR. TMP FIX! diff --git a/graphcode/generated_cuda/sssp_dslV2.cu b/graphcode/generated_cuda/sssp_dslV2.cu index 2110d6d4..b2857a24 100644 --- a/graphcode/generated_cuda/sssp_dslV2.cu +++ b/graphcode/generated_cuda/sssp_dslV2.cu @@ -105,11 +105,13 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src finished = true; cudaMemcpyToSymbol(::finished, &finished, sizeof(bool), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::finished, &finished, sizeof(bool), 0, cudaMemcpyHostToDevice); Compute_SSSP_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_modified,d_weight,d_dist); cudaDeviceSynchronize(); + cudaMemcpyFromSymbol(&finished, ::finished, sizeof(bool), 0, cudaMemcpyDeviceToHost); cudaMemcpyFromSymbol(&finished, ::finished, sizeof(bool), 0, cudaMemcpyDeviceToHost); cudaMemcpy(d_modified, d_modified_next, sizeof(bool)*V, cudaMemcpyDeviceToDevice); diff --git a/graphcode/generated_cuda/sssp_dslV2.h b/graphcode/generated_cuda/sssp_dslV2.h index d4c9173e..606b1c50 100644 --- a/graphcode/generated_cuda/sssp_dslV2.h +++ b/graphcode/generated_cuda/sssp_dslV2.h @@ -14,7 +14,7 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src -; // DEVICE ASSTMENT in .h +__device__ bool finished ; // DEVICE ASSTMENT in .h __global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,bool* d_modified,int* d_weight,int* d_dist){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; diff --git a/src/analyser/deviceVars/deviceVarsAnalyser.h b/src/analyser/deviceVars/deviceVarsAnalyser.h index eb0ae6da..d0601226 100644 --- a/src/analyser/deviceVars/deviceVarsAnalyser.h +++ b/src/analyser/deviceVars/deviceVarsAnalyser.h @@ -284,7 +284,9 @@ class deviceVarsAnalyser char* getTempVar() { string var = "tempVar_" + to_string(tempVar++); - return const_cast(var.c_str()); + char* temp = new char[var.length() + 1]; + strcpy(temp, var.c_str()); + return temp; } public: diff --git a/src/analyser/deviceVars/getUsedVars.cpp b/src/analyser/deviceVars/getUsedVars.cpp index 226bcd00..bac58732 100644 --- a/src/analyser/deviceVars/getUsedVars.cpp +++ b/src/analyser/deviceVars/getUsedVars.cpp @@ -36,6 +36,9 @@ usedVariables deviceVarsAnalyser::getVarsExpr(Expression *expr) { result = getVarsExpr(expr->getLeft()); result.merge(getVarsExpr(expr->getRight())); + } + else if(expr->isProcCallExpr()) { + } return result; } @@ -143,6 +146,8 @@ usedVariables deviceVarsAnalyser::getVarsForAll(forallStmt *stmt) if(arg->getExpr() != nullptr) currVars.merge(getVarsExpr(arg->getExpr())); } + stmt->isRevMetaUsed = true; + stmt->isSrcUsed = true; } else if(!stmt->isSourceField()) { @@ -227,16 +232,25 @@ usedVariables deviceVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) { for(ASTNode* node: stmt->getLeftList()) { + Identifier* affectedId = NULL; if(node->getTypeofNode() == NODE_ID) { Identifier* iden = (Identifier*)node; currVars.addVariable(iden, WRITE); + affectedId = iden; } else if(node->getTypeofNode() == NODE_PROPACCESS) { PropAccess* propId = (PropAccess*)node; currVars.addVariable(propId->getIdentifier1(), READ); currVars.addVariable(propId->getIdentifier2(), WRITE); + affectedId = propId->getIdentifier2(); + } + + if(affectedId->getSymbolInfo()->getId()->get_fp_association()) { + Identifier* fpId = affectedId->getSymbolInfo()->getId()->get_fpIdNode(); + cout << "fpId: " << fpId->getIdentifier() << endl; + currVars.addVariable(fpId, READ_WRITE); } } getVarsReductionCall(stmt->getReducCall()); diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 32f08bcc..447b5a2e 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -136,6 +136,9 @@ class Identifier:public ASTNode char* fpId; /*If the identifier is associated with a fixedpoint, the field stores the fixedpoint id name*/ + Identifier* fpIdNode; /*If the identifier is associated with a fixedpoint, + the field stores the fixedpoint id node*/ + TableEntry* idInfo; Expression* dependentExpr; /*the expression in fixedPoint of which the current identifier is a part of*/ @@ -223,6 +226,16 @@ class Identifier:public ASTNode return fpId; } + void set_fpIdNode(Identifier* fp_sentIdNode) + { + fpIdNode=fp_sentIdNode; + } + + Identifier* get_fpIdNode() + { + return fpIdNode; + } + void set_assignedExpr(Expression* assignExprSent) { assignedExpr = assignExprSent; @@ -1889,7 +1902,15 @@ class fixedPointStmt:public statement Expression* assocExpr; list usedVars; + public: + bool isMetaUsed = false; + bool isDataUsed = false; + bool isSrcUsed = false; + bool isWeightUsed = false; + bool isRevMetaUsed = false; + bool isModifiedNextUsed = false; + forallStmt() { iterator=NULL; diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index 87df2903..29539091 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -552,7 +552,6 @@ void dsl_cpp_generator::generateBFSAbstraction(iterateBFS* bfsAbstraction, main.pushstr_newL("}"); main.pushstr_newL("//accumulate_bc<<>>(V,d_delta, d_BC, d_level, src);"); //~ main.NewLine(); - //~ main.pushstr_newL("}while(!finished);"); //~ main.pushstr_newL("}"); //~ main.pushstr_newL("phase = phase - 1 ;"); @@ -1359,7 +1358,7 @@ void dsl_cpp_generator::generateForAllSignature(forallStmt* forAll, bool isMainF Identifier* nodeNbr = argList.front()->getExpr()->getId(); sprintf(strBuffer, "for (%s %s = %s[%s]; %s < %s[%s+1]; %s++)", "int", "edge", "d_rev_meta", nodeNbr->getIdentifier(), "edge", "d_rev_meta", nodeNbr->getIdentifier(), "edge"); targetFile.pushstr_newL(strBuffer); - targetFile.pushString("{"); + targetFile.pushstr_newL("{"); sprintf(strBuffer, "%s %s = %s[%s] ;", "int", iterator->getIdentifier(), "d_src", "edge"); //needs to move the addition of targetFile.pushstr_newL(strBuffer); } //statement to a different method. @@ -1550,6 +1549,14 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { header.pushString("_kernel"); header.pushString("(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next"); + + cout << "isMetaUsed : " << forAll->isMetaUsed << endl; + cout << "isDataUsed : " << forAll->isDataUsed << endl; + cout << "isSrcUsed : " << forAll->isSrcUsed << endl; + cout << "isWeightUsed : " << forAll->isWeightUsed << endl; + cout << "isRevMetaUsed : " << forAll->isRevMetaUsed << endl; + cout << "isModifiedNextUsed : " << forAll->isModifiedNextUsed << endl; + /*if(currentFunc->getParamList().size()!=0) { header.pushString(" ,"); diff --git a/src/backends/backend_cuda/dsl_cpp_generator.h b/src/backends/backend_cuda/dsl_cpp_generator.h index 10dbbf43..3c6687f0 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.h +++ b/src/backends/backend_cuda/dsl_cpp_generator.h @@ -6,6 +6,7 @@ #include "../../ast/ASTNodeTypes.hpp" #include "../dslCodePad.h" //~ #include "../../parser/includeHeader.hpp" +#include "../../analyser/analyserUtil.cpp" namespace spcuda { class dsl_cpp_generator { diff --git a/src/backends/backend_cuda/tempCodeRunnerFile.cpp b/src/backends/backend_cuda/tempCodeRunnerFile.cpp deleted file mode 100644 index cf00a3c7..00000000 --- a/src/backends/backend_cuda/tempCodeRunnerFile.cpp +++ /dev/null @@ -1 +0,0 @@ -addCudaBFSIterKernel \ No newline at end of file diff --git a/src/debug.txt b/src/debug.txt new file mode 100644 index 00000000..27cc2b33 --- /dev/null +++ b/src/debug.txt @@ -0,0 +1,218 @@ +fileName ../graphcode/sssp_dslV2 +Backend Target cuda +Type: function + +'('Graph Type + +','Node Property'<'Type: int'>' +',' +Edge Property'<'Type: int'>' +',' +Node Type +')'currentFuncType check!!0 +tempID g funccount 0 + +'{'Node Property +'<'Type: bool'>' +';' +'.''(''='+Infinity: INF',' + +'=' +Type Bool: False')'';'TYPE OF NODE OF STATEMENT1 +'.' +'=' +Type Bool: True';''.''='';' +Type: bool + +'='Type Bool: False';' +Keyword fixedPoint +Keyword until +'('':''!'')' +'{' +Keyword-forall: forall +'(' +Keyword in +'.''('')''.'filter'(' +EQ_OP +Type Bool: True')' +')' +'{'Keyword-forall: forall +'(' +Keyword in +'.''('')'')''{'Edge Type + +'=' +'.''('',' +')'';''<''.'',''.''>' +'=' +'<'Min +'(''.'',' +'.' +'+' +'.'')'',' +Type Bool: True'>'';''}' +'}'CHECK FILTER TYPE1 + +'}''}' +error val 0 +at 1 +ANAME1:6 +ANAME2:2 + Setting device bool +ANAME1:6 +ANAME2:2 + Setting device bool +FORALL par NAME1:6 +FORALL ParPar NAME2:11 +FORALL ParParPar NAME3:6 +FORALL par NAME1:6 +FORALL ParPar NAME2:18 +FORALL ParParPar NAME3:6 +at 2 +Function Compute_SSSP + { + Declaration + Procedure Call + Assignment + Assignment + Declaration + Fixed Point + { + For all + { + For all + { + Declaration + Reduction + } + } + } + } +Initializing 0x55d26d9e5fd0 6 +Initializing 0x55d26d9e61e0 7 +Initializing 0x55d26d9e6840 17 +Initializing 0x55d26d9e6a60 8 +Initializing 0x55d26d9e6cb0 8 +Initializing 0x55d26d9e6eb0 7 +Initializing 0x55d26d9e9340 11 +Initializing 0x55d26d9e7160 6 +Initializing 0x55d26d9e91b0 18 +fpId: finished +Analysing 0x55d26d9e5fd0 6 +Analysing 0x55d26d9e61e0 7 +Analysing 0x55d26d9e6840 17 +Analysing 0x55d26d9e6a60 8 +Analysing 0x55d26d9e6cb0 8 +Analysing 0x55d26d9e6eb0 7 +Analysing 0x55d26d9e9340 11 +Analysing 0x55d26d9e7160 6 +Analysing 0x55d26d9e91b0 18 +Analysing 0x55d26d9e7160 6 +Analysing 0x55d26d9e91b0 18 +Transfering 0x55d26d9e61e0 7 +Transfering 0x55d26d9e6840 17 +Transfering 0x55d26d9e6a60 8 +Transfering 0x55d26d9e6cb0 8 +Transfering 0x55d26d9e6eb0 7 +Transfering 0x55d26d9e9340 11 +Transfering 0x55d26d9e7160 6 +Transfering 0x55d26d9e91b0 18 +{ + Declaration + Tranfer statement + dist CPU to GPU + Tranfer statement + modified CPU to GPU + Procedure Call + Tranfer statement + modified GPU to CPU + Assignment + Tranfer statement + dist GPU to CPU + Assignment + Declaration + Tranfer statement + dist CPU to GPU + Fixed Point + { + Tranfer statement + weight CPU to GPU + Tranfer statement + finished CPU to GPU + Tranfer statement + modified CPU to GPU + For all + { + For all + { + Declaration + Reduction + } + } + Tranfer statement + modified GPU to CPU + Tranfer statement + finished GPU to CPU + } + Tranfer statement + dist CPU to GPU +} +fileName sssp_dslV2 +param :g +paramD:d_g +========== SET TRUE +param :dist +paramD:d_dist +param :weight +paramD:d_weight +param :src +paramD:d_src +param :g +paramD:d_g +param :dist +paramD:d_dist +param :weight +paramD:d_weight +param :src +paramD:d_src + ==VARSIZE:1 +varName:dist +varName:modified + ASST + DEVICE ASST + ASST + DEVICE ASST +varT:bool +varN:finished +IN FIX PT +Size::5 + ==VARSIZE:0 +STMT: For +isMainFile val 1 +Entered here for forall +INN OPTIMESED --------------- +_ +_ +_ +_ +isMetaUsed : 65 +isDataUsed : 0 +isSrcUsed : 1 +isWeightUsed : 0 +isRevMetaUsed : 1 +isModifiedNextUsed : 0 +============CHANGED BODY TYPE==============1start of kernel block +=======IF FILTER + ==VARSIZE:0 +STMT: For +isMainFile val 0 +GenerateForAllSignature = 0 + ITERATE Neighbour +src:nbr + ==VARSIZE:0 +------>PROP PRO CAL +LEFT LIST SIZE 2 +VAR:dist +FPID ========> finished +FOR BODY END +finished successfully diff --git a/src/parser/lrparser.y b/src/parser/lrparser.y index 902e7442..2e573011 100644 --- a/src/parser/lrparser.y +++ b/src/parser/lrparser.y @@ -571,8 +571,8 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; - cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); + cpp_backend.setOptimized(); } cpp_backend.generate(); diff --git a/src/parser/y.tab.c b/src/parser/y.tab.c index 03fe9a55..18822071 100644 --- a/src/parser/y.tab.c +++ b/src/parser/y.tab.c @@ -2996,8 +2996,8 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; - cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); + cpp_backend.setOptimized(); } cpp_backend.generate(); diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 446c1154..6419b9d9 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -275,6 +275,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) tableId->set_redecl(); //explained in the ASTNodeTypes tableId->set_fpassociation(); //explained in the ASTNodeTypes tableId->set_fpId(fixedPointId->getIdentifier()); //explained in the ASTNodeTypes + tableId->set_fpIdNode(fixedPointId); //explained in the ASTNodeTypes tableId->set_dependentExpr(fpStmt->getDependentProp()); } } From 915d5bf3a4408ef08875c5b42120fcae8c920a07 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Wed, 1 Feb 2023 10:23:19 +0530 Subject: [PATCH 03/38] Create dynamicDecBC --- graphcode/dynamicDSLCodes/dynamicDecBC | 347 +++++++++++++++++++++++++ 1 file changed, 347 insertions(+) create mode 100644 graphcode/dynamicDSLCodes/dynamicDecBC diff --git a/graphcode/dynamicDSLCodes/dynamicDecBC b/graphcode/dynamicDSLCodes/dynamicDecBC new file mode 100644 index 00000000..4dac0173 --- /dev/null +++ b/graphcode/dynamicDSLCodes/dynamicDecBC @@ -0,0 +1,347 @@ +function oneLevelDelProcessing(Graph g, propNode BC, nodeMap(propNode) bfsDistMem, nodeMap(propNode) sigmaMem, +nodeMap(propNode) deltaMem, propNode bfsDistNew, propNode sigmaNew, propNode deltaNew, +int src, propNode direction, nodeMap(propEdge) modified, propNode delEdgeIds, nodeMap(propNode) parentMem, +propNode isChanged) +{ + bool finished = False; + + while(!finished) + { + finished = true; + forall (v in g.nodes().filter(isChanged == True) ) + { + forall (nbr in g.nodes_to(v)) + { + edge e = g.get_edge(v, nbr); + if(nbr.bfsDistNew != INT_MAX/2) + { + if(v.bfsDistNew > nbr.bfsDistNew + e.weight) + { + v.bfsDistNew = nbr.bfsDistNew + e.weight; + v.parentMem = nbr; + finished = false; + } + } + } + } + } + + container levelNodesLater; + container(g.num_nodes(), 0) levelCount; + container levelVal; + container>(g.num_nodes()) levelQueues; + int phase = 0; + + for(v in g.nodes(). filter(isChanged == true)){ + + if(v.bfsDistNew != INT_MAX/2){ + levelQueues[v.bfsDistNew].push(v); + levelVal.push(v); + levelCount[v.bfsDistNew] = levelCount[v.bfsDistNew] + 1; + v.direction = 1; + v.sigmaNew = 0; + } + else { + + v.sigmaNew = 0; + + for(nbr in g.nodes_to(v)){ + if(nbr.bfsDistMem[src] + 1 == v.bfsDistMem[src]) { + if(nbr.bfsDistNew != INT_MAX/2 && nbr.direction == 0){ + levelQueues[nbr.bfsDistNew].push(nbr); + levelVal.push(nbr); + levelCount[nbr.bfsDistNew] = levelCount[nbr.bfsDistNew] + 1; + nbr.sigmaNew = 0; + nbr.direction = 2; + } + + } + } + levelVal.push(v); + } + } + + + container>(g.num_nodes()) levelNodesBack; + + while(levelVal){ + + forall(v in levelVal){ + + for(w in g.inOutNbrs(v)){ + + edge e = g.get_edge(v, w) ; + + if((((w.bfsDistNew == v.bfsDistNew + 1) && e.modified[src]) || (w.bfsDistMem[src] == v.bfsDistMem[src] + 1)) && w.direction == 0 && e.dir == 1){ + + if(w.direction == 0 && w.bfsDistNew != INT_MAX/2){ + w.direction = 1; + levelNodesBack[w.bfsDistNew].push(w); + w.sigmaNew = 0; + } + } + if(e.modified[src]){ + + if((w.bfsDistNew == v.bfsDistNew) && (w.bfsDistMem[src] != v.bfsDistMem[src])){ + w.direction = 1; + levelNodesBack[w.bfsDistNew].push(w); + w.sigmaNew = 0; + } + } + } + } + + levelVal.clear(); + + for(j in g.nodes().filter(j < maxDist)){ + if(!levelNodesBack){ + levelQueues.insert(levelNodesBack[j]); + levelVal.insert(levelNodesBack[j]); + levelCount[j] = levelCount[j] + levelNodesBack[j].size(); + } + } + } + + + phase = 0; + + while(phase <= maxDist){ + + if(levelQueues[phase]){ + + forall(v in levelQueues[phase]){ + + v.direction = 1; + if(v == src) + v.sigmaNew = 1; + + for(w in g.nodes_to(v)){ + + edge e = g.get_edge(v, w); + if(e.modified[src]){ + if(w.bfsDistNew + 1 == v.bfsDistNew){ + + v.sigmaNew = w.sigmaNew + 1; + } + } + } + } + + } + phase = phase + 1; + + } + + + phase = g.num_nodes() - 1; + + while(phase >= 0){ + + if(levelQueues[phase]){ + + forall(w in levelQueues[phase]){ + w.deltaNew = w.deltaMem[src]; + + for(v in g.neighbors(w)){ + + edge e = g.get_edge(w, v); + if((v.bfsDistNew > w.bfsDistNew) || (v.bfsDistMem[src] == w.bfsDistMem[src] + 1)){ + + if(e.modified[src]){ + + if(v.sigmaNew > 0 && v.bfsDistNew == w.bfsDistNew + 1){ + + if(v.direction == 0){ + + v.deltaNew = v.deltaMem[src]; + + } + w.deltaNew = w.deltaNew + w.sigmaNew * (1 + v.deltaNew) / v.sigmaNew; + } + } + + float alpha = 0; + + if(v.sigmaMem[src] > 0 && (v.bfsDistMem[src] == w.bfsDistMem[src] + 1)){ + + alpha = w.sigmaMem[src] * (1 + v.deltaMem[src]) / v.sigmaMem[src]; + + } + + w.deltaNew = w.deltaNew - alpha; + } + } + + for(v in g.nodes_to(w)){ + + if(v.bfsDistNew < w.bfsDistNew){ + + if(v.direction == 0){ + + v.direction = 2; + v.deltaNew = v.deltaMem[src]; + levelNodesBack[v.bfsDistNew].push(v); + + } + } + } + } + + + for(j in g.nodes(). filter(j < phase)){ + + if(!levelNodesBack[j]){ + levelQueues[j].insert(levelNodesBack[j]); + levelCount[j] = levelCount[j] + levelNodesBack[j].size(); + levelNodesBack[j].clear(); + } + + } + } + + phase = phase - 1; + + } + + +} + + +Decremental(Graph g, propNode BC, SetN seeds, nodeMap(propNode) bfsDistMem, nodeMap(propNode) deltaMem, +nodeMap(propNode) sigmaMem, nodeMap(propNode) parentMem, nodeMap(propEdge) modified, nodeMap(propNode) modifiedMem, +nodeMap(propNode) bfsModMem, container delEdgeIds, updates deleteBatch) +{ + + for(seed in seeds) { + + propNode sigmaNew; + propNode bfsDistNew; + propNode deltaNew; + propNode direction; + node src = seed; + + g.attachNodeProperty(bfsDistNew = bfsDistMem[src], sigmaNew = sigmaMem[src], deltaNew = 0, direction = 0); + + forall( v in g.nodes().filter(parentMem[src] == -1 && v != src)) + { + v.bfsDistNew = INT_MAX/2; + } + + bool finished = false; + + while(!finished) + { + finished = false; + forall (v in g.nodes().filter(bfsModMem[src] == False) ) + { + node parent_v = v.parentMem[src]; + if(parent_v>-1 && parent_v.bfsModMem[src]) + { + v.bfsDistNew = INT_MAX/2; + v.bfsModMem[src] = True; + v.parentMem[src] = -1; + finished = false; + v.sigmaNew = 0; + v.modifiedMem[src] = true; + } + + } + } + + propNode modifiedNodes = modifiedMem[src]; + oneLevelDelProcessing(g, BC, bfsDistMem, sigmaMem, deltaMem, bfsDistNew, sigmaNew, deltaNew, src, direction, modified, + delEdgeIds, parentMem, modifiedNodes); + + forall(v in g.nodes()) { + + v.bfsDistMem[src] = v.bfsDistNew; + v.sigmaMem[src] = v.sigmaNew; + + if(v.direction != 0) + v.deltaMem[src] = v.deltaNew; + + if(v.bfsDistMem[src] == INT_MAX/2) + v.deltaMem[src] = 0; + + } + } + +} + +Dynamic DynBC(Graph g, propNode BC, SetN seeds, updates updateBatch, int batchSize) +{ + nodeMap(propNode) bfsDistMem; + nodeMap(propNode) deltaMem; + nodeMap(propNode) sigmaMem; + nodeMap(propNode) parentMem; + nodeMap(propNode) modifiedMem; + nodeMap(propNode) bfsModMem; + + updates deleteBatch; + updates addBatch; + nodeMap(propEdge) modified; + container delEdgeIds; + + Batch(updateBatch:batchSize) + { + deleteBatch = updateBatch.currentBatch(0); + for(seed in seeds) + { + propEdge srcEdgeFilter; + propNode nodeFlag; + propNode dupNodeFlag; + + g.attachEdgeProperty(srcEdgeFilter = true); + g.attachNodeProperty(nodeFlag = false, dupNodeFlag = false); + + modifiedMem[seed] = nodeFlag; + bfsModMem[seed] = dupNopeFlag; + modified[seed] = srcEdgeFilter; + } + + OnDelete(u in updateBatch.currentBatch()): + { + int src = u.source; + int dest = u.destination; + + for(seed in seeds) + { + propNode bfsVal = bfsDistMem[seed]; + if(dest.bfsVal == src.bfsVal + 1) + { + dest.modifiedMem[seed] = True; + if(dest.parentMem[seed] == src) + { + dest.bfsModMem[seed] = True; + dest.parentMem[seed] = -1; + } + } + } + + for(nbr in g.neighbors(src)) + { + edge e = g.get_edge(src, nbr); + if(nbr == dest) + { + for(seed in seeds) + { + e.modified[seed] = false; + delEdgeIds.push(e.id); + + } + } + + } + + } + + + Decremental(g, BC, seeds, bfsDistMem, deltaMem, sigmaMem, parentMem, modified, + modifiedMem, bfsModMem, delEdgeIds, deleteBatch); + + g.updateCSRDel(updateBatch); + + } + + +} From 7f02806cbebe0cfab86156d9ef1754cfb6d51bfa Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 10:59:39 +0530 Subject: [PATCH 04/38] Create sssp_dslV2 --- graphcode/staticDSLCodes/sssp_dslV2 | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 graphcode/staticDSLCodes/sssp_dslV2 diff --git a/graphcode/staticDSLCodes/sssp_dslV2 b/graphcode/staticDSLCodes/sssp_dslV2 new file mode 100644 index 00000000..11ec0e21 --- /dev/null +++ b/graphcode/staticDSLCodes/sssp_dslV2 @@ -0,0 +1,20 @@ +function Compute_SSSP(Graph g, propNode dist, propEdge weight, node src) +{ + + propNode modified; + g.attachNodeProperty(dist = INF, modified = False); + src.modified = True; + src.dist = 0; + bool finished = False; + fixedPoint until(finished : !modified) + { + forall(v in g.nodes().filter(modified == True)) + { + forall(nbr in g.neighbors(v)) + { + edge e = g.get_edge(v, nbr); + = ; + } + } + } +} From b970f5501ec7e30a73b05da5bbaa9aba00df898f Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:00:08 +0530 Subject: [PATCH 05/38] Create bc_dslV2 --- graphcode/staticDSLCodes/bc_dslV2 | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 graphcode/staticDSLCodes/bc_dslV2 diff --git a/graphcode/staticDSLCodes/bc_dslV2 b/graphcode/staticDSLCodes/bc_dslV2 new file mode 100644 index 00000000..9a7b0c04 --- /dev/null +++ b/graphcode/staticDSLCodes/bc_dslV2 @@ -0,0 +1,33 @@ +function Compute_BC ( Graph g,propNode BC,SetN sourceSet) +{ + g.attachNodeProperty (BC = 0); + + for (src in sourceSet) { + + propNode sigma; + propNode delta; + g.attachNodeProperty(delta=0); + g.attachNodeProperty(sigma = 0); + src.sigma = 1; + + iterateInBFS(v in g.nodes() from src) + { + for(w in g.neighbors(v)) + { + w.sigma=w.sigma+v.sigma; + } + } + + + iterateInReverse(v!=src) + { + for(w in g.neighbors(v)) + { + v.delta = v.delta + (v.sigma / w.sigma) * ( 1 + w.delta); + } + + v.BC = v.BC + v.delta; + + } + } +} From 8008f1e834c0527f1c72a905526c511b10cf6782 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:00:40 +0530 Subject: [PATCH 06/38] Create PageRankDSLV2 --- graphcode/staticDSLCodes/PageRankDSLV2 | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 graphcode/staticDSLCodes/PageRankDSLV2 diff --git a/graphcode/staticDSLCodes/PageRankDSLV2 b/graphcode/staticDSLCodes/PageRankDSLV2 new file mode 100644 index 00000000..64dea526 --- /dev/null +++ b/graphcode/staticDSLCodes/PageRankDSLV2 @@ -0,0 +1,34 @@ +function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode pageRank) +{ + float num_nodes = g.num_nodes(); + propNode pageRank_nxt; + g.attachNodeProperty(pageRank=1/num_nodes); + int iterCount=0; + + float diff; + do + { + diff=0.0; + + forall(v in g.nodes()) + { + float sum=0.0; + + for(nbr in g.nodes_to(v)) + { + sum=sum+nbr.pageRank/g.count_outNbrs(nbr); + } + + float val=(1-delta)/num_nodes+delta*sum; + diff+=val-v.pageRank; + v.pageRank_nxt=val; + + } + + pageRank = pageRank_nxt ; + iterCount++; + + + } while((diff>beta)&&(iterCount Date: Fri, 3 Feb 2023 11:01:10 +0530 Subject: [PATCH 07/38] Create triangle_counting_dsl --- .../staticDSLCodes/triangle_counting_dsl | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 graphcode/staticDSLCodes/triangle_counting_dsl diff --git a/graphcode/staticDSLCodes/triangle_counting_dsl b/graphcode/staticDSLCodes/triangle_counting_dsl new file mode 100644 index 00000000..5587a58c --- /dev/null +++ b/graphcode/staticDSLCodes/triangle_counting_dsl @@ -0,0 +1,23 @@ +function Compute_TC(Graph g) +{ + long triangle_count = 0; + + forall(v in g.nodes()) + { + forall(u in g.neighbors(v).filter(u < v)) + { + forall(w in g.neighbors(v).filter(w > v)) + { + if(g.is_an_edge(u,w)) + { + triangle_count+=1; + } + } + + } + + } + + return triangle_count; + +} From 2931756534deeec329951650d0e2c86aeb838a5b Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:01:27 +0530 Subject: [PATCH 08/38] Delete PageRankDSL --- graphcode/PageRankDSL | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 graphcode/PageRankDSL diff --git a/graphcode/PageRankDSL b/graphcode/PageRankDSL deleted file mode 100644 index ebc895fd..00000000 --- a/graphcode/PageRankDSL +++ /dev/null @@ -1,33 +0,0 @@ -function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode pageRank) -{ - float num_nodes = g.num_nodes(); - g.attachNodeProperty(pageRank=1/num_nodes); - int iterCount=0; - float diff; - do - { - diff=0.0; - - forall(v in g.nodes()) - { - float sum=0.0; - - for(nbr in g.nodes_to(v)) - { - sum=sum+nbr.pageRank/g.count_outNbrs(nbr); - } - - float val=(1-delta)/num_nodes+delta*sum; - diff+=val-v.pageRank; - v.pageRank=val; - - } - - iterCount++; - - - } while((diff>beta)&&(iterCount Date: Fri, 3 Feb 2023 11:01:40 +0530 Subject: [PATCH 09/38] Delete PageRankDSLV2 --- graphcode/PageRankDSLV2 | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 graphcode/PageRankDSLV2 diff --git a/graphcode/PageRankDSLV2 b/graphcode/PageRankDSLV2 deleted file mode 100644 index 5553184e..00000000 --- a/graphcode/PageRankDSLV2 +++ /dev/null @@ -1,27 +0,0 @@ -function Compute_PR(Graph g, float beta, float delta, int maxIter, propNode pageRank) { - float num_nodes = g.num_nodes(); - propNode pageRank_nxt; - g.attachNodeProperty(pageRank = 1 / num_nodes); - int iterCount = 0; - float diff; - - do { - diff = 0.0; - - forall(v in g.nodes()) { - float sum = 0.0; - - for (nbr in g.nodes_to(v)) { - sum = sum + nbr.pageRank / g.count_outNbrs(nbr); - } - - float val = (1 - delta) / num_nodes + delta * sum; - diff += val - v.pageRank; - v.pageRank_nxt = val; - } - - pageRank = pageRank_nxt; - iterCount++; - - } while ((diff > beta) && (iterCount < maxIter)); -} From 05520d466b90fc468692891c3dabbf5f5fd5765f Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:01:52 +0530 Subject: [PATCH 10/38] Delete PageRank_DSL --- graphcode/PageRank_DSL | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 graphcode/PageRank_DSL diff --git a/graphcode/PageRank_DSL b/graphcode/PageRank_DSL deleted file mode 100644 index ebc895fd..00000000 --- a/graphcode/PageRank_DSL +++ /dev/null @@ -1,33 +0,0 @@ -function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode pageRank) -{ - float num_nodes = g.num_nodes(); - g.attachNodeProperty(pageRank=1/num_nodes); - int iterCount=0; - float diff; - do - { - diff=0.0; - - forall(v in g.nodes()) - { - float sum=0.0; - - for(nbr in g.nodes_to(v)) - { - sum=sum+nbr.pageRank/g.count_outNbrs(nbr); - } - - float val=(1-delta)/num_nodes+delta*sum; - diff+=val-v.pageRank; - v.pageRank=val; - - } - - iterCount++; - - - } while((diff>beta)&&(iterCount Date: Fri, 3 Feb 2023 11:02:05 +0530 Subject: [PATCH 11/38] Delete PageRank_DSL_V2 --- graphcode/PageRank_DSL_V2 | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 graphcode/PageRank_DSL_V2 diff --git a/graphcode/PageRank_DSL_V2 b/graphcode/PageRank_DSL_V2 deleted file mode 100644 index 5553184e..00000000 --- a/graphcode/PageRank_DSL_V2 +++ /dev/null @@ -1,27 +0,0 @@ -function Compute_PR(Graph g, float beta, float delta, int maxIter, propNode pageRank) { - float num_nodes = g.num_nodes(); - propNode pageRank_nxt; - g.attachNodeProperty(pageRank = 1 / num_nodes); - int iterCount = 0; - float diff; - - do { - diff = 0.0; - - forall(v in g.nodes()) { - float sum = 0.0; - - for (nbr in g.nodes_to(v)) { - sum = sum + nbr.pageRank / g.count_outNbrs(nbr); - } - - float val = (1 - delta) / num_nodes + delta * sum; - diff += val - v.pageRank; - v.pageRank_nxt = val; - } - - pageRank = pageRank_nxt; - iterCount++; - - } while ((diff > beta) && (iterCount < maxIter)); -} From 82e49417ac7fb6704bf1c79817e324762db966f0 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:02:14 +0530 Subject: [PATCH 12/38] Delete SSSP_V2 --- graphcode/SSSP_V2 | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 graphcode/SSSP_V2 diff --git a/graphcode/SSSP_V2 b/graphcode/SSSP_V2 deleted file mode 100644 index cc04659e..00000000 --- a/graphcode/SSSP_V2 +++ /dev/null @@ -1,20 +0,0 @@ -function Compute_SSSP (Graph g,propNode dist, node src) -{ - -propNode modified; -g.attachNodeProperty(dist=INF, modified = False); -src.modified = True; -src.dist=0; -bool finished =False; -fixedPoint until (finished:!modified) -{ -forall (v in g.nodes().filter(modified == True) ) -{ - forall (nbr in g.neighbors(v)) - { - edge e = g.get_edge(v, nbr); - = ; - } -} -} -} \ No newline at end of file From 7d1d5752352f7043e7d7a53310825a4fd4a4c541 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:02:25 +0530 Subject: [PATCH 13/38] Delete bc_dslV2 --- graphcode/bc_dslV2 | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 graphcode/bc_dslV2 diff --git a/graphcode/bc_dslV2 b/graphcode/bc_dslV2 deleted file mode 100644 index 544b0494..00000000 --- a/graphcode/bc_dslV2 +++ /dev/null @@ -1,32 +0,0 @@ -function Compute_BC ( Graph g,propNode BC,SetN sourceSet) -{ - g.attachNodeProperty (BC =0); - propNode sigma; - propNode delta; - for (src in sourceSet) { - - g.attachNodeProperty(delta=0); - g.attachNodeProperty(sigma = 0); - src.sigma = 1; - - iterateInBFS(v in g.nodes() from src) -{ - for(w in g.neighbors(v)) - { - w.sigma=w.sigma+v.sigma; - } - } - - - iterateInReverse(v!=src) - { - for(w in g.neighbors(v)) - { - v.delta = v.delta + (v.sigma / w.sigma) * ( 1 + w.delta); - } - - v.BC = v.BC + v.delta; - - } - } -} From 3a5bbf28cc019c499f565786a17f89ab67ebbb81 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:02:34 +0530 Subject: [PATCH 14/38] Delete bc_dsl_v2 --- graphcode/bc_dsl_v2 | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 graphcode/bc_dsl_v2 diff --git a/graphcode/bc_dsl_v2 b/graphcode/bc_dsl_v2 deleted file mode 100644 index 4e46948e..00000000 --- a/graphcode/bc_dsl_v2 +++ /dev/null @@ -1,28 +0,0 @@ -function Compute_BC(Graph g, propNode BC, SetN sourceSet) -{ - g.attachNodeProperty(BC=0); - - for (src in sourceSet) { - propNode sigma; - propNode delta; - - g.attachNodeProperty(delta=0); - g.attachNodeProperty(sigma=0); - - src.sigma = 1; - - iterateInBFS(v in g.nodes() from src) { - for(w in g.neighbors(v)) { - w.sigma=w.sigma+v.sigma; - } - } - - iterateInReverse(v!=src) { - for(w in g.neighbors(v)) { - v.delta = v.delta + (v.sigma / w.sigma) * ( 1 + w.delta); - } - v.BC = v.BC + v.delta; - } - - } -} From 3621e128ba4ac4eb3a780c71600eaa7d82782428 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:02:44 +0530 Subject: [PATCH 15/38] Delete bc_dsl_v3 --- graphcode/bc_dsl_v3 | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 graphcode/bc_dsl_v3 diff --git a/graphcode/bc_dsl_v3 b/graphcode/bc_dsl_v3 deleted file mode 100644 index bbe5d33c..00000000 --- a/graphcode/bc_dsl_v3 +++ /dev/null @@ -1,27 +0,0 @@ -function Compute_BC(Graph g, propNode BC, SetN sourceSet) -{ - g.attachNodeProperty(BC=0); - - propNode sigma; - propNode delta; - - for (src in sourceSet) { - g.attachNodeProperty(delta=0); - g.attachNodeProperty(sigma=0); - - src.sigma = 1; - - iterateInBFS(v in g.nodes() from src) { - for(w in g.neighbors(v)) { - w.sigma=w.sigma+v.sigma; - } - } - - iterateInReverse(v!=src) { - for(w in g.neighbors(v)) { - v.delta = v.delta + (v.sigma / w.sigma) * ( 1 + w.delta); - } - v.BC = v.BC + v.delta; - } - } -} From 03276b3e9033e799e48b81600d9b3fb676bd2ffa Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:03:00 +0530 Subject: [PATCH 16/38] Delete pageRankDSL --- graphcode/pageRankDSL | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 graphcode/pageRankDSL diff --git a/graphcode/pageRankDSL b/graphcode/pageRankDSL deleted file mode 100644 index cf743cb6..00000000 --- a/graphcode/pageRankDSL +++ /dev/null @@ -1,33 +0,0 @@ -function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode pageRank) -{ - float num_nodes = g.num_nodes(); - g.attachNodeProperty(pageRank=1.0/num_nodes); - int iterCount=0; - float diff; - do - { - diff=0.0; - - forall(v in g.nodes()) - { - float sum=0.0; - - for(nbr in g.nodes_to(v)) - { - sum=sum+nbr.pageRank/g.count_inNbrs(nbr); - } - - float val=(1-delta)/num_nodes+delta*sum; - diff+=val-v.pageRank; - v.pageRank=val; - - } - - iterCount++; - - - } while((diff>beta)&&(iterCount Date: Fri, 3 Feb 2023 11:03:09 +0530 Subject: [PATCH 17/38] Delete sssp_dslV2 --- graphcode/sssp_dslV2 | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 graphcode/sssp_dslV2 diff --git a/graphcode/sssp_dslV2 b/graphcode/sssp_dslV2 deleted file mode 100644 index f4c5a7c1..00000000 --- a/graphcode/sssp_dslV2 +++ /dev/null @@ -1,20 +0,0 @@ -function Compute_SSSP (Graph g,propNode dist, propEdge weight, node src) -{ - -propNode modified; -g.attachNodeProperty(dist=INF, modified = False); -src.modified = True; -src.dist=0; -bool finished =False; -fixedPoint until (finished:!modified) -{ -forall (v in g.nodes().filter(modified == True) ) -{ - forall (nbr in g.neighbors(v)) - { - edge e = g.get_edge(v, nbr); - = ; - } -} -} -} From ac10fd3ffb6f7d73725a26c1cf97cb1aeaf74e1e Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:03:19 +0530 Subject: [PATCH 18/38] Delete triangle_count_dsl --- graphcode/triangle_count_dsl | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 graphcode/triangle_count_dsl diff --git a/graphcode/triangle_count_dsl b/graphcode/triangle_count_dsl deleted file mode 100644 index 8f859776..00000000 --- a/graphcode/triangle_count_dsl +++ /dev/null @@ -1,22 +0,0 @@ -function Compute_TC(Graph g) -{ - long triangle_count = 0; - - forall(v in g.nodes()) - { - forall(u in g.neighbors(v).filter(u < v)) - { - forall(w in g.neighbors(v).filter(w > v)) - { - if(g.is_an_edge(u,w)) - { - triangle_count+=1; - } - } - - } - - - } - return triangle_count; -} From 30ad37d0d83c19b2fdd6a93e9068919a6b7d0c45 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:03:28 +0530 Subject: [PATCH 19/38] Delete triangle_counting_DSL --- graphcode/triangle_counting_DSL | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 graphcode/triangle_counting_DSL diff --git a/graphcode/triangle_counting_DSL b/graphcode/triangle_counting_DSL deleted file mode 100644 index 1361bd6b..00000000 --- a/graphcode/triangle_counting_DSL +++ /dev/null @@ -1,13 +0,0 @@ -function Compute_TC(Graph g) { - int triangle_count = 0; - - forall(v in g.nodes()) { - forall(u in g.neighbors(v).filter(u < v)) { - forall(w in g.neighbors(v).filter(w > v)) { - if (g.is_an_edge(u, w)) { - triangle_count += 1; - } - } - } - } -} From 2b3dce7425b5d25fc1ac1684b21846a2abeb6833 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:03:38 +0530 Subject: [PATCH 20/38] Delete triangle_counting_dsl --- graphcode/triangle_counting_dsl | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 graphcode/triangle_counting_dsl diff --git a/graphcode/triangle_counting_dsl b/graphcode/triangle_counting_dsl deleted file mode 100644 index 1361bd6b..00000000 --- a/graphcode/triangle_counting_dsl +++ /dev/null @@ -1,13 +0,0 @@ -function Compute_TC(Graph g) { - int triangle_count = 0; - - forall(v in g.nodes()) { - forall(u in g.neighbors(v).filter(u < v)) { - forall(w in g.neighbors(v).filter(w > v)) { - if (g.is_an_edge(u, w)) { - triangle_count += 1; - } - } - } - } -} From b16c1505a21dfc6938c05648f1760964f3ea173d Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Fri, 3 Feb 2023 11:03:49 +0530 Subject: [PATCH 21/38] Delete pageRank_dsl.cc --- graphcode/pageRank_dsl.cc | 93 --------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 graphcode/pageRank_dsl.cc diff --git a/graphcode/pageRank_dsl.cc b/graphcode/pageRank_dsl.cc deleted file mode 100644 index 6cdeded2..00000000 --- a/graphcode/pageRank_dsl.cc +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include"graph.hpp" - -void Compute_PR(graph& g,float beta, float delta, int maxIter, float* node_pr) - { - float num_nodes=(float)g.num_nodes(); - - - #pragma omp parallel for num_threads(4) - for(int i=0;ibeta)&&(iterCount Date: Fri, 3 Feb 2023 11:12:31 +0530 Subject: [PATCH 22/38] Update dsl_cpp_generator.cpp added atomicUtil header's gen. --- src/backends/backend_omp/dsl_cpp_generator.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/backends/backend_omp/dsl_cpp_generator.cpp b/src/backends/backend_omp/dsl_cpp_generator.cpp index ac11a06b..8fc562a0 100644 --- a/src/backends/backend_omp/dsl_cpp_generator.cpp +++ b/src/backends/backend_omp/dsl_cpp_generator.cpp @@ -41,6 +41,8 @@ void dsl_cpp_generator::generation_begin() { addIncludeToFile("omp.h", header, true); header.pushString("#include"); addIncludeToFile("../graph.hpp", header, false); + header.pushString("#include"); + addIncludeToFile("../atomicUtil.h", header, false); header.NewLine(); main.pushString("#include"); sprintf(temp, "%s.h", fileName); From 461857167a020d7aac3de71ada935f3f555c5734 Mon Sep 17 00:00:00 2001 From: nibeditabh <74252891+nibeditabh@users.noreply.github.com> Date: Tue, 14 Feb 2023 10:27:14 +0530 Subject: [PATCH 23/38] Update atomicUtil.h --- graphcode/atomicUtil.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/graphcode/atomicUtil.h b/graphcode/atomicUtil.h index 4e111ba0..05528727 100644 --- a/graphcode/atomicUtil.h +++ b/graphcode/atomicUtil.h @@ -1,4 +1,5 @@ #include +#include template inline void atomicMin(T* targetVar, T update_val) @@ -23,4 +24,4 @@ inline void atomicAdd(T* targetVar, T update_val) { oldValue = *targetVar; newValue = oldValue + update_val; } while (!__sync_bool_compare_and_swap(targetVar,oldValue,newValue)); -} \ No newline at end of file +} From e9d7d96f011af19704e8de3e01fdcb0596ace050 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Wed, 15 Feb 2023 11:53:15 +0530 Subject: [PATCH 24/38] activated -o option --- Changes_list.txt | 2 +- StarPlat_DSL_Project___TECS_Journal.pdf | Bin 0 -> 729737 bytes src/parser/lrparser.y | 1 + 3 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 StarPlat_DSL_Project___TECS_Journal.pdf diff --git a/Changes_list.txt b/Changes_list.txt index 07892e3f..b675caa7 100644 --- a/Changes_list.txt +++ b/Changes_list.txt @@ -2,4 +2,4 @@ lrparser.y : LINE 574 uncomment the line to activate the -o (optimize) option For fixing the segmentation fault in PageRank_DSL_V2 :- SymbolTableBuilder.cpp : LINE 375 added a check to see if the forall statement is a for loop or a forall loop -deviceVarsAnalyser.h : getTempVar() LINE 284 removed static cast and used strcpy since it previously generated random characters \ No newline at end of file +deviceVarsAnalyser.h : getTempVar() LINE 284 removed static cast and used strcpy since it previously generated random characters diff --git a/StarPlat_DSL_Project___TECS_Journal.pdf b/StarPlat_DSL_Project___TECS_Journal.pdf new file mode 100644 index 0000000000000000000000000000000000000000..10717b6fd2b3cbb6eaff4c23f21cdc3b965924c0 GIT binary patch literal 729737 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

scWC(q#>MAO;e(3P*SsoTt~bVlrO||{ABe17 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,l_4UVqg( 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 z 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%0D!0J{+N5o76YEG#cC$W*o;&JW82Vw1gRzaDy+ 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 Date: Fri, 17 Feb 2023 08:59:16 +0530 Subject: [PATCH 25/38] added revmeta flag for forall and func --- graphcode/generated_cuda/PageRankDSLV2.cu | 133 +++++++++++ graphcode/generated_cuda/PageRankDSLV2.h | 46 ++++ .../generated_cuda/triangle_counting_dsl.cu | 13 +- .../generated_cuda/triangle_counting_dsl.h | 6 +- graphcode/generated_omp/temp_algo.cc | 6 + graphcode/generated_omp/temp_algo.h | 1 + src/ast/ASTNodeTypes.hpp | 12 +- .../backend_cuda/dsl_cpp_generator.cpp | 45 ++-- src/backends/backend_cuda/dsl_cpp_generator.h | 2 +- src/debug.txt | 210 +++++------------- src/dump | 114 ++++++++++ src/parser/y.tab.c | 1 + src/symbolutil/SymbolTableBuilder.cpp | 12 + 13 files changed, 408 insertions(+), 193 deletions(-) create mode 100644 graphcode/generated_cuda/PageRankDSLV2.cu create mode 100644 graphcode/generated_cuda/PageRankDSLV2.h create mode 100644 src/dump diff --git a/graphcode/generated_cuda/PageRankDSLV2.cu b/graphcode/generated_cuda/PageRankDSLV2.cu new file mode 100644 index 00000000..1efaeed9 --- /dev/null +++ b/graphcode/generated_cuda/PageRankDSLV2.cu @@ -0,0 +1,133 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#include "PageRankDSLV2.h" + +void Compute_PR(graph& g,float beta,float delta,int maxIter, + float* pageRank) + +{ + // CSR BEGIN + int V = g.num_nodes(); + int E = g.num_edges(); + + printf("#nodes:%d\n",V); + printf("#edges:%d\n",E); + int* edgeLen = g.getEdgeLen(); + + int *h_meta; + int *h_data; + int *h_src; + int *h_weight; + int *h_rev_meta; + + h_meta = (int *)malloc( (V+1)*sizeof(int)); + h_data = (int *)malloc( (E)*sizeof(int)); + h_src = (int *)malloc( (E)*sizeof(int)); + h_weight = (int *)malloc( (E)*sizeof(int)); + h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); + + for(int i=0; i<= V; i++) { + int temp = g.indexofNodes[i]; + h_meta[i] = temp; + temp = g.rev_indexofNodes[i]; + h_rev_meta[i] = temp; + } + + for(int i=0; i< E; i++) { + int temp = g.edgeList[i]; + h_data[i] = temp; + temp = g.srcList[i]; + h_src[i] = temp; + temp = edgeLen[i]; + h_weight[i] = temp; + } + + + int* d_meta; + int* d_data; + int* d_src; + int* d_weight; + int* d_rev_meta; + bool* d_modified_next; + + cudaMalloc(&d_meta, sizeof(int)*(1+V)); + cudaMalloc(&d_data, sizeof(int)*(E)); + cudaMalloc(&d_src, sizeof(int)*(E)); + cudaMalloc(&d_weight, sizeof(int)*(E)); + cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); + cudaMalloc(&d_modified_next, sizeof(bool)*(V)); + + cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); + cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); + + // CSR END + //LAUNCH CONFIG + const unsigned threadsPerBlock = 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; + unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; + + + // TIMER START + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + float milliseconds = 0; + cudaEventRecord(start,0); + + + //DECLAR DEVICE AND HOST vars in params + float* d_pageRank; + cudaMalloc(&d_pageRank, sizeof(float)*(V)); + + + //BEGIN DSL PARSING + float* d_pageRank_nxt; + cudaMalloc(&d_pageRank_nxt, sizeof(float)*(V)); + + float num_nodes = (float)g.num_nodes( ); // asst in .cu + + initKernel <<>>(V,d_pageRank,(float)1 / num_nodes); + + int iterCount = 0; // asst in .cu + + float diff; // asst in .cu + + bool tempVar_0 = false; // asst in .cu + + do{ + if (tempVar_0){ // if filter begin + + } // if filter end + tempVar_0 = true; + diff = 0.000000; + cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); + Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_pageRank,d_pageRank_nxt); + cudaDeviceSynchronize(); + + + + ; // asst in .cu + + ; // asst in .cu + + cudaMemcpy(d_pageRank, d_pageRank_nxt, sizeof(float)*V, cudaMemcpyDeviceToDevice); + iterCount++; + cudaMemcpyFromSymbol(&diff, ::diff, sizeof(float), 0, cudaMemcpyDeviceToHost); + + }while((diff > beta) && (iterCount < maxIter)); + + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_pageRank_nxt); + + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); + + cudaMemcpy(pageRank, d_pageRank, sizeof(float)*(V), cudaMemcpyDeviceToHost); +} //end FUN diff --git a/graphcode/generated_cuda/PageRankDSLV2.h b/graphcode/generated_cuda/PageRankDSLV2.h new file mode 100644 index 00000000..4be99536 --- /dev/null +++ b/graphcode/generated_cuda/PageRankDSLV2.h @@ -0,0 +1,46 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#ifndef GENCPP_PAGERANKDSLV2_H +#define GENCPP_PAGERANKDSLV2_H +#include +#include +#include +#include +#include "../graph.hpp" +#include "../libcuda.cuh" +#include + +void Compute_PR(graph& g,float beta,float delta,int maxIter, + float* pageRank); + +__device__ float beta ; +__device__ float delta ; +__device__ int maxIter ; + + +__device__ float num_nodes ; // DEVICE ASSTMENT in .h + +; // DEVICE ASSTMENT in .h + +__device__ float diff ; // DEVICE ASSTMENT in .h + +; // DEVICE ASSTMENT in .h + +__global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,float* d_pageRank,float* d_pageRank_nxt){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + float sum = 0.000000; // DEVICE ASSTMENT in .h + + for (int edge = d_rev_meta[v]; edge < d_rev_meta[v+1]; edge++) + { + int nbr = d_src[edge] ; + sum = sum + d_pageRank[nbr] / (d_meta[nbr+1]-d_meta[nbr]); + + } // end FOR NBR ITR. TMP FIX! + float val = (1 - delta) / num_nodes + delta * sum; // DEVICE ASSTMENT in .h + + atomicAdd(& diff, (float)val - d_pageRank[v]); + d_pageRank_nxt[v] = val; +} // end KER FUNC + +#endif diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu index 819d8c1e..1cc835f7 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.cu +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -16,19 +16,15 @@ void Compute_TC(graph& g) int *h_data; int *h_src; int *h_weight; - int *h_rev_meta; h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); h_src = (int *)malloc( (E)*sizeof(int)); h_weight = (int *)malloc( (E)*sizeof(int)); - h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); for(int i=0; i<= V; i++) { int temp = g.indexofNodes[i]; h_meta[i] = temp; - temp = g.rev_indexofNodes[i]; - h_rev_meta[i] = temp; } for(int i=0; i< E; i++) { @@ -45,21 +41,18 @@ void Compute_TC(graph& g) int* d_data; int* d_src; int* d_weight; - int* d_rev_meta; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); cudaMalloc(&d_src, sizeof(int)*(E)); cudaMalloc(&d_weight, sizeof(int)*(E)); - cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); // CSR END //LAUNCH CONFIG @@ -79,10 +72,10 @@ void Compute_TC(graph& g) //DECLAR DEVICE AND HOST vars in params //BEGIN DSL PARSING - int triangle_count = 0; // asst in .cu + long triangle_count = 0; // asst in .cu - cudaMemcpyToSymbol(::triangle_count, &triangle_count, sizeof(int), 0, cudaMemcpyHostToDevice); - Compute_TC_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next); + cudaMemcpyToSymbol(::triangle_count, &triangle_count, sizeof(long), 0, cudaMemcpyHostToDevice); + Compute_TC_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/triangle_counting_dsl.h b/graphcode/generated_cuda/triangle_counting_dsl.h index 5bd3af60..d761fafd 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.h +++ b/graphcode/generated_cuda/triangle_counting_dsl.h @@ -13,9 +13,9 @@ void Compute_TC(graph& g); -__device__ int triangle_count ; // DEVICE ASSTMENT in .h +__device__ long triangle_count ; // DEVICE ASSTMENT in .h -__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; @@ -26,7 +26,7 @@ __global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d int w = d_data[edge]; if (w > v){ // if filter begin if (findNeighborSorted(u, w, d_meta, d_data)){ // if filter begin - atomicAdd(& triangle_count, (int)1); + atomicAdd(& triangle_count, (long)1); } // if filter end diff --git a/graphcode/generated_omp/temp_algo.cc b/graphcode/generated_omp/temp_algo.cc index 7b24fef7..03dde4ec 100644 --- a/graphcode/generated_omp/temp_algo.cc +++ b/graphcode/generated_omp/temp_algo.cc @@ -5,6 +5,7 @@ void count_nodes(graph& g) int x = 0 ; int y = 0 ; int z = 0 ; + int w = 0; int* prop=new int[g.num_nodes()]; y = x + 10; z = x; @@ -13,5 +14,10 @@ void count_nodes(graph& g) { prop[t] = (x || z); } + #pragma omp parallel for + for (int v = 0; v < g.num_nodes(); v ++) + { + prop[v] = y; + } } diff --git a/graphcode/generated_omp/temp_algo.h b/graphcode/generated_omp/temp_algo.h index e60baac2..8f4d8b32 100644 --- a/graphcode/generated_omp/temp_algo.h +++ b/graphcode/generated_omp/temp_algo.h @@ -6,6 +6,7 @@ #include #include #include"../graph.hpp" +#include"../atomicUtil.h" void count_nodes(graph& g); diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 447b5a2e..d01ad4db 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -420,7 +420,12 @@ class Function:public ASTNode public: - + bool isMetaUsed = false; // if d_meta is used in function + bool isDataUsed = false; // if d_data is used in function + bool isSrcUsed = false; // if d_src is used in function + bool isWeightUsed = false; // if d_weight is used in function + bool isRevMetaUsed = false; // if d_rev_meta is used in function + bool isModifiedNextUsed = false; // if d_modified_next is used in function Function() { functionId=NULL; @@ -1904,12 +1909,7 @@ class fixedPointStmt:public statement list usedVars; public: - bool isMetaUsed = false; - bool isDataUsed = false; - bool isSrcUsed = false; - bool isWeightUsed = false; bool isRevMetaUsed = false; - bool isModifiedNextUsed = false; forallStmt() { diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index 29539091..31cea38d 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -1548,14 +1548,11 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { header.pushString(getCurrentFunc()->getIdentifier()->getIdentifier()); header.pushString("_kernel"); - header.pushString("(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next"); + header.pushString("(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight"); + if(forAll->isRevMetaUsed) + header.pushString(", int *d_rev_meta,bool *d_modified_next"); - cout << "isMetaUsed : " << forAll->isMetaUsed << endl; - cout << "isDataUsed : " << forAll->isDataUsed << endl; - cout << "isSrcUsed : " << forAll->isSrcUsed << endl; - cout << "isWeightUsed : " << forAll->isWeightUsed << endl; - cout << "isRevMetaUsed : " << forAll->isRevMetaUsed << endl; - cout << "isModifiedNextUsed : " << forAll->isModifiedNextUsed << endl; + // cout << "isRevMeta used ? : " << forAll->isRevMetaUsed << endl; /*if(currentFunc->getParamList().size()!=0) { @@ -1674,7 +1671,9 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll, bool isMainFile) { main.pushString("numBlocks, threadsPerBlock"); main.pushString(">>>"); main.push('('); - main.pushString("V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next"); + main.pushString("V,E,d_meta,d_data,d_src,d_weight"); + if(forAll->isRevMetaUsed) // if d_rev_meta is used, i.e. nodes_to is called + main.pushString(",d_rev_meta,d_modified_next"); // if(currentFunc->getParamList().size()!=0) // main.pushString(","); if (!isOptimized) { @@ -3081,7 +3080,7 @@ void dsl_cpp_generator::generateCudaMemcpy(const char* dVar, const char* cVar, //~ main.NewLine(); } -void dsl_cpp_generator::generateCSRArrays(const char* gId) { +void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { char strBuffer[1024]; sprintf(strBuffer, "int V = %s.num_nodes();", @@ -3105,23 +3104,27 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId) { main.pushstr_newL("int *h_data;"); main.pushstr_newL("int *h_src;"); main.pushstr_newL("int *h_weight;"); - main.pushstr_newL("int *h_rev_meta;"); //done only to handle PR since other doesn't uses it + if(func->isRevMetaUsed) + main.pushstr_newL("int *h_rev_meta;"); //done only to handle PR since other doesn't uses it main.NewLine(); main.pushstr_newL("h_meta = (int *)malloc( (V+1)*sizeof(int));"); main.pushstr_newL("h_data = (int *)malloc( (E)*sizeof(int));"); main.pushstr_newL("h_src = (int *)malloc( (E)*sizeof(int));"); main.pushstr_newL("h_weight = (int *)malloc( (E)*sizeof(int));"); - main.pushstr_newL("h_rev_meta = (int *)malloc( (V+1)*sizeof(int));"); + if(func->isRevMetaUsed) + main.pushstr_newL("h_rev_meta = (int *)malloc( (V+1)*sizeof(int));"); main.NewLine(); main.pushstr_newL("for(int i=0; i<= V; i++) {"); sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); main.pushstr_newL(strBuffer); main.pushstr_newL("h_meta[i] = temp;"); - sprintf(strBuffer, "temp = %s.rev_indexofNodes[i];", gId); - main.pushstr_newL(strBuffer); - main.pushstr_newL("h_rev_meta[i] = temp;"); + if(func->isRevMetaUsed) { + sprintf(strBuffer, "temp = %s.rev_indexofNodes[i];", gId); + main.pushstr_newL(strBuffer); + main.pushstr_newL("h_rev_meta[i] = temp;"); + } main.pushstr_newL("}"); main.NewLine(); @@ -3217,7 +3220,7 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { if (genCSR) { main.pushstr_newL("// CSR BEGIN"); - generateCSRArrays(gId); + generateCSRArrays(gId, proc); //~ sprintf(strBuffer,"int MAX_VAL = 2147483647 ;"); //~ main.pushstr_newL(strBuffer); @@ -3301,8 +3304,10 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { main.pushstr_newL(strBuffer); sprintf(strBuffer, "int* d_weight;"); main.pushstr_newL(strBuffer); - sprintf(strBuffer, "int* d_rev_meta;"); - main.pushstr_newL(strBuffer); + if(currentFunc->isRevMetaUsed) { + sprintf(strBuffer, "int* d_rev_meta;"); + main.pushstr_newL(strBuffer); + } sprintf(strBuffer, "bool* d_modified_next;"); main.pushstr_newL(strBuffer); main.NewLine(); @@ -3311,7 +3316,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMallocStr("d_data", "int", "(E)"); generateCudaMallocStr("d_src", "int", "(E)"); generateCudaMallocStr("d_weight", "int", "(E)"); - generateCudaMallocStr("d_rev_meta", "int", "(V+1)"); + if(currentFunc->isRevMetaUsed) + generateCudaMallocStr("d_rev_meta", "int", "(V+1)"); generateCudaMallocStr("d_modified_next", "bool", "(V)"); main.NewLine(); @@ -3322,7 +3328,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMemCpyStr("d_data", "h_data", "int", "E"); generateCudaMemCpyStr("d_src", "h_src", "int", "E"); generateCudaMemCpyStr("d_weight", "h_weight", "int", "E"); - generateCudaMemCpyStr("d_rev_meta", "h_rev_meta", "int", "(V+1)"); + if(currentFunc->isRevMetaUsed) + generateCudaMemCpyStr("d_rev_meta", "h_rev_meta", "int", "(V+1)"); main.NewLine(); main.pushstr_newL("// CSR END"); diff --git a/src/backends/backend_cuda/dsl_cpp_generator.h b/src/backends/backend_cuda/dsl_cpp_generator.h index 3c6687f0..ad6be779 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.h +++ b/src/backends/backend_cuda/dsl_cpp_generator.h @@ -153,7 +153,7 @@ class dsl_cpp_generator { void generateInitkernelStr(const char* inVarType, const char* inVarName, const char* initVal); - void generateCSRArrays(const char*); + void generateCSRArrays(const char*, Function*); void generateInitkernel(const char* name); void generateLaunchConfig(const char* name); void generateCudaDeviceSync(); diff --git a/src/debug.txt b/src/debug.txt index 27cc2b33..33eafca0 100644 --- a/src/debug.txt +++ b/src/debug.txt @@ -1,218 +1,120 @@ -fileName ../graphcode/sssp_dslV2 +fileName ../graphcode/staticDSLCodes/triangle_counting_dsl Backend Target cuda Type: function - '('Graph Type -','Node Property'<'Type: int'>' -',' -Edge Property'<'Type: int'>' -',' -Node Type ')'currentFuncType check!!0 tempID g funccount 0 -'{'Node Property -'<'Type: bool'>' -';' -'.''(''='+Infinity: INF',' +'{'Type: long '=' -Type Bool: False')'';'TYPE OF NODE OF STATEMENT1 -'.' -'=' -Type Bool: True';''.''='';' -Type: bool - -'='Type Bool: False';' -Keyword fixedPoint -Keyword until -'('':''!'')' -'{' -Keyword-forall: forall -'(' +';'Keyword-forall: forall'(' +Keyword in +'.''('')'')''{'Keyword-forall: forall'(' Keyword in '.''('')''.'filter'(' -EQ_OP -Type Bool: True')' -')' -'{'Keyword-forall: forall -'(' +'<' +')'')''{'Keyword-forall: forall'(' Keyword in -'.''('')'')''{'Edge Type - -'=' -'.''('',' -')'';''<''.'',''.''>' -'=' -'<'Min -'(''.'',' -'.' -'+' -'.'')'',' -Type Bool: True'>'';''}' +'.''('')''.'filter'(' +'>' +')'')''{'Keyword if: if'(''.''('','')'')''{'ADD_ASSIGN ';''}''}'CHECK FILTER TYPE1 '}'CHECK FILTER TYPE1 - -'}''}' +'}'Return: return +';''}' error val 0 at 1 -ANAME1:6 -ANAME2:2 - Setting device bool -ANAME1:6 -ANAME2:2 - Setting device bool FORALL par NAME1:6 -FORALL ParPar NAME2:11 +FORALL ParPar NAME2:2 + TO Set DEVICE BOOL +FORALL par NAME1:6 +FORALL ParPar NAME2:18 FORALL ParParPar NAME3:6 FORALL par NAME1:6 FORALL ParPar NAME2:18 FORALL ParParPar NAME3:6 at 2 -Function Compute_SSSP +Function Compute_TC { Declaration - Procedure Call - Assignment - Assignment - Declaration - Fixed Point + For all { For all { For all { - Declaration - Reduction + If statment + { + Reduction + } } } } } -Initializing 0x55d26d9e5fd0 6 -Initializing 0x55d26d9e61e0 7 -Initializing 0x55d26d9e6840 17 -Initializing 0x55d26d9e6a60 8 -Initializing 0x55d26d9e6cb0 8 -Initializing 0x55d26d9e6eb0 7 -Initializing 0x55d26d9e9340 11 -Initializing 0x55d26d9e7160 6 -Initializing 0x55d26d9e91b0 18 -fpId: finished -Analysing 0x55d26d9e5fd0 6 -Analysing 0x55d26d9e61e0 7 -Analysing 0x55d26d9e6840 17 -Analysing 0x55d26d9e6a60 8 -Analysing 0x55d26d9e6cb0 8 -Analysing 0x55d26d9e6eb0 7 -Analysing 0x55d26d9e9340 11 -Analysing 0x55d26d9e7160 6 -Analysing 0x55d26d9e91b0 18 -Analysing 0x55d26d9e7160 6 -Analysing 0x55d26d9e91b0 18 -Transfering 0x55d26d9e61e0 7 -Transfering 0x55d26d9e6840 17 -Transfering 0x55d26d9e6a60 8 -Transfering 0x55d26d9e6cb0 8 -Transfering 0x55d26d9e6eb0 7 -Transfering 0x55d26d9e9340 11 -Transfering 0x55d26d9e7160 6 -Transfering 0x55d26d9e91b0 18 +Initializing 0x556d2a0d7a00 6 +Initializing 0x556d2a0d7c50 7 +Initializing 0x556d2a0d9b50 18 +Initializing 0x556d2a0d9e20 22 +Analysing 0x556d2a0d7a00 6 +Analysing 0x556d2a0d7c50 7 +Analysing 0x556d2a0d9b50 18 +Analysing 0x556d2a0d9e20 22 +Transfering 0x556d2a0d7c50 7 +Transfering 0x556d2a0d9b50 18 +Transfering 0x556d2a0d9e20 22 { Declaration Tranfer statement - dist CPU to GPU - Tranfer statement - modified CPU to GPU - Procedure Call - Tranfer statement - modified GPU to CPU - Assignment - Tranfer statement - dist GPU to CPU - Assignment - Declaration - Tranfer statement - dist CPU to GPU - Fixed Point + triangle_count CPU to GPU + For all { - Tranfer statement - weight CPU to GPU - Tranfer statement - finished CPU to GPU - Tranfer statement - modified CPU to GPU For all { For all { - Declaration - Reduction + If statment + { + Reduction + } } } - Tranfer statement - modified GPU to CPU - Tranfer statement - finished GPU to CPU } - Tranfer statement - dist CPU to GPU } -fileName sssp_dslV2 +fileName triangle_counting_dsl param :g paramD:d_g ========== SET TRUE -param :dist -paramD:d_dist -param :weight -paramD:d_weight -param :src -paramD:d_src param :g paramD:d_g -param :dist -paramD:d_dist -param :weight -paramD:d_weight -param :src -paramD:d_src - ==VARSIZE:1 -varName:dist -varName:modified - ASST - DEVICE ASST - ASST - DEVICE ASST -varT:bool -varN:finished -IN FIX PT -Size::5 ==VARSIZE:0 +varT:long +varN:triangle_count STMT: For isMainFile val 1 Entered here for forall INN OPTIMESED --------------- _ -_ -_ -_ -isMetaUsed : 65 -isDataUsed : 0 -isSrcUsed : 1 -isWeightUsed : 0 -isRevMetaUsed : 1 -isModifiedNextUsed : 0 -============CHANGED BODY TYPE==============1start of kernel block +start of kernel block +STMT: For +isMainFile val 0 +GenerateForAllSignature = 0 +============CHANGED BODY TYPE==============1 ITERATE Neighbour +src:u + ==VARSIZE:0 =======IF FILTER ==VARSIZE:0 STMT: For isMainFile val 0 GenerateForAllSignature = 0 - ITERATE Neighbour -src:nbr +============CHANGED BODY TYPE==============1 ITERATE Neighbour +src:w + ==VARSIZE:0 +=======IF FILTER ==VARSIZE:0 +=======IF FILTER ------>PROP PRO CAL -LEFT LIST SIZE 2 -VAR:dist -FPID ========> finished + ==VARSIZE:0 +FOR BODY END FOR BODY END finished successfully diff --git a/src/dump b/src/dump new file mode 100644 index 00000000..8d983f5a --- /dev/null +++ b/src/dump @@ -0,0 +1,114 @@ +bool isRevMetaUsedStmt(statement* stmt); +bool isRevMetaUsedExpr(Expression* expr) +{ + if (expr->isUnary()) + { + if (expr->getOperatorType() == OPERATOR_NOT) + return isRevMetaUsedExpr(expr->getUnaryExpr()); + } + else if (expr->isLogical() || expr->isArithmetic() || expr->isRelational()) + { + return isRevMetaUsedExpr(expr->getLeft()) || isRevMetaUsedExpr(expr->getRight()); + } + else if (expr->isProcCallExpr()) + { + proc_callExpr* procCallExpr = (proc_callExpr *)expr; + if (procCallExpr->getMethodId()->getIdentifier() == "nodes_to") + return true; + else + { + list argList = procCallExpr->getArgList(); + for (argument* arg : argList) + { + if(isRevMetaUsedExpr(arg->getExpr()) || isRevMetaUsedStmt(arg->getAssignExpr())) + return true; + } + } + } +} + +bool isRevMetaUsedStmt(statement *stmt) +{ + switch(stmt->getTypeofNode()) + { + case NODE_BLOCKSTMT: + { + blockStatement* blockStmt = (blockStatement *)stmt; + list stmtList = blockStmt->returnStatements(); + for (statement* stmt : stmtList) + { + if(isRevMetaUsedStmt(stmt)) + return true; + } + break; + } + case NODE_ASSIGN: + { + assignment* assignStmt = (assignment *)stmt; + Expression* rightExpr = assignStmt->getExpr(); + return isRevMetaUsedExpr(rightExpr); + break; + } + case NODE_IFSTMT: + { + ifStmt* ifstmt = (ifStmt*) stmt; + Expression* condExpr = ifstmt->getCondition(); + if(isRevMetaUsedExpr(condExpr)) + return true; + if(isRevMetaUsedStmt(ifstmt->getIfBody())) + return true; + if(isRevMetaUsedStmt(ifstmt->getElseBody())) + return true; + break; + } + case NODE_WHILESTMT: + { + whileStmt* whilestmt = (whileStmt*) stmt; + Expression* condExpr = whilestmt->getCondition(); + if(isRevMetaUsedExpr(condExpr)) + return true; + if(isRevMetaUsedStmt(whilestmt->getBody())) + return true; + break; + } + case NODE_DOWHILESTMT: + { + dowhileStmt* dowhilestmt = (dowhileStmt*) stmt; + Expression* condExpr = dowhilestmt->getCondition(); + if(isRevMetaUsedExpr(condExpr)) + return true; + if(isRevMetaUsedStmt(dowhilestmt->getBody())) + return true; + break; + } + case NODE_FORALLSTMT: + { + forallStmt* forallstmt = (forallStmt*) stmt; + if(isRevMetaUsedStmt(forallstmt->getBody())) + return true; + if(forallstmt->hasFilterExpr()) { + Expression* filterExpr = forallstmt->getfilterExpr(); + if(isRevMetaUsedExpr(filterExpr)) + return true; + } + break; + } + case NODE_REDUCTIONCALLSTMT: + { + reductionCallStmt* redCallStmt = (reductionCallStmt*) stmt; + reductionCall* redCall = redCallStmt->getReducCall(); + + + if(redCallStmt->is_reducCall()) + { + for(argument* arg: redCall->getargList()){ + if(arg->isExpr()) + if(isRevMetaUsedExpr(arg->getExpr())) + return true; + } + } + } + default: + ; // added to fix warning! + } +} \ No newline at end of file diff --git a/src/parser/y.tab.c b/src/parser/y.tab.c index 18822071..d28dbc72 100644 --- a/src/parser/y.tab.c +++ b/src/parser/y.tab.c @@ -2996,6 +2996,7 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; + cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); cpp_backend.setOptimized(); } diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 6419b9d9..3a4b3dbb 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -354,6 +354,18 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } } } + else { + proc_callExpr* extractElemFunc = forAll->getExtractElementFunc(); + if(extractElemFunc != NULL) { + Identifier* iteratorMethodId = extractElemFunc->getMethodId(); + string iteratorMethodString(iteratorMethodId->getIdentifier()); + if(iteratorMethodString.compare("nodes_to") == 0) { + forallStmt* parentForall = (forallStmt*) parallelConstruct.back(); + parentForall->isRevMetaUsed = true; + currentFunc->isRevMetaUsed = true; + } + } + } //~ init_curr_SymbolTable(forAll); From 40e9398b4b63b338308433d5d0a0711890d65c9b Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Mon, 20 Feb 2023 00:06:20 +0530 Subject: [PATCH 26/38] opt d_weight gen --- Changes_list.txt | 4 + To_be_done.txt | 10 ++ graphcode/generated_cuda/PageRankDSLV2.cu | 9 +- graphcode/generated_cuda/PageRankDSLV2.h | 6 +- graphcode/generated_cuda/sssp_dslV2.cu | 17 +-- graphcode/generated_cuda/sssp_dslV2.h | 6 +- .../generated_cuda/triangle_counting_dsl.cu | 9 +- .../generated_cuda/triangle_counting_dsl.h | 2 +- graphcode/staticDSLCodes/sssp_dslV2 | 4 +- src/Makefile | 2 +- src/analyser/deviceVars/getUsedVars.cpp | 5 - src/ast/ASTNodeTypes.hpp | 126 ++++++++++++++++-- .../backend_cuda/dsl_cpp_generator.cpp | 80 +++++++---- src/debug.txt | 60 +++++++-- src/parser/lrparser.y | 1 - src/parser/y.tab.c | 1 - src/symbolutil/SymbolTableBuilder.cpp | 21 ++- 17 files changed, 264 insertions(+), 99 deletions(-) create mode 100644 To_be_done.txt diff --git a/Changes_list.txt b/Changes_list.txt index b675caa7..ae5c5bbd 100644 --- a/Changes_list.txt +++ b/Changes_list.txt @@ -3,3 +3,7 @@ lrparser.y : LINE 574 uncomment the line to activate the -o (optimize) option For fixing the segmentation fault in PageRank_DSL_V2 :- SymbolTableBuilder.cpp : LINE 375 added a check to see if the forall statement is a for loop or a forall loop deviceVarsAnalyser.h : getTempVar() LINE 284 removed static cast and used strcpy since it previously generated random characters + +added fp_idnode to identifier +analyser/deviceVars/getUsedVars.cpp: LINE 230 fixed fp for sssp +src/symbolutil/SymbolTableBuilder.cpp: LINE 278 added fp node \ No newline at end of file diff --git a/To_be_done.txt b/To_be_done.txt new file mode 100644 index 00000000..12983c58 --- /dev/null +++ b/To_be_done.txt @@ -0,0 +1,10 @@ +Analysis: + To analyse and figure out the formal parameters required for parallel computation. + Stop generating the unnecessary formal parameters. + + d_meta - yet to be done + d_data - yet to be done + d_src - yet to be done + d_weight - fixed for all occurrences + d_rev_meta - fixed for all occurrences + d_var_nxt - fixed function parameters and function calls. Yet to stop generating. \ No newline at end of file diff --git a/graphcode/generated_cuda/PageRankDSLV2.cu b/graphcode/generated_cuda/PageRankDSLV2.cu index 1efaeed9..b7839944 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.cu +++ b/graphcode/generated_cuda/PageRankDSLV2.cu @@ -16,13 +16,11 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, int *h_meta; int *h_data; int *h_src; - int *h_weight; int *h_rev_meta; h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); h_src = (int *)malloc( (E)*sizeof(int)); - h_weight = (int *)malloc( (E)*sizeof(int)); h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); for(int i=0; i<= V; i++) { @@ -37,29 +35,24 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, h_data[i] = temp; temp = g.srcList[i]; h_src[i] = temp; - temp = edgeLen[i]; - h_weight[i] = temp; } int* d_meta; int* d_data; int* d_src; - int* d_weight; int* d_rev_meta; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); cudaMalloc(&d_src, sizeof(int)*(E)); - cudaMalloc(&d_weight, sizeof(int)*(E)); cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); // CSR END @@ -105,7 +98,7 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); - Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_pageRank,d_pageRank_nxt); + Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_pageRank,d_pageRank_nxt); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/PageRankDSLV2.h b/graphcode/generated_cuda/PageRankDSLV2.h index 4be99536..a0286ab0 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.h +++ b/graphcode/generated_cuda/PageRankDSLV2.h @@ -19,13 +19,9 @@ __device__ int maxIter ; __device__ float num_nodes ; // DEVICE ASSTMENT in .h -; // DEVICE ASSTMENT in .h - __device__ float diff ; // DEVICE ASSTMENT in .h -; // DEVICE ASSTMENT in .h - -__global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,float* d_pageRank,float* d_pageRank_nxt){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,float* d_pageRank,float* d_pageRank_nxt){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; diff --git a/graphcode/generated_cuda/sssp_dslV2.cu b/graphcode/generated_cuda/sssp_dslV2.cu index b2857a24..ec5586bc 100644 --- a/graphcode/generated_cuda/sssp_dslV2.cu +++ b/graphcode/generated_cuda/sssp_dslV2.cu @@ -1,7 +1,7 @@ // FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after #include "sssp_dslV2.h" -void Compute_SSSP(graph& g,int* dist,int* weight,int src +void Compute_SSSP(graph& g,int* dist,int* wt,int src ) { @@ -17,19 +17,15 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src int *h_data; int *h_src; int *h_weight; - int *h_rev_meta; h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); h_src = (int *)malloc( (E)*sizeof(int)); h_weight = (int *)malloc( (E)*sizeof(int)); - h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); for(int i=0; i<= V; i++) { int temp = g.indexofNodes[i]; h_meta[i] = temp; - temp = g.rev_indexofNodes[i]; - h_rev_meta[i] = temp; } for(int i=0; i< E; i++) { @@ -46,21 +42,18 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src int* d_data; int* d_src; int* d_weight; - int* d_rev_meta; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); cudaMalloc(&d_src, sizeof(int)*(E)); cudaMalloc(&d_weight, sizeof(int)*(E)); - cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); // CSR END //LAUNCH CONFIG @@ -81,8 +74,8 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src int* d_dist; cudaMalloc(&d_dist, sizeof(int)*(V)); - int* d_weight; - cudaMalloc(&d_weight, sizeof(int)*(E)); + int* d_wt; + cudaMalloc(&d_wt, sizeof(int)*(E)); //BEGIN DSL PARSING @@ -106,7 +99,7 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src finished = true; cudaMemcpyToSymbol(::finished, &finished, sizeof(bool), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::finished, &finished, sizeof(bool), 0, cudaMemcpyHostToDevice); - Compute_SSSP_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_modified,d_weight,d_dist); + Compute_SSSP_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_modified,d_modified_next,d_dist,d_wt); cudaDeviceSynchronize(); @@ -130,5 +123,5 @@ void Compute_SSSP(graph& g,int* dist,int* weight,int src printf("GPU Time: %.6f ms\n", milliseconds); cudaMemcpy( dist, d_dist, sizeof(int)*(V), cudaMemcpyDeviceToHost); - cudaMemcpy( weight, d_weight, sizeof(int)*(E), cudaMemcpyDeviceToHost); + cudaMemcpy( wt, d_wt, sizeof(int)*(E), cudaMemcpyDeviceToHost); } //end FUN diff --git a/graphcode/generated_cuda/sssp_dslV2.h b/graphcode/generated_cuda/sssp_dslV2.h index 606b1c50..78b3d46d 100644 --- a/graphcode/generated_cuda/sssp_dslV2.h +++ b/graphcode/generated_cuda/sssp_dslV2.h @@ -9,14 +9,14 @@ #include "../libcuda.cuh" #include -void Compute_SSSP(graph& g,int* dist,int* weight,int src +void Compute_SSSP(graph& g,int* dist,int* wt,int src ); __device__ bool finished ; // DEVICE ASSTMENT in .h -__global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,bool* d_modified,int* d_weight,int* d_dist){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight,bool* d_modified,bool* d_modified_next,int* d_dist,int* d_wt){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; @@ -24,7 +24,7 @@ __global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data, int* for (int edge = d_meta[v]; edge < d_meta[v+1]; edge++) { // FOR NBR ITR int nbr = d_data[edge]; int e = edge; - int dist_new = d_dist[v] + d_weight[e]; + int dist_new = d_dist[v] + d_wt[e]; bool modified_new = true; if(d_dist[v]!= INT_MAX && d_dist[nbr] > dist_new) { diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu index 1cc835f7..970b8fa2 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.cu +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -15,12 +15,10 @@ void Compute_TC(graph& g) int *h_meta; int *h_data; int *h_src; - int *h_weight; h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); h_src = (int *)malloc( (E)*sizeof(int)); - h_weight = (int *)malloc( (E)*sizeof(int)); for(int i=0; i<= V; i++) { int temp = g.indexofNodes[i]; @@ -32,27 +30,22 @@ void Compute_TC(graph& g) h_data[i] = temp; temp = g.srcList[i]; h_src[i] = temp; - temp = edgeLen[i]; - h_weight[i] = temp; } int* d_meta; int* d_data; int* d_src; - int* d_weight; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); cudaMalloc(&d_src, sizeof(int)*(E)); - cudaMalloc(&d_weight, sizeof(int)*(E)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); // CSR END //LAUNCH CONFIG @@ -75,7 +68,7 @@ void Compute_TC(graph& g) long triangle_count = 0; // asst in .cu cudaMemcpyToSymbol(::triangle_count, &triangle_count, sizeof(long), 0, cudaMemcpyHostToDevice); - Compute_TC_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight); + Compute_TC_kernel<<>>(V,E,d_meta,d_data,d_src); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/triangle_counting_dsl.h b/graphcode/generated_cuda/triangle_counting_dsl.h index d761fafd..5259dc1e 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.h +++ b/graphcode/generated_cuda/triangle_counting_dsl.h @@ -15,7 +15,7 @@ void Compute_TC(graph& g); __device__ long triangle_count ; // DEVICE ASSTMENT in .h -__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d_src){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; diff --git a/graphcode/staticDSLCodes/sssp_dslV2 b/graphcode/staticDSLCodes/sssp_dslV2 index 11ec0e21..cc8fc4a3 100644 --- a/graphcode/staticDSLCodes/sssp_dslV2 +++ b/graphcode/staticDSLCodes/sssp_dslV2 @@ -1,4 +1,4 @@ -function Compute_SSSP(Graph g, propNode dist, propEdge weight, node src) +function Compute_SSSP(Graph g, propNode dist, propEdge wt, node src) { propNode modified; @@ -13,7 +13,7 @@ function Compute_SSSP(Graph g, propNode dist, propEdge weight, node sr forall(nbr in g.neighbors(v)) { edge e = g.get_edge(v, nbr); - = ; + = ; } } } diff --git a/src/Makefile b/src/Makefile index 29e0ecb6..71ff11e7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -107,5 +107,5 @@ clean_windows: clean: #~ rm -f $(EXPENDABLES) - rm bin/*.o StarPlat StarPlat.exe + rm bin/*.o StarPlat rmdir bin diff --git a/src/analyser/deviceVars/getUsedVars.cpp b/src/analyser/deviceVars/getUsedVars.cpp index bac58732..a9dcac5e 100644 --- a/src/analyser/deviceVars/getUsedVars.cpp +++ b/src/analyser/deviceVars/getUsedVars.cpp @@ -36,9 +36,6 @@ usedVariables deviceVarsAnalyser::getVarsExpr(Expression *expr) { result = getVarsExpr(expr->getLeft()); result.merge(getVarsExpr(expr->getRight())); - } - else if(expr->isProcCallExpr()) { - } return result; } @@ -146,8 +143,6 @@ usedVariables deviceVarsAnalyser::getVarsForAll(forallStmt *stmt) if(arg->getExpr() != nullptr) currVars.merge(getVarsExpr(arg->getExpr())); } - stmt->isRevMetaUsed = true; - stmt->isSrcUsed = true; } else if(!stmt->isSourceField()) { diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index d01ad4db..248350eb 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -418,14 +418,14 @@ class Function:public ASTNode bool hasReturn; int funcType ; + list doubleBufferVars; // the propnodes which need to be double buffered + bool isMetaUsed; // if d_meta is used in function + bool isDataUsed; // if d_data is used in function + bool isSrcUsed; // if d_src is used in function + bool isWeightUsed; // if d_weight is used in function + bool isRevMetaUsed; // if d_rev_meta is used in function public: - bool isMetaUsed = false; // if d_meta is used in function - bool isDataUsed = false; // if d_data is used in function - bool isSrcUsed = false; // if d_src is used in function - bool isWeightUsed = false; // if d_weight is used in function - bool isRevMetaUsed = false; // if d_rev_meta is used in function - bool isModifiedNextUsed = false; // if d_modified_next is used in function Function() { functionId=NULL; @@ -433,6 +433,11 @@ class Function:public ASTNode funcType = 0; initialLockDecl = false; createSymbTab(); + isMetaUsed = false; + isDataUsed = false; + isSrcUsed = false; + isWeightUsed = false; + isRevMetaUsed = false; } static Function* createFunctionNode(Identifier* funcId,list paramList) @@ -551,7 +556,55 @@ class Function:public ASTNode return hasReturn ; } + + bool getIsMetaUsed() { + return isMetaUsed; + } + + void setIsMetaUsed() { + this->isMetaUsed = true; + } + bool getIsDataUsed() { + return isDataUsed; + } + + void setIsDataUsed() { + this->isDataUsed = true; + } + + bool getIsSrcUsed() { + return isSrcUsed; + } + + void setIsSrcUsed() { + this->isSrcUsed = true; + } + + bool getIsWeightUsed() { + return isWeightUsed; + } + + void setIsWeightUsed() { + this->isWeightUsed = true; + } + + bool getIsRevMetaUsed() { + return isRevMetaUsed; + } + + void setRevMetaUsed() { + this->isRevMetaUsed = true; + } + + void addDoubleBufferVar(Identifier* var) { + doubleBufferVars.push_back(var); + } + + list getDoubleBufferVars() { + return doubleBufferVars; + } + }; class Type:public ASTNode @@ -1907,10 +1960,14 @@ class fixedPointStmt:public statement Expression* assocExpr; list usedVars; + list doubleBufferVars; // the propnodes which need to be double buffered + bool isMetaUsed; // if d_meta is used in forall + bool isDataUsed; // if d_data is used in forall + bool isSrcUsed; // if d_src is used in forall + bool isWeightUsed; // if d_weight is used in forall + bool isRevMetaUsed; // if d_rev_meta is used in forall public: - bool isRevMetaUsed = false; - forallStmt() { iterator=NULL; @@ -1924,6 +1981,11 @@ class fixedPointStmt:public statement isSourceId=false; createSymbTab(); filterExprAssoc = false; + isMetaUsed = false; + isDataUsed = false; + isSrcUsed = false; + isWeightUsed = false; + isRevMetaUsed = false; } static forallStmt* createforallStmt(Identifier* iterator,Identifier* sourceGraph,proc_callExpr* extractElemFunc,statement* body,Expression* filterExpr,bool isforall) @@ -2115,6 +2177,54 @@ class fixedPointStmt:public statement } } + bool getIsMetaUsed() { + return isMetaUsed; + } + + void setIsMetaUsed() { + this->isMetaUsed = true; + } + + bool getIsDataUsed() { + return isDataUsed; + } + + void setIsDataUsed() { + this->isDataUsed = true; + } + + bool getIsSrcUsed() { + return isSrcUsed; + } + + void setIsSrcUsed() { + this->isSrcUsed = true; + } + + bool getIsWeightUsed() { + return isWeightUsed; + } + + void setIsWeightUsed() { + this->isWeightUsed = true; + } + + bool getIsRevMetaUsed() { + return isRevMetaUsed; + } + + void setRevMetaUsed() { + this->isRevMetaUsed = true; + } + + void addDoubleBufferVar(Identifier* var) { + doubleBufferVars.push_back(var); + } + + list getDoubleBufferVars() { + return doubleBufferVars; + } + }; class reductionCall:public ASTNode { diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index 31cea38d..dc80de05 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -1548,11 +1548,12 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { header.pushString(getCurrentFunc()->getIdentifier()->getIdentifier()); header.pushString("_kernel"); - header.pushString("(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight"); - if(forAll->isRevMetaUsed) - header.pushString(", int *d_rev_meta,bool *d_modified_next"); - - // cout << "isRevMeta used ? : " << forAll->isRevMetaUsed << endl; + header.pushString("(int V, int E, int* d_meta, int* d_data, int* d_src"); + if(forAll->getIsWeightUsed()) + header.pushString(", int* d_weight"); + if(forAll->getIsRevMetaUsed()) + header.pushString(", int *d_rev_meta"); + // header.pushString(",bool *d_modified_next"); /*if(currentFunc->getParamList().size()!=0) { @@ -1565,6 +1566,11 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { char strBuffer[1024]; sprintf(strBuffer, ",%s d_%s", convertToCppType(type), iden->getIdentifier()); header.pushString(/*createParamName(*/ strBuffer); + if(iden->getSymbolInfo()->getId()->get_fp_association()) { // If id has a fp association then _next must also be added as a parameter + char strBuffer[1024]; + sprintf(strBuffer, ",%s d_%s_next", convertToCppType(type), iden->getIdentifier()); + header.pushString(/*createParamName(*/ strBuffer); + } } } @@ -1671,9 +1677,12 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll, bool isMainFile) { main.pushString("numBlocks, threadsPerBlock"); main.pushString(">>>"); main.push('('); - main.pushString("V,E,d_meta,d_data,d_src,d_weight"); - if(forAll->isRevMetaUsed) // if d_rev_meta is used, i.e. nodes_to is called - main.pushString(",d_rev_meta,d_modified_next"); + main.pushString("V,E,d_meta,d_data,d_src"); + if(forAll->getIsWeightUsed()) // if d_weight is used, can never be used as of now + main.pushString(",d_weight"); + if(forAll->getIsRevMetaUsed()) // if d_rev_meta is used, i.e. nodes_to is called + main.pushString(",d_rev_meta"); + // main.pushString(",d_modified_next"); // if(currentFunc->getParamList().size()!=0) // main.pushString(","); if (!isOptimized) { @@ -1697,6 +1706,11 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll, bool isMainFile) { main.pushString(","); main.pushString("d_"); main.pushString(/*createParamName(*/ iden->getIdentifier()); + if(iden->getSymbolInfo()->getId()->get_fp_association()) { // If id has a fp association then _next must also be added as a parameter + char strBuffer[1024]; + sprintf(strBuffer, ",d_%s_next", iden->getIdentifier()); + main.pushString(/*createParamName(*/ strBuffer); + } } } } @@ -2025,6 +2039,8 @@ void dsl_cpp_generator::generateVariableDecl(declaration* declStmt, cout << "varT:" << varType << endl; cout << "varN:" << varName << endl; + bool declInHeader = !isMainFile; // if variable is declared in header file, to stop generating unnecessary commas and newline + //~ generateExtraDeviceVariable(varType,varName,"1"); //~ generateHeaderDeviceVariable(varType,varName); @@ -2041,10 +2057,12 @@ void dsl_cpp_generator::generateVariableDecl(declaration* declStmt, if (declStmt->getInGPU()) { sprintf(strBuffer, "__device__ %s %s ", varType, varName); header.pushString(strBuffer); + declInHeader = true; } } else { sprintf(strBuffer, "__device__ %s %s ", varType, varName); header.pushString(strBuffer); + declInHeader = true; } } /// REPLICATE ON HOST AND DEVICE @@ -2083,8 +2101,10 @@ void dsl_cpp_generator::generateVariableDecl(declaration* declStmt, //getDefaultValueforTypes(type->gettypeId()); // targetFile.pushstr_newL(";"); }*/ - header.pushstr_newL("; // DEVICE ASSTMENT in .h"); - header.NewLine(); + if(declInHeader) { + header.pushstr_newL("; // DEVICE ASSTMENT in .h"); + header.NewLine(); + } main.pushstr_newL("; // asst in .cu"); main.NewLine(); @@ -3091,7 +3111,7 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.NewLine(); main.pushstr_newL("printf(\"#nodes:%d\\n\",V);"); - main.pushstr_newL("printf(\"#edges:\%d\\n\",E);"); + main.pushstr_newL("printf(\"#edges:%d\\n\",E);"); //~ main.pushstr_newL("printf(\"#srces:\%d\\n\",sourceSet.size()); /// TODO get from var"); sprintf(strBuffer, "int* edgeLen = %s.getEdgeLen();", @@ -3103,16 +3123,18 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL("int *h_meta;"); main.pushstr_newL("int *h_data;"); main.pushstr_newL("int *h_src;"); - main.pushstr_newL("int *h_weight;"); - if(func->isRevMetaUsed) - main.pushstr_newL("int *h_rev_meta;"); //done only to handle PR since other doesn't uses it + if(func->getIsWeightUsed()) + main.pushstr_newL("int *h_weight;"); + if(func->getIsRevMetaUsed()) + main.pushstr_newL("int *h_rev_meta;"); //done only to handle PR since other don't use it main.NewLine(); main.pushstr_newL("h_meta = (int *)malloc( (V+1)*sizeof(int));"); main.pushstr_newL("h_data = (int *)malloc( (E)*sizeof(int));"); main.pushstr_newL("h_src = (int *)malloc( (E)*sizeof(int));"); - main.pushstr_newL("h_weight = (int *)malloc( (E)*sizeof(int));"); - if(func->isRevMetaUsed) + if(func->getIsWeightUsed()) + main.pushstr_newL("h_weight = (int *)malloc( (E)*sizeof(int));"); + if(func->getIsRevMetaUsed()) main.pushstr_newL("h_rev_meta = (int *)malloc( (V+1)*sizeof(int));"); main.NewLine(); @@ -3120,7 +3142,7 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); main.pushstr_newL(strBuffer); main.pushstr_newL("h_meta[i] = temp;"); - if(func->isRevMetaUsed) { + if(func->getIsRevMetaUsed()) { sprintf(strBuffer, "temp = %s.rev_indexofNodes[i];", gId); main.pushstr_newL(strBuffer); main.pushstr_newL("h_rev_meta[i] = temp;"); @@ -3135,8 +3157,10 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { sprintf(strBuffer, "temp = %s.srcList[i];", gId); main.pushstr_newL(strBuffer); main.pushstr_newL("h_src[i] = temp;"); - main.pushstr_newL("temp = edgeLen[i];"); - main.pushstr_newL("h_weight[i] = temp;"); + if(func->getIsWeightUsed()) { + main.pushstr_newL("temp = edgeLen[i];"); + main.pushstr_newL("h_weight[i] = temp;"); + } main.pushstr_newL("}"); main.NewLine(); @@ -3302,9 +3326,11 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { main.pushstr_newL(strBuffer); sprintf(strBuffer, "int* d_src;"); main.pushstr_newL(strBuffer); - sprintf(strBuffer, "int* d_weight;"); - main.pushstr_newL(strBuffer); - if(currentFunc->isRevMetaUsed) { + if(currentFunc->getIsWeightUsed()) { // checking if weight is used + sprintf(strBuffer, "int* d_weight;"); + main.pushstr_newL(strBuffer); + } + if(currentFunc->getIsRevMetaUsed()) { // checking if rev_meta is used sprintf(strBuffer, "int* d_rev_meta;"); main.pushstr_newL(strBuffer); } @@ -3315,8 +3341,9 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMallocStr("d_meta", "int", "(1+V)"); generateCudaMallocStr("d_data", "int", "(E)"); generateCudaMallocStr("d_src", "int", "(E)"); - generateCudaMallocStr("d_weight", "int", "(E)"); - if(currentFunc->isRevMetaUsed) + if(currentFunc->getIsWeightUsed()) // checking if weight is used + generateCudaMallocStr("d_weight", "int", "(E)"); + if(currentFunc->getIsRevMetaUsed()) // checking if rev_meta is used generateCudaMallocStr("d_rev_meta", "int", "(V+1)"); generateCudaMallocStr("d_modified_next", "bool", "(V)"); @@ -3327,8 +3354,9 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMemCpyStr("d_meta", "h_meta", "int", "V+1"); generateCudaMemCpyStr("d_data", "h_data", "int", "E"); generateCudaMemCpyStr("d_src", "h_src", "int", "E"); - generateCudaMemCpyStr("d_weight", "h_weight", "int", "E"); - if(currentFunc->isRevMetaUsed) + if(currentFunc->getIsWeightUsed()) // checking if weight is used + generateCudaMemCpyStr("d_weight", "h_weight", "int", "E"); + if(currentFunc->getIsRevMetaUsed()) // checking if rev_meta is used generateCudaMemCpyStr("d_rev_meta", "h_rev_meta", "int", "(V+1)"); main.NewLine(); diff --git a/src/debug.txt b/src/debug.txt index 33eafca0..5add5117 100644 --- a/src/debug.txt +++ b/src/debug.txt @@ -20,20 +20,56 @@ Keyword in '.''('')''.'filter'(' '>' ')'')''{'Keyword if: if'(''.''('','')'')''{'ADD_ASSIGN ';''}''}'CHECK FILTER TYPE1 +ForallStmt created +0 +0 +0 +0 +0 '}'CHECK FILTER TYPE1 -'}'Return: return +ForallStmt created +0 +0 +0 +0 +0 +'}'ForallStmt created +0 +0 +0 +0 +0 +Return: return ';''}' error val 0 at 1 FORALL par NAME1:6 FORALL ParPar NAME2:2 TO Set DEVICE BOOL +Parent of forAll: +0 +0 +0 +0 +0 FORALL par NAME1:6 FORALL ParPar NAME2:18 FORALL ParParPar NAME3:6 +Parent of forAll: +0 +0 +0 +0 +0 FORALL par NAME1:6 FORALL ParPar NAME2:18 FORALL ParParPar NAME3:6 +Parent of forAll: +0 +0 +0 +0 +0 at 2 Function Compute_TC { @@ -52,17 +88,17 @@ Function Compute_TC } } } -Initializing 0x556d2a0d7a00 6 -Initializing 0x556d2a0d7c50 7 -Initializing 0x556d2a0d9b50 18 -Initializing 0x556d2a0d9e20 22 -Analysing 0x556d2a0d7a00 6 -Analysing 0x556d2a0d7c50 7 -Analysing 0x556d2a0d9b50 18 -Analysing 0x556d2a0d9e20 22 -Transfering 0x556d2a0d7c50 7 -Transfering 0x556d2a0d9b50 18 -Transfering 0x556d2a0d9e20 22 +Initializing 0x5646c2121a20 6 +Initializing 0x5646c2121c70 7 +Initializing 0x5646c2123b90 18 +Initializing 0x5646c2123e70 22 +Analysing 0x5646c2121a20 6 +Analysing 0x5646c2121c70 7 +Analysing 0x5646c2123b90 18 +Analysing 0x5646c2123e70 22 +Transfering 0x5646c2121c70 7 +Transfering 0x5646c2123b90 18 +Transfering 0x5646c2123e70 22 { Declaration Tranfer statement diff --git a/src/parser/lrparser.y b/src/parser/lrparser.y index 14774612..2e573011 100644 --- a/src/parser/lrparser.y +++ b/src/parser/lrparser.y @@ -571,7 +571,6 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; - cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); cpp_backend.setOptimized(); } diff --git a/src/parser/y.tab.c b/src/parser/y.tab.c index d28dbc72..18822071 100644 --- a/src/parser/y.tab.c +++ b/src/parser/y.tab.c @@ -2996,7 +2996,6 @@ int main(int argc,char **argv) drAnalyser.analyse(frontEndContext.getFuncList()); deviceVarsAnalyser dvAnalyser; - cpp_backend.setOptimized(); dvAnalyser.analyse(frontEndContext.getFuncList()); cpp_backend.setOptimized(); } diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 3a4b3dbb..9246d3d0 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -354,19 +354,27 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } } } - else { + else { // if for all statement has a proc call proc_callExpr* extractElemFunc = forAll->getExtractElementFunc(); if(extractElemFunc != NULL) { Identifier* iteratorMethodId = extractElemFunc->getMethodId(); string iteratorMethodString(iteratorMethodId->getIdentifier()); - if(iteratorMethodString.compare("nodes_to") == 0) { - forallStmt* parentForall = (forallStmt*) parallelConstruct.back(); - parentForall->isRevMetaUsed = true; - currentFunc->isRevMetaUsed = true; + if(iteratorMethodString.compare("nodes_to") == 0) { // if the proc call is nodes_to, d_rev_meta is needed + forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; + parentForall->setRevMetaUsed(); + currentFunc->setRevMetaUsed(); } } } + cout << "Parent of forAll: \n"; + cout << ((forallStmt*)parallelConstruct[0])->getIsMetaUsed() << endl; + cout << ((forallStmt*)parallelConstruct[0])->getIsDataUsed() << endl; + cout << ((forallStmt*)parallelConstruct[0])->getIsSrcUsed() << endl; + cout << ((forallStmt*)parallelConstruct[0])->getIsWeightUsed() << endl; + cout << ((forallStmt*)parallelConstruct[0])->getIsRevMetaUsed() << endl; + + //~ init_curr_SymbolTable(forAll); //~ Type* type = (Type*) Util::createNodeEdgeTypeNode(TYPE_NODE); @@ -547,7 +555,8 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) parallelConstruct.push_back(iBFS); } - + currentFunc->setIsWeightUsed(); // d_weight is used in itrbfs + buildForStatements(iBFS->getBody()); iterateReverseBFS* iRevBFS = iBFS->getRBFS(); iRevBFS->addAccumulateAssignment(); From 587791dd476ec8ebe6f0e307401d969e2d9c6542 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Mon, 20 Feb 2023 01:02:56 +0530 Subject: [PATCH 27/38] opt d_data gen --- To_be_done.txt | 7 +- graphcode/generated_cuda/PageRankDSLV2.cu | 14 +- graphcode/generated_cuda/PageRankDSLV2.h | 2 +- .../generated_cuda/triangle_counting_dsl.cu | 5 - src/ast/ASTNodeTypes.hpp | 4 +- .../backend_cuda/dsl_cpp_generator.cpp | 76 +++--- src/debug.txt | 236 ++++++++++++------ src/symbolutil/SymbolTableBuilder.cpp | 16 +- 8 files changed, 232 insertions(+), 128 deletions(-) diff --git a/To_be_done.txt b/To_be_done.txt index 12983c58..da74c4fa 100644 --- a/To_be_done.txt +++ b/To_be_done.txt @@ -3,8 +3,11 @@ Analysis: Stop generating the unnecessary formal parameters. d_meta - yet to be done - d_data - yet to be done + d_data - fixed for all occurrences d_src - yet to be done d_weight - fixed for all occurrences d_rev_meta - fixed for all occurrences - d_var_nxt - fixed function parameters and function calls. Yet to stop generating. \ No newline at end of file + d_var_nxt - fixed function parameters and function calls. Yet to stop generating. + + Testing: + Yet to be done \ No newline at end of file diff --git a/graphcode/generated_cuda/PageRankDSLV2.cu b/graphcode/generated_cuda/PageRankDSLV2.cu index b7839944..12b398ea 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.cu +++ b/graphcode/generated_cuda/PageRankDSLV2.cu @@ -14,12 +14,10 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, int* edgeLen = g.getEdgeLen(); int *h_meta; - int *h_data; int *h_src; int *h_rev_meta; h_meta = (int *)malloc( (V+1)*sizeof(int)); - h_data = (int *)malloc( (E)*sizeof(int)); h_src = (int *)malloc( (E)*sizeof(int)); h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); @@ -30,28 +28,18 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, h_rev_meta[i] = temp; } - for(int i=0; i< E; i++) { - int temp = g.edgeList[i]; - h_data[i] = temp; - temp = g.srcList[i]; - h_src[i] = temp; - } - int* d_meta; - int* d_data; int* d_src; int* d_rev_meta; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); - cudaMalloc(&d_data, sizeof(int)*(E)); cudaMalloc(&d_src, sizeof(int)*(E)); cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); - cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); @@ -98,7 +86,7 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); - Compute_PR_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_pageRank,d_pageRank_nxt); + Compute_PR_kernel<<>>(V,E,d_meta,d_src,d_rev_meta,d_pageRank,d_pageRank_nxt); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/PageRankDSLV2.h b/graphcode/generated_cuda/PageRankDSLV2.h index a0286ab0..27fcb9d9 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.h +++ b/graphcode/generated_cuda/PageRankDSLV2.h @@ -21,7 +21,7 @@ __device__ float num_nodes ; // DEVICE ASSTMENT in .h __device__ float diff ; // DEVICE ASSTMENT in .h -__global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,float* d_pageRank,float* d_pageRank_nxt){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_src, int *d_rev_meta,float* d_pageRank,float* d_pageRank_nxt){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu index 970b8fa2..05703566 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.cu +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -20,11 +20,6 @@ void Compute_TC(graph& g) h_data = (int *)malloc( (E)*sizeof(int)); h_src = (int *)malloc( (E)*sizeof(int)); - for(int i=0; i<= V; i++) { - int temp = g.indexofNodes[i]; - h_meta[i] = temp; - } - for(int i=0; i< E; i++) { int temp = g.edgeList[i]; h_data[i] = temp; diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 248350eb..1cb21367 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -593,7 +593,7 @@ class Function:public ASTNode return isRevMetaUsed; } - void setRevMetaUsed() { + void setIsRevMetaUsed() { this->isRevMetaUsed = true; } @@ -2213,7 +2213,7 @@ class fixedPointStmt:public statement return isRevMetaUsed; } - void setRevMetaUsed() { + void setIsRevMetaUsed() { this->isRevMetaUsed = true; } diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index dc80de05..92e1148c 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -1548,7 +1548,10 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { header.pushString(getCurrentFunc()->getIdentifier()->getIdentifier()); header.pushString("_kernel"); - header.pushString("(int V, int E, int* d_meta, int* d_data, int* d_src"); + header.pushString("(int V, int E, int* d_meta"); + if(forAll->getIsDataUsed()) + header.pushString(", int* d_data"); + header.pushString(", int* d_src"); if(forAll->getIsWeightUsed()) header.pushString(", int* d_weight"); if(forAll->getIsRevMetaUsed()) @@ -1677,7 +1680,10 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll, bool isMainFile) { main.pushString("numBlocks, threadsPerBlock"); main.pushString(">>>"); main.push('('); - main.pushString("V,E,d_meta,d_data,d_src"); + main.pushString("V,E,d_meta"); + if(forAll->getIsDataUsed()) // if d_data is used, i.e. neighbors or is_an_edge is called + main.pushString(",d_data"); + main.pushString(",d_src"); if(forAll->getIsWeightUsed()) // if d_weight is used, can never be used as of now main.pushString(",d_weight"); if(forAll->getIsRevMetaUsed()) // if d_rev_meta is used, i.e. nodes_to is called @@ -3121,7 +3127,8 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { // These H & D arrays of CSR do not change. Hence hardcoded! main.pushstr_newL("int *h_meta;"); - main.pushstr_newL("int *h_data;"); + if(func->getIsDataUsed()) + main.pushstr_newL("int *h_data;"); main.pushstr_newL("int *h_src;"); if(func->getIsWeightUsed()) main.pushstr_newL("int *h_weight;"); @@ -3130,7 +3137,8 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.NewLine(); main.pushstr_newL("h_meta = (int *)malloc( (V+1)*sizeof(int));"); - main.pushstr_newL("h_data = (int *)malloc( (E)*sizeof(int));"); + if(func->getIsDataUsed()) + main.pushstr_newL("h_data = (int *)malloc( (E)*sizeof(int));"); main.pushstr_newL("h_src = (int *)malloc( (E)*sizeof(int));"); if(func->getIsWeightUsed()) main.pushstr_newL("h_weight = (int *)malloc( (E)*sizeof(int));"); @@ -3138,31 +3146,37 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL("h_rev_meta = (int *)malloc( (V+1)*sizeof(int));"); main.NewLine(); - main.pushstr_newL("for(int i=0; i<= V; i++) {"); - sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); - main.pushstr_newL(strBuffer); - main.pushstr_newL("h_meta[i] = temp;"); - if(func->getIsRevMetaUsed()) { - sprintf(strBuffer, "temp = %s.rev_indexofNodes[i];", gId); + if(func->getIsMetaUsed() || func->getIsRevMetaUsed()) { + main.pushstr_newL("for(int i=0; i<= V; i++) {"); + sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); main.pushstr_newL(strBuffer); - main.pushstr_newL("h_rev_meta[i] = temp;"); + main.pushstr_newL("h_meta[i] = temp;"); + if(func->getIsRevMetaUsed()) { + sprintf(strBuffer, "temp = %s.rev_indexofNodes[i];", gId); + main.pushstr_newL(strBuffer); + main.pushstr_newL("h_rev_meta[i] = temp;"); + } + main.pushstr_newL("}"); + main.NewLine(); } - main.pushstr_newL("}"); - main.NewLine(); - main.pushstr_newL("for(int i=0; i< E; i++) {"); - sprintf(strBuffer, "int temp = %s.edgeList[i];", gId); - main.pushstr_newL(strBuffer); - main.pushstr_newL("h_data[i] = temp;"); - sprintf(strBuffer, "temp = %s.srcList[i];", gId); - main.pushstr_newL(strBuffer); - main.pushstr_newL("h_src[i] = temp;"); - if(func->getIsWeightUsed()) { - main.pushstr_newL("temp = edgeLen[i];"); - main.pushstr_newL("h_weight[i] = temp;"); + if(func->getIsDataUsed() || func->getIsSrcUsed() || func->getIsWeightUsed()) { + main.pushstr_newL("for(int i=0; i< E; i++) {"); + if(func->getIsDataUsed()) { + sprintf(strBuffer, "int temp = %s.edgeList[i];", gId); + main.pushstr_newL(strBuffer); + main.pushstr_newL("h_data[i] = temp;"); + } + sprintf(strBuffer, "temp = %s.srcList[i];", gId); + main.pushstr_newL(strBuffer); + main.pushstr_newL("h_src[i] = temp;"); + if(func->getIsWeightUsed()) { + main.pushstr_newL("temp = edgeLen[i];"); + main.pushstr_newL("h_weight[i] = temp;"); + } + main.pushstr_newL("}"); + main.NewLine(); } - main.pushstr_newL("}"); - main.NewLine(); //to handle rev_offset array for pageRank only // MOVED TO PREV FOR LOOP //~ main.pushstr_newL("for(int i=0; i<= V; i++) {"); @@ -3322,8 +3336,10 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { sprintf(strBuffer, "int* d_meta;"); main.pushstr_newL(strBuffer); - sprintf(strBuffer, "int* d_data;"); - main.pushstr_newL(strBuffer); + if(currentFunc->getIsDataUsed()) { // checking if data is used + sprintf(strBuffer, "int* d_data;"); + main.pushstr_newL(strBuffer); + } sprintf(strBuffer, "int* d_src;"); main.pushstr_newL(strBuffer); if(currentFunc->getIsWeightUsed()) { // checking if weight is used @@ -3339,7 +3355,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { main.NewLine(); generateCudaMallocStr("d_meta", "int", "(1+V)"); - generateCudaMallocStr("d_data", "int", "(E)"); + if(currentFunc->getIsDataUsed()) // checking if data is used + generateCudaMallocStr("d_data", "int", "(E)"); generateCudaMallocStr("d_src", "int", "(E)"); if(currentFunc->getIsWeightUsed()) // checking if weight is used generateCudaMallocStr("d_weight", "int", "(E)"); @@ -3352,7 +3369,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { // h_meta h_data h_weight has to be populated! generateCudaMemCpyStr("d_meta", "h_meta", "int", "V+1"); - generateCudaMemCpyStr("d_data", "h_data", "int", "E"); + if(currentFunc->getIsDataUsed()) // checking if data is used + generateCudaMemCpyStr("d_data", "h_data", "int", "E"); generateCudaMemCpyStr("d_src", "h_src", "int", "E"); if(currentFunc->getIsWeightUsed()) // checking if weight is used generateCudaMemCpyStr("d_weight", "h_weight", "int", "E"); diff --git a/src/debug.txt b/src/debug.txt index 5add5117..8b11e752 100644 --- a/src/debug.txt +++ b/src/debug.txt @@ -1,59 +1,51 @@ -fileName ../graphcode/staticDSLCodes/triangle_counting_dsl +fileName ../graphcode/staticDSLCodes/PageRankDSLV2 Backend Target cuda Type: function '('Graph Type +','Type: float + +','Type: float + +','Type: int + +','Node Property'<'Type: float'>' ')'currentFuncType check!!0 tempID g funccount 0 -'{'Type: long +'{'Type: float '=' -';'Keyword-forall: forall'(' +'.''('')'';'Node Property'<'Type: float'>' +';''.''(''=''/'')'';'TYPE OF NODE OF STATEMENT1Type: int +'='';'Type: float +';'Keyword do: do'{''='';'Keyword-forall: forall'(' Keyword in -'.''('')'')''{'Keyword-forall: forall'(' +'.''('')'')''{'Type: float +'='';'For: for'(' Keyword in -'.''('')''.'filter'(' -'<' -')'')''{'Keyword-forall: forall'(' -Keyword in -'.''('')''.'filter'(' -'>' -')'')''{'Keyword if: if'(''.''('','')'')''{'ADD_ASSIGN ';''}''}'CHECK FILTER TYPE1 -ForallStmt created -0 -0 +'.''('')'')''{''=''+''.''/''.''('')'';''}'ForallStmt created 0 0 0 -'}'CHECK FILTER TYPE1 -ForallStmt created 0 0 +Type: float +'=''(''-'')''/''+''*'';'ADD_ASSIGN '-''.'';''.''='';''}'ForallStmt created 0 0 0 -'}'ForallStmt created 0 0 -0 -0 -0 -Return: return -';''}' + +'=' + +';'INC_OP';''}' +Keyword while: while'(''(''>'')'AND_OP'(''<'')'')'';''}' error val 0 at 1 FORALL par NAME1:6 -FORALL ParPar NAME2:2 - TO Set DEVICE BOOL -Parent of forAll: -0 -0 -0 -0 -0 -FORALL par NAME1:6 -FORALL ParPar NAME2:18 +FORALL ParPar NAME2:10 FORALL ParParPar NAME3:6 Parent of forAll: 0 @@ -69,88 +61,184 @@ Parent of forAll: 0 0 0 -0 +1 +ANAME1:6 +ANAME2:18 at 2 -Function Compute_TC +Function Compute_PR { Declaration - For all + Declaration + Procedure Call + Declaration + Declaration + Do While { + Assignment For all { + Declaration For all { - If statment - { - Reduction - } + Assignment } + Declaration + Reduction + Assignment } + Assignment + Unary statment } } -Initializing 0x5646c2121a20 6 -Initializing 0x5646c2121c70 7 -Initializing 0x5646c2123b90 18 -Initializing 0x5646c2123e70 22 -Analysing 0x5646c2121a20 6 -Analysing 0x5646c2121c70 7 -Analysing 0x5646c2123b90 18 -Analysing 0x5646c2123e70 22 -Transfering 0x5646c2121c70 7 -Transfering 0x5646c2123b90 18 -Transfering 0x5646c2123e70 22 +Initializing 0x5596778af140 6 +Initializing 0x5596778af660 7 +Initializing 0x5596778af4c0 7 +Initializing 0x5596778afc90 17 +Initializing 0x5596778afe60 7 +Initializing 0x5596778affe0 7 +Initializing 0x5596778b3380 10 +Initializing 0x5596778b0070 6 +Initializing 0x5596778b0260 8 +Initializing 0x5596778b27c0 18 +Initializing 0x5596778b2b30 8 +Initializing 0x5596778b2d50 21 +Analysing 0x5596778af140 6 +Analysing 0x5596778af660 7 +Analysing 0x5596778af4c0 7 +Analysing 0x5596778afc90 17 +Analysing 0x5596778afe60 7 +Analysing 0x5596778affe0 7 +Analysing 0x5596778b3380 10 +Analysing 0x5596778b0070 6 +Analysing 0x5596778b0260 8 +Analysing 0x5596778b27c0 18 +Analysing 0x5596778b2b30 8 +Analysing 0x5596778b2d50 21 +Analysing 0x5596778b0070 6 +Analysing 0x5596778b0260 8 +Analysing 0x5596778b27c0 18 +Analysing 0x5596778b2b30 8 +Analysing 0x5596778b2d50 21 +Transfering 0x5596778af660 7 +Transfering 0x5596778af4c0 7 +Transfering 0x5596778afc90 17 +Transfering 0x5596778afe60 7 +Transfering 0x5596778affe0 7 +Transfering 0x5596778b3380 10 +Transfering 0x5596778b0070 6 +Transfering 0x5596778b0260 8 +Transfering 0x5596778b27c0 18 +Transfering 0x5596778b2b30 8 +Transfering 0x5596778b2d50 21 { + Declaration Declaration Tranfer statement - triangle_count CPU to GPU - For all + pageRank CPU to GPU + Procedure Call + Declaration + Declaration + Declaration + Do While { + If statment + { + Tranfer statement + pageRank CPU to GPU + } + Assignment + Assignment + Tranfer statement + diff CPU to GPU + Tranfer statement + num_nodes CPU to GPU + Tranfer statement + pageRank_nxt CPU to GPU + Tranfer statement + delta CPU to GPU For all { + Declaration For all { - If statment - { - Reduction - } + Assignment } + Declaration + Reduction + Assignment } + Tranfer statement + pageRank GPU to CPU + Tranfer statement + pageRank_nxt GPU to CPU + Assignment + Unary statment + Tranfer statement + diff GPU to CPU } } -fileName triangle_counting_dsl +fileName PageRankDSLV2 param :g paramD:d_g ========== SET TRUE +param :beta +paramD:d_beta +param :delta +paramD:d_delta +param :maxIter +paramD:d_maxIter +param :pageRank +paramD:d_pageRank param :g paramD:d_g +param :beta +paramD:d_beta +param :delta +paramD:d_delta +param :maxIter +paramD:d_maxIter +param :pageRank +paramD:d_pageRank + ==VARSIZE:1 +varT:float +varN:num_nodes +------>PROP PRO CAL +varName:pageRank +varT:int +varN:iterCount +varT:float +varN:diff +varT:bool +varN:tempVar_0 + ==VARSIZE:0 +=======IF FILTER ==VARSIZE:0 -varT:long -varN:triangle_count + ASST + ASST STMT: For isMainFile val 1 Entered here for forall INN OPTIMESED --------------- _ +_ +_ +_ +_ start of kernel block +varT:float +varN:sum STMT: For isMainFile val 0 GenerateForAllSignature = 0 -============CHANGED BODY TYPE==============1 ITERATE Neighbour -src:u - ==VARSIZE:0 -=======IF FILTER - ==VARSIZE:0 -STMT: For -isMainFile val 0 -GenerateForAllSignature = 0 -============CHANGED BODY TYPE==============1 ITERATE Neighbour -src:w - ==VARSIZE:0 -=======IF FILTER + ITERATE Neighbour +src:nbr ==VARSIZE:0 -=======IF FILTER + ASST ------>PROP PRO CAL - ==VARSIZE:0 -FOR BODY END FOR BODY END +varT:float +varN:val + ASST + ASST +------>PROP UNARY finished successfully diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 9246d3d0..36e47bb3 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -361,8 +361,12 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) string iteratorMethodString(iteratorMethodId->getIdentifier()); if(iteratorMethodString.compare("nodes_to") == 0) { // if the proc call is nodes_to, d_rev_meta is needed forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; - parentForall->setRevMetaUsed(); - currentFunc->setRevMetaUsed(); + parentForall->setIsRevMetaUsed(); + currentFunc->setIsRevMetaUsed(); + } else if(iteratorMethodString.compare("neighbors") == 0) { // if the proc call is neighbors, d_data is needed + forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; + parentForall->setIsDataUsed(); + currentFunc->setIsDataUsed(); } } } @@ -555,6 +559,8 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) parallelConstruct.push_back(iBFS); } + + currentFunc->setIsDataUsed(); // d_data is used in itrbfs currentFunc->setIsWeightUsed(); // d_weight is used in itrbfs buildForStatements(iBFS->getBody()); @@ -714,6 +720,12 @@ void SymbolTableBuilder::checkForArguments(list argList) string idString(id->getIdentifier()); assert(idString.compare(updatesString) == 0); } + if(s.compare("is_an_edge") == 0) + { + forallStmt* parentForAll = (forallStmt*)parallelConstruct[0]; + parentForAll->setIsDataUsed(); + currentFunc->setIsDataUsed(); + } break; } case EXPR_UNARY: From 1fa1101452e06edc6e44fe6a1332cf1e579449b4 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Mon, 20 Feb 2023 01:08:35 +0530 Subject: [PATCH 28/38] opt d_src gen --- Changes_list.txt | 4 +- To_be_done.txt | 2 +- .../generated_cuda/triangle_counting_dsl.cu | 7 +- .../generated_cuda/triangle_counting_dsl.h | 2 +- .../backend_cuda/dsl_cpp_generator.cpp | 24 +- src/debug.txt | 236 ++++++------------ src/symbolutil/SymbolTableBuilder.cpp | 2 + 7 files changed, 98 insertions(+), 179 deletions(-) diff --git a/Changes_list.txt b/Changes_list.txt index ae5c5bbd..84fc1858 100644 --- a/Changes_list.txt +++ b/Changes_list.txt @@ -6,4 +6,6 @@ deviceVarsAnalyser.h : getTempVar() LINE 284 removed static cast and used st added fp_idnode to identifier analyser/deviceVars/getUsedVars.cpp: LINE 230 fixed fp for sssp -src/symbolutil/SymbolTableBuilder.cpp: LINE 278 added fp node \ No newline at end of file +src/symbolutil/SymbolTableBuilder.cpp: LINE 278 added fp node + +formal parameters generation: diff --git a/To_be_done.txt b/To_be_done.txt index da74c4fa..190911ec 100644 --- a/To_be_done.txt +++ b/To_be_done.txt @@ -4,7 +4,7 @@ Analysis: d_meta - yet to be done d_data - fixed for all occurrences - d_src - yet to be done + d_src - fixed for all occurrences d_weight - fixed for all occurrences d_rev_meta - fixed for all occurrences d_var_nxt - fixed function parameters and function calls. Yet to stop generating. diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu index 05703566..c6bc3fdf 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.cu +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -14,11 +14,9 @@ void Compute_TC(graph& g) int *h_meta; int *h_data; - int *h_src; h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); - h_src = (int *)malloc( (E)*sizeof(int)); for(int i=0; i< E; i++) { int temp = g.edgeList[i]; @@ -30,17 +28,14 @@ void Compute_TC(graph& g) int* d_meta; int* d_data; - int* d_src; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); - cudaMalloc(&d_src, sizeof(int)*(E)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); // CSR END //LAUNCH CONFIG @@ -63,7 +58,7 @@ void Compute_TC(graph& g) long triangle_count = 0; // asst in .cu cudaMemcpyToSymbol(::triangle_count, &triangle_count, sizeof(long), 0, cudaMemcpyHostToDevice); - Compute_TC_kernel<<>>(V,E,d_meta,d_data,d_src); + Compute_TC_kernel<<>>(V,E,d_meta,d_data); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/triangle_counting_dsl.h b/graphcode/generated_cuda/triangle_counting_dsl.h index 5259dc1e..a43dc415 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.h +++ b/graphcode/generated_cuda/triangle_counting_dsl.h @@ -15,7 +15,7 @@ void Compute_TC(graph& g); __device__ long triangle_count ; // DEVICE ASSTMENT in .h -__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data, int* d_src){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index 92e1148c..f5a469bd 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -1551,7 +1551,8 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { header.pushString("(int V, int E, int* d_meta"); if(forAll->getIsDataUsed()) header.pushString(", int* d_data"); - header.pushString(", int* d_src"); + if(forAll->getIsSrcUsed()) + header.pushString(", int* d_src"); if(forAll->getIsWeightUsed()) header.pushString(", int* d_weight"); if(forAll->getIsRevMetaUsed()) @@ -1683,7 +1684,8 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll, bool isMainFile) { main.pushString("V,E,d_meta"); if(forAll->getIsDataUsed()) // if d_data is used, i.e. neighbors or is_an_edge is called main.pushString(",d_data"); - main.pushString(",d_src"); + if(forAll->getIsSrcUsed()) // if d_src is used, i.e. nodes_to is called + main.pushString(",d_src"); if(forAll->getIsWeightUsed()) // if d_weight is used, can never be used as of now main.pushString(",d_weight"); if(forAll->getIsRevMetaUsed()) // if d_rev_meta is used, i.e. nodes_to is called @@ -3129,7 +3131,8 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL("int *h_meta;"); if(func->getIsDataUsed()) main.pushstr_newL("int *h_data;"); - main.pushstr_newL("int *h_src;"); + if(func->getIsSrcUsed()) + main.pushstr_newL("int *h_src;"); if(func->getIsWeightUsed()) main.pushstr_newL("int *h_weight;"); if(func->getIsRevMetaUsed()) @@ -3139,7 +3142,8 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL("h_meta = (int *)malloc( (V+1)*sizeof(int));"); if(func->getIsDataUsed()) main.pushstr_newL("h_data = (int *)malloc( (E)*sizeof(int));"); - main.pushstr_newL("h_src = (int *)malloc( (E)*sizeof(int));"); + if(func->getIsSrcUsed()) + main.pushstr_newL("h_src = (int *)malloc( (E)*sizeof(int));"); if(func->getIsWeightUsed()) main.pushstr_newL("h_weight = (int *)malloc( (E)*sizeof(int));"); if(func->getIsRevMetaUsed()) @@ -3340,8 +3344,10 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { sprintf(strBuffer, "int* d_data;"); main.pushstr_newL(strBuffer); } - sprintf(strBuffer, "int* d_src;"); - main.pushstr_newL(strBuffer); + if(currentFunc->getIsSrcUsed()) { // checking if src is used + sprintf(strBuffer, "int* d_src;"); + main.pushstr_newL(strBuffer); + } if(currentFunc->getIsWeightUsed()) { // checking if weight is used sprintf(strBuffer, "int* d_weight;"); main.pushstr_newL(strBuffer); @@ -3357,7 +3363,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMallocStr("d_meta", "int", "(1+V)"); if(currentFunc->getIsDataUsed()) // checking if data is used generateCudaMallocStr("d_data", "int", "(E)"); - generateCudaMallocStr("d_src", "int", "(E)"); + if(currentFunc->getIsSrcUsed()) // checking if src is used + generateCudaMallocStr("d_src", "int", "(E)"); if(currentFunc->getIsWeightUsed()) // checking if weight is used generateCudaMallocStr("d_weight", "int", "(E)"); if(currentFunc->getIsRevMetaUsed()) // checking if rev_meta is used @@ -3371,7 +3378,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMemCpyStr("d_meta", "h_meta", "int", "V+1"); if(currentFunc->getIsDataUsed()) // checking if data is used generateCudaMemCpyStr("d_data", "h_data", "int", "E"); - generateCudaMemCpyStr("d_src", "h_src", "int", "E"); + if(currentFunc->getIsSrcUsed()) // checking if src is used + generateCudaMemCpyStr("d_src", "h_src", "int", "E"); if(currentFunc->getIsWeightUsed()) // checking if weight is used generateCudaMemCpyStr("d_weight", "h_weight", "int", "E"); if(currentFunc->getIsRevMetaUsed()) // checking if rev_meta is used diff --git a/src/debug.txt b/src/debug.txt index 8b11e752..8a8eb30c 100644 --- a/src/debug.txt +++ b/src/debug.txt @@ -1,52 +1,51 @@ -fileName ../graphcode/staticDSLCodes/PageRankDSLV2 +fileName ../graphcode/staticDSLCodes/triangle_counting_dsl Backend Target cuda Type: function '('Graph Type -','Type: float - -','Type: float - -','Type: int - -','Node Property'<'Type: float'>' ')'currentFuncType check!!0 tempID g funccount 0 -'{'Type: float +'{'Type: long '=' -'.''('')'';'Node Property'<'Type: float'>' -';''.''(''=''/'')'';'TYPE OF NODE OF STATEMENT1Type: int -'='';'Type: float -';'Keyword do: do'{''='';'Keyword-forall: forall'(' +';'Keyword-forall: forall'(' +Keyword in +'.''('')'')''{'Keyword-forall: forall'(' Keyword in -'.''('')'')''{'Type: float -'='';'For: for'(' +'.''('')''.'filter'(' +'<' +')'')''{'Keyword-forall: forall'(' Keyword in -'.''('')'')''{''=''+''.''/''.''('')'';''}'ForallStmt created +'.''('')''.'filter'(' +'>' +')'')''{'Keyword if: if'(''.''('','')'')''{'ADD_ASSIGN ';''}''}'CHECK FILTER TYPE1 +ForallStmt created 0 0 0 0 0 -Type: float -'=''(''-'')''/''+''*'';'ADD_ASSIGN '-''.'';''.''='';''}'ForallStmt created +'}'CHECK FILTER TYPE1 +ForallStmt created 0 0 0 0 0 - -'=' - -';'INC_OP';''}' -Keyword while: while'(''(''>'')'AND_OP'(''<'')'')'';''}' +'}'ForallStmt created +0 +0 +0 +0 +0 +Return: return +';''}' error val 0 at 1 FORALL par NAME1:6 -FORALL ParPar NAME2:10 -FORALL ParParPar NAME3:6 +FORALL ParPar NAME2:2 + TO Set DEVICE BOOL Parent of forAll: 0 0 @@ -58,187 +57,100 @@ FORALL ParPar NAME2:18 FORALL ParParPar NAME3:6 Parent of forAll: 0 +1 +0 0 0 +FORALL par NAME1:6 +FORALL ParPar NAME2:18 +FORALL ParParPar NAME3:6 +Parent of forAll: 0 1 -ANAME1:6 -ANAME2:18 +0 +0 +0 at 2 -Function Compute_PR +Function Compute_TC { Declaration - Declaration - Procedure Call - Declaration - Declaration - Do While + For all { - Assignment For all { - Declaration For all { - Assignment + If statment + { + Reduction + } } - Declaration - Reduction - Assignment } - Assignment - Unary statment } } -Initializing 0x5596778af140 6 -Initializing 0x5596778af660 7 -Initializing 0x5596778af4c0 7 -Initializing 0x5596778afc90 17 -Initializing 0x5596778afe60 7 -Initializing 0x5596778affe0 7 -Initializing 0x5596778b3380 10 -Initializing 0x5596778b0070 6 -Initializing 0x5596778b0260 8 -Initializing 0x5596778b27c0 18 -Initializing 0x5596778b2b30 8 -Initializing 0x5596778b2d50 21 -Analysing 0x5596778af140 6 -Analysing 0x5596778af660 7 -Analysing 0x5596778af4c0 7 -Analysing 0x5596778afc90 17 -Analysing 0x5596778afe60 7 -Analysing 0x5596778affe0 7 -Analysing 0x5596778b3380 10 -Analysing 0x5596778b0070 6 -Analysing 0x5596778b0260 8 -Analysing 0x5596778b27c0 18 -Analysing 0x5596778b2b30 8 -Analysing 0x5596778b2d50 21 -Analysing 0x5596778b0070 6 -Analysing 0x5596778b0260 8 -Analysing 0x5596778b27c0 18 -Analysing 0x5596778b2b30 8 -Analysing 0x5596778b2d50 21 -Transfering 0x5596778af660 7 -Transfering 0x5596778af4c0 7 -Transfering 0x5596778afc90 17 -Transfering 0x5596778afe60 7 -Transfering 0x5596778affe0 7 -Transfering 0x5596778b3380 10 -Transfering 0x5596778b0070 6 -Transfering 0x5596778b0260 8 -Transfering 0x5596778b27c0 18 -Transfering 0x5596778b2b30 8 -Transfering 0x5596778b2d50 21 +Initializing 0x5576b9a0fa20 6 +Initializing 0x5576b9a0fc70 7 +Initializing 0x5576b9a11b90 18 +Initializing 0x5576b9a11e70 22 +Analysing 0x5576b9a0fa20 6 +Analysing 0x5576b9a0fc70 7 +Analysing 0x5576b9a11b90 18 +Analysing 0x5576b9a11e70 22 +Transfering 0x5576b9a0fc70 7 +Transfering 0x5576b9a11b90 18 +Transfering 0x5576b9a11e70 22 { - Declaration Declaration Tranfer statement - pageRank CPU to GPU - Procedure Call - Declaration - Declaration - Declaration - Do While + triangle_count CPU to GPU + For all { - If statment - { - Tranfer statement - pageRank CPU to GPU - } - Assignment - Assignment - Tranfer statement - diff CPU to GPU - Tranfer statement - num_nodes CPU to GPU - Tranfer statement - pageRank_nxt CPU to GPU - Tranfer statement - delta CPU to GPU For all { - Declaration For all { - Assignment + If statment + { + Reduction + } } - Declaration - Reduction - Assignment } - Tranfer statement - pageRank GPU to CPU - Tranfer statement - pageRank_nxt GPU to CPU - Assignment - Unary statment - Tranfer statement - diff GPU to CPU } } -fileName PageRankDSLV2 +fileName triangle_counting_dsl param :g paramD:d_g ========== SET TRUE -param :beta -paramD:d_beta -param :delta -paramD:d_delta -param :maxIter -paramD:d_maxIter -param :pageRank -paramD:d_pageRank param :g paramD:d_g -param :beta -paramD:d_beta -param :delta -paramD:d_delta -param :maxIter -paramD:d_maxIter -param :pageRank -paramD:d_pageRank - ==VARSIZE:1 -varT:float -varN:num_nodes ------->PROP PRO CAL -varName:pageRank -varT:int -varN:iterCount -varT:float -varN:diff -varT:bool -varN:tempVar_0 - ==VARSIZE:0 -=======IF FILTER ==VARSIZE:0 - ASST - ASST +varT:long +varN:triangle_count STMT: For isMainFile val 1 Entered here for forall INN OPTIMESED --------------- _ -_ -_ -_ -_ start of kernel block -varT:float -varN:sum STMT: For isMainFile val 0 GenerateForAllSignature = 0 - ITERATE Neighbour -src:nbr +============CHANGED BODY TYPE==============1 ITERATE Neighbour +src:u + ==VARSIZE:0 +=======IF FILTER + ==VARSIZE:0 +STMT: For +isMainFile val 0 +GenerateForAllSignature = 0 +============CHANGED BODY TYPE==============1 ITERATE Neighbour +src:w + ==VARSIZE:0 +=======IF FILTER ==VARSIZE:0 - ASST +=======IF FILTER ------>PROP PRO CAL + ==VARSIZE:0 +FOR BODY END FOR BODY END -varT:float -varN:val - ASST - ASST ------->PROP UNARY finished successfully diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 36e47bb3..369e9985 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -363,6 +363,8 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; parentForall->setIsRevMetaUsed(); currentFunc->setIsRevMetaUsed(); + parentForall->setIsSrcUsed(); + currentFunc->setIsSrcUsed(); } else if(iteratorMethodString.compare("neighbors") == 0) { // if the proc call is neighbors, d_data is needed forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; parentForall->setIsDataUsed(); From 75285b93bf0a648ff5f17471dc569bf96694502d Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Mon, 20 Feb 2023 01:18:23 +0530 Subject: [PATCH 29/38] opt d_meta gen --- graphcode/generated_cuda/PageRankDSLV2.cu | 5 + graphcode/generated_cuda/sssp_dslV2.cu | 16 +- graphcode/generated_cuda/sssp_dslV2.h | 2 +- .../generated_cuda/triangle_counting_dsl.cu | 7 +- .../backend_cuda/dsl_cpp_generator.cpp | 44 ++-- src/debug.txt | 214 ++++++++++++------ src/symbolutil/SymbolTableBuilder.cpp | 11 + 7 files changed, 196 insertions(+), 103 deletions(-) diff --git a/graphcode/generated_cuda/PageRankDSLV2.cu b/graphcode/generated_cuda/PageRankDSLV2.cu index 12b398ea..ddd09aa2 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.cu +++ b/graphcode/generated_cuda/PageRankDSLV2.cu @@ -28,6 +28,11 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, h_rev_meta[i] = temp; } + for(int i=0; i< E; i++) { + temp = g.srcList[i]; + h_src[i] = temp; + } + int* d_meta; int* d_src; diff --git a/graphcode/generated_cuda/sssp_dslV2.cu b/graphcode/generated_cuda/sssp_dslV2.cu index ec5586bc..3763c5fe 100644 --- a/graphcode/generated_cuda/sssp_dslV2.cu +++ b/graphcode/generated_cuda/sssp_dslV2.cu @@ -15,13 +15,9 @@ void Compute_SSSP(graph& g,int* dist,int* wt,int src int *h_meta; int *h_data; - int *h_src; - int *h_weight; h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); - h_src = (int *)malloc( (E)*sizeof(int)); - h_weight = (int *)malloc( (E)*sizeof(int)); for(int i=0; i<= V; i++) { int temp = g.indexofNodes[i]; @@ -31,29 +27,19 @@ void Compute_SSSP(graph& g,int* dist,int* wt,int src for(int i=0; i< E; i++) { int temp = g.edgeList[i]; h_data[i] = temp; - temp = g.srcList[i]; - h_src[i] = temp; - temp = edgeLen[i]; - h_weight[i] = temp; } int* d_meta; int* d_data; - int* d_src; - int* d_weight; bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); - cudaMalloc(&d_src, sizeof(int)*(E)); - cudaMalloc(&d_weight, sizeof(int)*(E)); cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); // CSR END //LAUNCH CONFIG @@ -99,7 +85,7 @@ void Compute_SSSP(graph& g,int* dist,int* wt,int src finished = true; cudaMemcpyToSymbol(::finished, &finished, sizeof(bool), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::finished, &finished, sizeof(bool), 0, cudaMemcpyHostToDevice); - Compute_SSSP_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_modified,d_modified_next,d_dist,d_wt); + Compute_SSSP_kernel<<>>(V,E,d_meta,d_data,d_modified,d_modified_next,d_wt,d_dist); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/sssp_dslV2.h b/graphcode/generated_cuda/sssp_dslV2.h index 78b3d46d..89dab530 100644 --- a/graphcode/generated_cuda/sssp_dslV2.h +++ b/graphcode/generated_cuda/sssp_dslV2.h @@ -16,7 +16,7 @@ void Compute_SSSP(graph& g,int* dist,int* wt,int src __device__ bool finished ; // DEVICE ASSTMENT in .h -__global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight,bool* d_modified,bool* d_modified_next,int* d_dist,int* d_wt){ // BEGIN KER FUN via ADDKERNEL +__global__ void Compute_SSSP_kernel(int V, int E, int* d_meta, int* d_data,bool* d_modified,bool* d_modified_next,int* d_wt,int* d_dist){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu index c6bc3fdf..f67570ea 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.cu +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -18,11 +18,14 @@ void Compute_TC(graph& g) h_meta = (int *)malloc( (V+1)*sizeof(int)); h_data = (int *)malloc( (E)*sizeof(int)); + for(int i=0; i<= V; i++) { + int temp = g.indexofNodes[i]; + h_meta[i] = temp; + } + for(int i=0; i< E; i++) { int temp = g.edgeList[i]; h_data[i] = temp; - temp = g.srcList[i]; - h_src[i] = temp; } diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index f5a469bd..e9fefad2 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -1548,7 +1548,9 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { header.pushString(getCurrentFunc()->getIdentifier()->getIdentifier()); header.pushString("_kernel"); - header.pushString("(int V, int E, int* d_meta"); + header.pushString("(int V, int E"); + if(forAll->getIsMetaUsed()) + header.pushString(", int* d_meta"); if(forAll->getIsDataUsed()) header.pushString(", int* d_data"); if(forAll->getIsSrcUsed()) @@ -1681,7 +1683,9 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll, bool isMainFile) { main.pushString("numBlocks, threadsPerBlock"); main.pushString(">>>"); main.push('('); - main.pushString("V,E,d_meta"); + main.pushString("V,E"); + if(forAll->getIsMetaUsed()) // if d_meta is used + main.pushString(",d_meta"); if(forAll->getIsDataUsed()) // if d_data is used, i.e. neighbors or is_an_edge is called main.pushString(",d_data"); if(forAll->getIsSrcUsed()) // if d_src is used, i.e. nodes_to is called @@ -3127,8 +3131,9 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL(strBuffer); main.NewLine(); - // These H & D arrays of CSR do not change. Hence hardcoded! - main.pushstr_newL("int *h_meta;"); + // These H & D arrays of CSR do not change. Hence hardcoded!. NOTE: not anymore + if(func->getIsMetaUsed()) + main.pushstr_newL("int *h_meta;"); if(func->getIsDataUsed()) main.pushstr_newL("int *h_data;"); if(func->getIsSrcUsed()) @@ -3139,7 +3144,8 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL("int *h_rev_meta;"); //done only to handle PR since other don't use it main.NewLine(); - main.pushstr_newL("h_meta = (int *)malloc( (V+1)*sizeof(int));"); + if(func->getIsMetaUsed()) + main.pushstr_newL("h_meta = (int *)malloc( (V+1)*sizeof(int));"); if(func->getIsDataUsed()) main.pushstr_newL("h_data = (int *)malloc( (E)*sizeof(int));"); if(func->getIsSrcUsed()) @@ -3152,9 +3158,11 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { if(func->getIsMetaUsed() || func->getIsRevMetaUsed()) { main.pushstr_newL("for(int i=0; i<= V; i++) {"); - sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); - main.pushstr_newL(strBuffer); - main.pushstr_newL("h_meta[i] = temp;"); + if(func->getIsMetaUsed()) { + sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); + main.pushstr_newL(strBuffer); + main.pushstr_newL("h_meta[i] = temp;"); + } if(func->getIsRevMetaUsed()) { sprintf(strBuffer, "temp = %s.rev_indexofNodes[i];", gId); main.pushstr_newL(strBuffer); @@ -3171,9 +3179,11 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { main.pushstr_newL(strBuffer); main.pushstr_newL("h_data[i] = temp;"); } - sprintf(strBuffer, "temp = %s.srcList[i];", gId); - main.pushstr_newL(strBuffer); - main.pushstr_newL("h_src[i] = temp;"); + if(func->getIsSrcUsed()) { + sprintf(strBuffer, "temp = %s.srcList[i];", gId); + main.pushstr_newL(strBuffer); + main.pushstr_newL("h_src[i] = temp;"); + } if(func->getIsWeightUsed()) { main.pushstr_newL("temp = edgeLen[i];"); main.pushstr_newL("h_weight[i] = temp;"); @@ -3338,8 +3348,10 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { main.NewLine(); - sprintf(strBuffer, "int* d_meta;"); - main.pushstr_newL(strBuffer); + if(currentFunc->getIsMetaUsed()) { // checking if meta is used + sprintf(strBuffer, "int* d_meta;"); + main.pushstr_newL(strBuffer); + } if(currentFunc->getIsDataUsed()) { // checking if data is used sprintf(strBuffer, "int* d_data;"); main.pushstr_newL(strBuffer); @@ -3360,7 +3372,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { main.pushstr_newL(strBuffer); main.NewLine(); - generateCudaMallocStr("d_meta", "int", "(1+V)"); + if(currentFunc->getIsMetaUsed()) // checking if meta is used + generateCudaMallocStr("d_meta", "int", "(1+V)"); if(currentFunc->getIsDataUsed()) // checking if data is used generateCudaMallocStr("d_data", "int", "(E)"); if(currentFunc->getIsSrcUsed()) // checking if src is used @@ -3375,7 +3388,8 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { // h_meta h_data h_weight has to be populated! - generateCudaMemCpyStr("d_meta", "h_meta", "int", "V+1"); + if(currentFunc->getIsMetaUsed()) // checking if meta is used + generateCudaMemCpyStr("d_meta", "h_meta", "int", "V+1"); if(currentFunc->getIsDataUsed()) // checking if data is used generateCudaMemCpyStr("d_data", "h_data", "int", "E"); if(currentFunc->getIsSrcUsed()) // checking if src is used diff --git a/src/debug.txt b/src/debug.txt index 8a8eb30c..6a87fe00 100644 --- a/src/debug.txt +++ b/src/debug.txt @@ -1,26 +1,51 @@ -fileName ../graphcode/staticDSLCodes/triangle_counting_dsl +fileName ../graphcode/staticDSLCodes/sssp_dslV2 Backend Target cuda Type: function '('Graph Type +',' +Node Property'<'Type: int'>' +',' +Edge Property'<'Type: int'>' +',' +Node Type ')'currentFuncType check!!0 tempID g funccount 0 -'{'Type: long +'{'Node Property'<'Type: bool'>' +';''.''(' +'=' ++Infinity: INF',' '=' -';'Keyword-forall: forall'(' -Keyword in -'.''('')'')''{'Keyword-forall: forall'(' +Type Bool: False')'';'TYPE OF NODE OF STATEMENT1'.' +'=' +Type Bool: True';''.' +'=' +';'Type: bool + +'=' +Type Bool: False';'Keyword fixedPoint +Keyword until'(' +':' +'!'')''{'Keyword-forall: forall'(' Keyword in '.''('')''.'filter'(' -'<' -')'')''{'Keyword-forall: forall'(' +EQ_OP +Type Bool: True')'')''{'Keyword-forall: forall'(' Keyword in -'.''('')''.'filter'(' -'>' -')'')''{'Keyword if: if'(''.''('','')'')''{'ADD_ASSIGN ';''}''}'CHECK FILTER TYPE1 -ForallStmt created +'.''('')'')''{'Edge Type + +'=' +'.''('',' +')'';''<''.'',' +'.''>' +'=' +'<'Min'(''.'',' +'.' +'+' +'.'')'',' +Type Bool: True'>'';''}'ForallStmt created 0 0 0 @@ -33,19 +58,19 @@ ForallStmt created 0 0 0 -'}'ForallStmt created -0 -0 -0 -0 -0 -Return: return -';''}' +'}' +'}' error val 0 at 1 +ANAME1:6 +ANAME2:2 + Setting device bool +ANAME1:6 +ANAME2:2 + Setting device bool FORALL par NAME1:6 -FORALL ParPar NAME2:2 - TO Set DEVICE BOOL +FORALL ParPar NAME2:11 +FORALL ParParPar NAME3:6 Parent of forAll: 0 0 @@ -56,101 +81,150 @@ FORALL par NAME1:6 FORALL ParPar NAME2:18 FORALL ParParPar NAME3:6 Parent of forAll: -0 1 -0 -0 -0 -FORALL par NAME1:6 -FORALL ParPar NAME2:18 -FORALL ParParPar NAME3:6 -Parent of forAll: -0 1 0 0 0 at 2 -Function Compute_TC +Function Compute_SSSP { Declaration - For all + Procedure Call + Assignment + Assignment + Declaration + Fixed Point { For all { For all { - If statment - { - Reduction - } + Declaration + Reduction } } } } -Initializing 0x5576b9a0fa20 6 -Initializing 0x5576b9a0fc70 7 -Initializing 0x5576b9a11b90 18 -Initializing 0x5576b9a11e70 22 -Analysing 0x5576b9a0fa20 6 -Analysing 0x5576b9a0fc70 7 -Analysing 0x5576b9a11b90 18 -Analysing 0x5576b9a11e70 22 -Transfering 0x5576b9a0fc70 7 -Transfering 0x5576b9a11b90 18 -Transfering 0x5576b9a11e70 22 +Initializing 0x55925bb65ff0 6 +Initializing 0x55925bb66200 7 +Initializing 0x55925bb66860 17 +Initializing 0x55925bb66a80 8 +Initializing 0x55925bb66cd0 8 +Initializing 0x55925bb66ed0 7 +Initializing 0x55925bb693a0 11 +Initializing 0x55925bb67180 6 +Initializing 0x55925bb691f0 18 +fpId: finished +Analysing 0x55925bb65ff0 6 +Analysing 0x55925bb66200 7 +Analysing 0x55925bb66860 17 +Analysing 0x55925bb66a80 8 +Analysing 0x55925bb66cd0 8 +Analysing 0x55925bb66ed0 7 +Analysing 0x55925bb693a0 11 +Analysing 0x55925bb67180 6 +Analysing 0x55925bb691f0 18 +Analysing 0x55925bb67180 6 +Analysing 0x55925bb691f0 18 +Transfering 0x55925bb66200 7 +Transfering 0x55925bb66860 17 +Transfering 0x55925bb66a80 8 +Transfering 0x55925bb66cd0 8 +Transfering 0x55925bb66ed0 7 +Transfering 0x55925bb693a0 11 +Transfering 0x55925bb67180 6 +Transfering 0x55925bb691f0 18 { Declaration Tranfer statement - triangle_count CPU to GPU - For all + dist CPU to GPU + Tranfer statement + modified CPU to GPU + Procedure Call + Tranfer statement + modified GPU to CPU + Assignment + Tranfer statement + dist GPU to CPU + Assignment + Declaration + Tranfer statement + dist CPU to GPU + Fixed Point { + Tranfer statement + wt CPU to GPU + Tranfer statement + finished CPU to GPU + Tranfer statement + modified CPU to GPU For all { For all { - If statment - { - Reduction - } + Declaration + Reduction } } + Tranfer statement + modified GPU to CPU + Tranfer statement + finished GPU to CPU } + Tranfer statement + dist CPU to GPU } -fileName triangle_counting_dsl +fileName sssp_dslV2 param :g paramD:d_g ========== SET TRUE +param :dist +paramD:d_dist +param :wt +paramD:d_wt +param :src +paramD:d_src param :g paramD:d_g +param :dist +paramD:d_dist +param :wt +paramD:d_wt +param :src +paramD:d_src + ==VARSIZE:1 +varName:dist +varName:modified + ASST + DEVICE ASST + ASST + DEVICE ASST +varT:bool +varN:finished +IN FIX PT +Size::5 ==VARSIZE:0 -varT:long -varN:triangle_count STMT: For isMainFile val 1 Entered here for forall INN OPTIMESED --------------- _ -start of kernel block -STMT: For -isMainFile val 0 -GenerateForAllSignature = 0 -============CHANGED BODY TYPE==============1 ITERATE Neighbour -src:u - ==VARSIZE:0 +_ +_ +_ +============CHANGED BODY TYPE==============1start of kernel block =======IF FILTER ==VARSIZE:0 STMT: For isMainFile val 0 GenerateForAllSignature = 0 -============CHANGED BODY TYPE==============1 ITERATE Neighbour -src:w + ITERATE Neighbour +src:nbr ==VARSIZE:0 -=======IF FILTER - ==VARSIZE:0 -=======IF FILTER ------>PROP PRO CAL - ==VARSIZE:0 -FOR BODY END +LEFT LIST SIZE 2 +VAR:dist +FPID ========> finished FOR BODY END finished successfully diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 369e9985..116065dc 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -367,6 +367,8 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) currentFunc->setIsSrcUsed(); } else if(iteratorMethodString.compare("neighbors") == 0) { // if the proc call is neighbors, d_data is needed forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; + parentForall->setIsMetaUsed(); + currentFunc->setIsMetaUsed(); parentForall->setIsDataUsed(); currentFunc->setIsDataUsed(); } @@ -562,6 +564,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } + currentFunc->setIsMetaUsed(); // d_meta is used in itrbfs currentFunc->setIsDataUsed(); // d_data is used in itrbfs currentFunc->setIsWeightUsed(); // d_weight is used in itrbfs @@ -725,9 +728,17 @@ void SymbolTableBuilder::checkForArguments(list argList) if(s.compare("is_an_edge") == 0) { forallStmt* parentForAll = (forallStmt*)parallelConstruct[0]; + parentForAll->setIsMetaUsed(); + currentFunc->setIsMetaUsed(); parentForAll->setIsDataUsed(); currentFunc->setIsDataUsed(); } + if(s.compare("count_outNbrs") == 0) + { + forallStmt* parentForAll = (forallStmt*)parallelConstruct[0]; + parentForAll->setIsMetaUsed(); + currentFunc->setIsMetaUsed(); + } break; } case EXPR_UNARY: From ce043a9fc308bf096bdbb115f4f1e098ba4d8fe2 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Wed, 22 Feb 2023 10:59:11 +0530 Subject: [PATCH 30/38] param gen opt for cuda --- To_be_done.txt | 25 +- graphcode/generated_cuda/temp_algo.cu | 55 +--- graphcode/generated_cuda/temp_algo.h | 8 +- .../backend_cuda/dsl_cpp_generator.cpp | 17 +- src/debug.txt | 264 ++++++------------ src/symbolutil/SymbolTableBuilder.cpp | 10 +- 6 files changed, 122 insertions(+), 257 deletions(-) diff --git a/To_be_done.txt b/To_be_done.txt index 190911ec..bf02e30a 100644 --- a/To_be_done.txt +++ b/To_be_done.txt @@ -1,13 +1,22 @@ Analysis: - To analyse and figure out the formal parameters required for parallel computation. + +1. To analyse and figure out the formal parameters required for parallel computation. Stop generating the unnecessary formal parameters. - d_meta - yet to be done - d_data - fixed for all occurrences - d_src - fixed for all occurrences - d_weight - fixed for all occurrences - d_rev_meta - fixed for all occurrences - d_var_nxt - fixed function parameters and function calls. Yet to stop generating. + d_meta - fixed for all occurrences in CUDA + d_data - fixed for all occurrences in CUDA + d_src - fixed for all occurrences in CUDA + d_weight - fixed for all occurrences in CUDA + d_rev_meta - fixed for all occurrences in CUDA + d_var_nxt - fixed for all occurrences in CUDA (Assuming every fixedpoint dependend variable will trigger double buffering) Testing: - Yet to be done \ No newline at end of file + Yet to be done + +2. For many algorithms, a forall loop is nested inside in a while/do-while loop. + Most of the arrays/variables can be "copied-in" at the beginning of the while loop and "copied out" at the end of the while loop, + because they are not used by the CPU anhywhere inside the while loop. + However, some variables/arrays (flags etc.) are also used by CPU within the while loop. + Analysis has to be done to find out which data structures are used only within the parallel for-loop GPU-regions in the while loop; + and which data are also used outside any parallel for-loop regions (CPU region) inside the while loop. + These varibles that are used by CPU have to be copied out after each iteration of for-loop \ No newline at end of file diff --git a/graphcode/generated_cuda/temp_algo.cu b/graphcode/generated_cuda/temp_algo.cu index 00e1f936..6a897621 100644 --- a/graphcode/generated_cuda/temp_algo.cu +++ b/graphcode/generated_cuda/temp_algo.cu @@ -12,54 +12,11 @@ void count_nodes(graph& g) printf("#edges:%d\n",E); int* edgeLen = g.getEdgeLen(); - int *h_meta; - int *h_data; - int *h_src; - int *h_weight; - int *h_rev_meta; - - h_meta = (int *)malloc( (V+1)*sizeof(int)); - h_data = (int *)malloc( (E)*sizeof(int)); - h_src = (int *)malloc( (E)*sizeof(int)); - h_weight = (int *)malloc( (E)*sizeof(int)); - h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); - - for(int i=0; i<= V; i++) { - int temp = g.indexofNodes[i]; - h_meta[i] = temp; - temp = g.rev_indexofNodes[i]; - h_rev_meta[i] = temp; - } - - for(int i=0; i< E; i++) { - int temp = g.edgeList[i]; - h_data[i] = temp; - temp = g.srcList[i]; - h_src[i] = temp; - temp = edgeLen[i]; - h_weight[i] = temp; - } - - - int* d_meta; - int* d_data; - int* d_src; - int* d_weight; - int* d_rev_meta; - bool* d_modified_next; - - cudaMalloc(&d_meta, sizeof(int)*(1+V)); - cudaMalloc(&d_data, sizeof(int)*(E)); - cudaMalloc(&d_src, sizeof(int)*(E)); - cudaMalloc(&d_weight, sizeof(int)*(E)); - cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); - cudaMalloc(&d_modified_next, sizeof(bool)*(V)); - - cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); - cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); - cudaMemcpy(d_rev_meta, h_rev_meta, sizeof(int)*((V+1)), cudaMemcpyHostToDevice); + + + + + // CSR END //LAUNCH CONFIG @@ -95,7 +52,7 @@ void count_nodes(graph& g) initKernel <<>>(V,d_prop,(int)(x || z)); cudaMemcpyToSymbol(::y, &y, sizeof(int), 0, cudaMemcpyHostToDevice); - count_nodes_kernel<<>>(V,E,d_meta,d_data,d_src,d_weight,d_rev_meta,d_modified_next,d_prop); + count_nodes_kernel<<>>(V,E,d_prop); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/temp_algo.h b/graphcode/generated_cuda/temp_algo.h index b59fa17b..91e72562 100644 --- a/graphcode/generated_cuda/temp_algo.h +++ b/graphcode/generated_cuda/temp_algo.h @@ -13,15 +13,9 @@ void count_nodes(graph& g); -; // DEVICE ASSTMENT in .h - __device__ int y ; // DEVICE ASSTMENT in .h -; // DEVICE ASSTMENT in .h - -; // DEVICE ASSTMENT in .h - -__global__ void count_nodes_kernel(int V, int E, int* d_meta, int* d_data, int* d_src, int* d_weight, int *d_rev_meta,bool *d_modified_next,int* d_prop){ // BEGIN KER FUN via ADDKERNEL +__global__ void count_nodes_kernel(int V, int E,int* d_prop){ // BEGIN KER FUN via ADDKERNEL float num_nodes = V; unsigned v = blockIdx.x * blockDim.x + threadIdx.x; if(v >= V) return; diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index e9fefad2..ce91ad1a 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -1573,7 +1573,6 @@ void dsl_cpp_generator ::addCudaKernel(forallStmt* forAll) { sprintf(strBuffer, ",%s d_%s", convertToCppType(type), iden->getIdentifier()); header.pushString(/*createParamName(*/ strBuffer); if(iden->getSymbolInfo()->getId()->get_fp_association()) { // If id has a fp association then _next must also be added as a parameter - char strBuffer[1024]; sprintf(strBuffer, ",%s d_%s_next", convertToCppType(type), iden->getIdentifier()); header.pushString(/*createParamName(*/ strBuffer); } @@ -3368,8 +3367,11 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { sprintf(strBuffer, "int* d_rev_meta;"); main.pushstr_newL(strBuffer); } - sprintf(strBuffer, "bool* d_modified_next;"); - main.pushstr_newL(strBuffer); + for(Identifier* id: currentFunc->getDoubleBufferVars()) { + Type* type = id->getSymbolInfo()->getType(); + sprintf(strBuffer, "%s d_%s_next;", convertToCppType(type), id->getIdentifier()); + main.pushstr_newL(strBuffer); + } main.NewLine(); if(currentFunc->getIsMetaUsed()) // checking if meta is used @@ -3382,7 +3384,14 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMallocStr("d_weight", "int", "(E)"); if(currentFunc->getIsRevMetaUsed()) // checking if rev_meta is used generateCudaMallocStr("d_rev_meta", "int", "(V+1)"); - generateCudaMallocStr("d_modified_next", "bool", "(V)"); + for(Identifier* id: currentFunc->getDoubleBufferVars()) { // all double buffer mem allocation + Type* type = id->getSymbolInfo()->getType(); + sprintf(strBuffer, "d_%s_next", id->getIdentifier()); + if(type->isPropNodeType()) + generateCudaMallocStr(strBuffer, convertToCppType(type->getInnerTargetType()), "(V)"); + else if(type->isPropEdgeType()) + generateCudaMallocStr(strBuffer, convertToCppType(type->getInnerTargetType()), "(E)"); + } main.NewLine(); diff --git a/src/debug.txt b/src/debug.txt index 6a87fe00..540e4197 100644 --- a/src/debug.txt +++ b/src/debug.txt @@ -1,230 +1,134 @@ -fileName ../graphcode/staticDSLCodes/sssp_dslV2 +fileName ../graphcode/temp_algo Backend Target cuda Type: function '('Graph Type -',' -Node Property'<'Type: int'>' -',' -Edge Property'<'Type: int'>' -',' -Node Type ')'currentFuncType check!!0 tempID g funccount 0 -'{'Node Property'<'Type: bool'>' -';''.''(' -'=' -+Infinity: INF',' +'{'Type: int +';'Type: int +';'Type: int +';'Type: int '=' -Type Bool: False')'';'TYPE OF NODE OF STATEMENT1'.' +';'Node Property'<'Type: int'>' +';' '=' -Type Bool: True';''.' +'+'';' '=' -';'Type: bool - +';''.''(' '=' -Type Bool: False';'Keyword fixedPoint -Keyword until'(' -':' -'!'')''{'Keyword-forall: forall'(' +'(' +OR_OP +')'')'';'TYPE OF NODE OF STATEMENT1Keyword-forall: forall'(' Keyword in -'.''('')''.'filter'(' -EQ_OP -Type Bool: True')'')''{'Keyword-forall: forall'(' -Keyword in -'.''('')'')''{'Edge Type - -'=' -'.''('',' -')'';''<''.'',' -'.''>' +'.''('')'')' +'{''.' '=' -'<'Min'(''.'',' -'.' -'+' -'.'')'',' -Type Bool: True'>'';''}'ForallStmt created +';''}'ForallStmt created 0 0 0 0 0 -'}'CHECK FILTER TYPE1 -ForallStmt created -0 -0 -0 -0 -0 -'}' -'}' -error val 0 + +'}'error val 0 at 1 -ANAME1:6 -ANAME2:2 - Setting device bool -ANAME1:6 -ANAME2:2 - Setting device bool -FORALL par NAME1:6 -FORALL ParPar NAME2:11 -FORALL ParParPar NAME3:6 -Parent of forAll: -0 -0 -0 -0 -0 FORALL par NAME1:6 -FORALL ParPar NAME2:18 -FORALL ParParPar NAME3:6 -Parent of forAll: -1 -1 -0 -0 -0 +FORALL ParPar NAME2:2 + TO Set DEVICE BOOL + ON: DEV ASST +ANAME1:6 +ANAME2:18 at 2 -Function Compute_SSSP +Function count_nodes { Declaration - Procedure Call + Declaration + Declaration + Declaration + Declaration Assignment Assignment - Declaration - Fixed Point + Procedure Call + For all { - For all - { - For all - { - Declaration - Reduction - } - } + Assignment } } -Initializing 0x55925bb65ff0 6 -Initializing 0x55925bb66200 7 -Initializing 0x55925bb66860 17 -Initializing 0x55925bb66a80 8 -Initializing 0x55925bb66cd0 8 -Initializing 0x55925bb66ed0 7 -Initializing 0x55925bb693a0 11 -Initializing 0x55925bb67180 6 -Initializing 0x55925bb691f0 18 -fpId: finished -Analysing 0x55925bb65ff0 6 -Analysing 0x55925bb66200 7 -Analysing 0x55925bb66860 17 -Analysing 0x55925bb66a80 8 -Analysing 0x55925bb66cd0 8 -Analysing 0x55925bb66ed0 7 -Analysing 0x55925bb693a0 11 -Analysing 0x55925bb67180 6 -Analysing 0x55925bb691f0 18 -Analysing 0x55925bb67180 6 -Analysing 0x55925bb691f0 18 -Transfering 0x55925bb66200 7 -Transfering 0x55925bb66860 17 -Transfering 0x55925bb66a80 8 -Transfering 0x55925bb66cd0 8 -Transfering 0x55925bb66ed0 7 -Transfering 0x55925bb693a0 11 -Transfering 0x55925bb67180 6 -Transfering 0x55925bb691f0 18 +Initializing 0x560b34f87a20 6 +Initializing 0x560b34f882d0 7 +Initializing 0x560b34f87bf0 7 +Initializing 0x560b34f87d70 7 +Initializing 0x560b34f87ef0 7 +Initializing 0x560b34f880f0 7 +Initializing 0x560b34f88600 8 +Initializing 0x560b34f88830 8 +Initializing 0x560b34f88f30 17 +Initializing 0x560b34f895f0 18 +Analysing 0x560b34f87a20 6 +Analysing 0x560b34f882d0 7 +Analysing 0x560b34f87bf0 7 +Analysing 0x560b34f87d70 7 +Analysing 0x560b34f87ef0 7 +Analysing 0x560b34f880f0 7 +Analysing 0x560b34f88600 8 +Analysing 0x560b34f88830 8 +Analysing 0x560b34f88f30 17 +Analysing 0x560b34f895f0 18 +Transfering 0x560b34f882d0 7 +Transfering 0x560b34f87bf0 7 +Transfering 0x560b34f87d70 7 +Transfering 0x560b34f87ef0 7 +Transfering 0x560b34f880f0 7 +Transfering 0x560b34f88600 8 +Transfering 0x560b34f88830 8 +Transfering 0x560b34f88f30 17 +Transfering 0x560b34f895f0 18 { Declaration - Tranfer statement - dist CPU to GPU - Tranfer statement - modified CPU to GPU - Procedure Call - Tranfer statement - modified GPU to CPU + Declaration + Declaration + Declaration + Declaration Assignment - Tranfer statement - dist GPU to CPU Assignment - Declaration Tranfer statement - dist CPU to GPU - Fixed Point + prop CPU to GPU + Procedure Call + Tranfer statement + y CPU to GPU + For all { - Tranfer statement - wt CPU to GPU - Tranfer statement - finished CPU to GPU - Tranfer statement - modified CPU to GPU - For all - { - For all - { - Declaration - Reduction - } - } - Tranfer statement - modified GPU to CPU - Tranfer statement - finished GPU to CPU + Assignment } - Tranfer statement - dist CPU to GPU } -fileName sssp_dslV2 +fileName temp_algo param :g paramD:d_g ========== SET TRUE -param :dist -paramD:d_dist -param :wt -paramD:d_wt -param :src -paramD:d_src param :g paramD:d_g -param :dist -paramD:d_dist -param :wt -paramD:d_wt -param :src -paramD:d_src ==VARSIZE:1 -varName:dist -varName:modified - ASST - DEVICE ASST - ASST - DEVICE ASST -varT:bool -varN:finished -IN FIX PT -Size::5 - ==VARSIZE:0 +varT:int +varN:x +varT:int +varN:y +varT:int +varN:z +varT:int +varN:w + ASST + ASST +varName:prop STMT: For isMainFile val 1 Entered here for forall INN OPTIMESED --------------- _ _ -_ -_ -============CHANGED BODY TYPE==============1start of kernel block -=======IF FILTER - ==VARSIZE:0 -STMT: For -isMainFile val 0 -GenerateForAllSignature = 0 - ITERATE Neighbour -src:nbr - ==VARSIZE:0 ------->PROP PRO CAL -LEFT LIST SIZE 2 -VAR:dist -FPID ========> finished -FOR BODY END +start of kernel block + ASST + DEVICE ASST finished successfully diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 116065dc..465f22d2 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -270,7 +270,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } if(depId->getSymbolInfo()!=NULL) { - + currentFunc->addDoubleBufferVar(depId); Identifier* tableId = depId->getSymbolInfo()->getId(); tableId->set_redecl(); //explained in the ASTNodeTypes tableId->set_fpassociation(); //explained in the ASTNodeTypes @@ -375,14 +375,6 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } } - cout << "Parent of forAll: \n"; - cout << ((forallStmt*)parallelConstruct[0])->getIsMetaUsed() << endl; - cout << ((forallStmt*)parallelConstruct[0])->getIsDataUsed() << endl; - cout << ((forallStmt*)parallelConstruct[0])->getIsSrcUsed() << endl; - cout << ((forallStmt*)parallelConstruct[0])->getIsWeightUsed() << endl; - cout << ((forallStmt*)parallelConstruct[0])->getIsRevMetaUsed() << endl; - - //~ init_curr_SymbolTable(forAll); //~ Type* type = (Type*) Util::createNodeEdgeTypeNode(TYPE_NODE); From f5bfc980d0a52eb7da2ade9dd09995505d120441 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Wed, 22 Feb 2023 11:15:35 +0530 Subject: [PATCH 31/38] updated gitignore --- StarPlat_DSL_Project___TECS_Journal.pdf | Bin 729737 -> 0 bytes To_be_done.txt | 22 ---- src/debug.txt | 134 ------------------------ src/dump | 114 -------------------- 4 files changed, 270 deletions(-) delete mode 100644 StarPlat_DSL_Project___TECS_Journal.pdf delete mode 100644 To_be_done.txt delete mode 100644 src/debug.txt delete mode 100644 src/dump diff --git a/StarPlat_DSL_Project___TECS_Journal.pdf b/StarPlat_DSL_Project___TECS_Journal.pdf deleted file mode 100644 index 10717b6fd2b3cbb6eaff4c23f21cdc3b965924c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729737 zcmeFXWmF|ivn33TJB>RBhsNFA-QC@t#@*fB9U6CccbCT9Y25Xr@AKaK&7HZwXU&hd z)~c$LSy54$J67b{JMxgo35ihC(=bDmbU)^QK(ny00_Xs?1{Tm7yzta=Gp*SSpW;`mw_;Vg^it#0YEDQU}6H$Dt*~A zGqErNczB?VZH)dp1^nMSz9z!Dl@exV?4V`S|5)$tcYMmpwyx=d^V^z2MuLs0(?m0;QDgw z{0~-4|2sak;z9sTE;<8xCKEg$Pmc|X zu=UViY$yv5|IDk_0V%|A5FqBa1(@@q42{$SiEDcS#18^h=pe{2++5Sq(SLlBfwTDe z*(c(VP>`$~A#`AijP8gsOyRn+M#cwZfC810!dw0g_rJdNe>?F1JAnUg{~LjSBk*qo z{*A!D5%@O(|8F4hMb7?mp#NlJ zC#x?m>Ih(C_*ajdzNxX4zJamTKO{}&=NDVk{4)N_*c87=++TXe@ZVa08PFHk`g%|L zKX{(9qw#;a{g3Xy-v2d*fB2%HzLUO{t?6Ip^e-C2!bvB$E|j5_L&{c8t=BtJ zyqkc9-xYX`mGmQc0K5{jA_1+1LrYU{vA1jl!v#Rk=K!xsMD*#$0b-7RC@s~T?0z^U z69cK8_TKixYI!BZAi3O&xXHqOfa^Io&rZlmzr9b27Cr%OcBqvBm&}haFX)f7gfv&x z4ic&a7B(qVdN?VKOZ8h`1)5XnFtbFyzaz99-JOYeP<;A4flgd<&rDkU@WvS%7nzkA zc(|k<@}pfVQo6h1&2A@0G%<4tBj1_8_&Ogc8{_p4Xoz4LS#b!Byx;T*A^mbp&V)0- z6yQIo!_e`|ae&Gqlj{-p^tHKHMel_^sCIsZnKjSe-2r>Y_C-8q5X;CwJAX5mO_%^RmsPpFYn1yANXGbFi_ggo}(Kv_q*tdqv|F^{yUs68($%XWo zbccU_T#(~FTRasC4ODS$k`i$_ml+zYV}hYX?Gv5&%tq%S$P6ujnFKW)7eAd_tDl6H z2Z#Y+VFj4Y^Mpjg71Ls6HvwQmMMgv6_vFPbf!}1w{Rk0{&9zh$;TR#Z0M`2@Bv;cg zLr@8g?-{Sq<%k*3mL@Xh9{4a@P94Bep4?qmOd`87Vrzqy@iP^+qj#>~!AyJ`KM#xBAP^!Y#&o6twAM9-{ zBonFkWeiAdRy3^FZFs94+*y1!JQ*?eqkp3fe_KsCbDF(cq-&+WdJZnj~a zlh5YaNJIzkfQ~iFo(=aLGto=X7=Eh> zyCkMW)@jdRBuBf9!Cs-HdE|60lz+1b97@c$SI836m&$|qv(;P@43cDnzz;{DOIc3f-u{;{ds8}rAB5b<(* zVsesgYDJu;mAL74brfQ-*zn$Hlx%dlu)AxThA$3Ji|1BihtsIn%@aLsqG(Dh&Qw9;ZkytlBbNqwECV=@ znFgS(&uGr_v^EXa&rXXJ2COXzVw>LnJ44butZ*E~iNN74m!gCQ5R$JVkW#Ufj3Ab8 z5kZZmBUT-d6mSnPkXz2H6ng=%FGKB#quc|QznI)Z?1H2myv8@610Z&8A%&oC#^T{u zxv=m6G;&FZ9>2P~v}C?J1|YlKNc~C&1$p=$|GM}zQtQ~c2A13kCSU(xsp6bXTxo(QUJsETRl~e5CXU{{y9W)bYf1W3Yd7@1}T}k{y*m3DN+ga~ZJb>Dk=!zTl#MB&H)(t#mDTy~rie=cZ|BoWuh zwT_h?#DmbSQfP(Xyt6}>{Fo|OKgD%8gSPZwXYdO|-mjIoA=r)kkghG4XF`9(8ShPu zQu=8gf!Anv$4MKH8a+b_r`!Gd=IM_vLQYOk=fJF0<0g)dv?`_%df;`bR!+4EYsNwN z%0zvF6juf*F%&d z+~Ccw=aUk22)*MS&fo35-#=FmMx59b`f;9tqm_6?Lrg<1w>k_^8!_X#VT0fW-Ba`E zdScH_k4H0(Z1H(O1Wjc%SSUSH2-t)(2n1HAr-4{m?i?L&ZqEXS$tK{Cv;uGk6jHLP zdcn2LdbE}vZyoKfPVdJ8J84Bh=uM<~ zMN9B?y16;PMN3NZjBB%VA1y)%IFI=lVAHH*CwM)cKUSvkM~tkUZ}6P=tGsJ;5N`Is zpH`5sX|ugue?BBWnGd3)rPA;|SGiBnaXR~EabJJzZae1v!f}s%B#&AsyFY$_RK6te4F)?Rqol9wI`d5PG|eib;|^X0LT|UvNYm$8 zD7+XLL})viBmyTnQcO;ZAM$9|Ksy?rcPEZDQ?fOtGSD@P)i=O(fT)k+89EbsWnF>iV&x4ES=&bEF_OAb2@d(oc7B?has5XXbbzk=EQ) z=&iSSv4bK`=veaxAQ`trj~-T_@-{CX<Y5 za5z?f90U~hG4RwwH@_hg@iUauap8@p@yFU_{tkr-YJ#+9kUn(TN84BFBC(QPlS>Dd zo}X8FA$zQytD*ete)nl#tMh5`$MLKo;R4}R{?(Wsug$les%Bu4KIR8HJZo!Clx2c_ zRM)zHRm}46Ei!w||vgxZj4g~o zQOqt^xEGCmkbFA+@BppdX64jQ4gaSkrglrw4^k_xY9QEp{VsmLH?Gc7fp2g!aW&bS zPuCG0*6wEB{)MQMGmLk2kql856vkNJoeU`&^0r;? zEZe}P>#$Gt`L*Qp;KtL>GMrNvjfa+SH>!wWviUILwD9gCDmN$1-Ljp;{wl|+Hse8V z9kE=wgTDk#P>HJ4&sy%LxDe^wVqV@kSDJkUug#lj!{edvdla2PH&RjpX= z`aWmRemcuKs!a=+Y)tS*Z#6JY(Sk0zZ?##$bxp^zFfiAtG1OcpG_UC0^uiJP*%GQ` zNIu9y{b4oIGUQObCjfImUl&NyTgr7itBq@nxE70C?yPbZKILS9&zn(dsqtLUhwO#D zNa5I+wW)$COMOhUAP0;rxn$M@cV=%pUR+ijC#Apk`@0}|BHxKxzY@54qzEt}&Kle8 zFt6Uv&+Z$7jgw3qu{AT=Dn(u6xJ<_~N%o|Mu;TUBnhV<;Yx zU*NGdT>=%)9h z^xCwj!R`$fZYzB=JQJ{{OfUHr zRV=h*H=5HV|AvcR7wq+`+4$an^*3^5-?X*;UQ2Ce_Y;(&;kDX=T%clxgtsvpDOP0) zn1@LNdt+@#pZaYtcNVLgjCQnuqC9*Nh}bALRu)|&Ax?l1CItYxqX0YHoJ;L&#Dhf^$D&4N0Oo4?x2aHMYfZA5aGV{*r{Ai5lWQdXm z=xK#idMHm3mSY^CPPC2_g(S?@R13?dmXi_zrwfS|GM_PgaDKZOOp6KA_Q_vu^Faka zAZSmH7nU;+$A%_5z<90oMyL~-vYW*Ay<}Ia1I>0olO8o^pp{K`Dh0-#K%#eGps1xI z6YAsBgMucdnetj)E3CYlRrNq%VxZc9rfN`t$|OR8%BGq(sr>%@R)A^{372&jTzT|H z;LTaHij`4LC#+E|rF(DX{ygG$=;UG<)!-q%q&=lK`X{39fa zCsdjkzjx2PW*S9%EUPl)Qs0;<4_a%@X_RGo?KED4%ge#$R|=Bj^qopsUY^gQD=RSD zL>BY04Vh!{E+)S{IyfK|pe$AaL+!H=H|D+fy6jgt|v zguBHkc3WkT;q323zSJ)~VP0s?rlHZRk}W@Zu09C9&)6=V^m3*`N1wk>BKK*}ni76K z@Z{-~X|gsM{r>PrG6|%(D{ZTa(nHrXeYiIIzS=bIY!zY2(cp2d6WEx(WQ8y=o66E9 zE6=O3V+->GME)f-Ya0{R2ReXtFYbmW%@7W4u{(ZMR(p z$>#lW8#ZMQVRn^?3sF~nVv`N>BlJnPM-P4pP)Wxt zhx$|gSgj`50IUT6BDz8pRclnZhme2yP5!h;!va*$67H2Zb*t?%(&xH`c{NX$v{RrJ z(#9Y!szt;mRKUZ}H=UJ$Zl5AyiLFb5#G!F(0ojx57w4|Djfrl7yR#L~HY`j;;RoLj zJqZa8DnIkJn->|rhRga(3fbd_&quiMmTz;b=&D_9AtW^k**Z9N1b(mkGgUTm3#C%^AUcRZT7* zYNk0&q7@P@=Gcy`4cwhas|8xJezlZRuLy$=BR951i@nn8g02(Dn`2q|$wDNpE6v6i zTa=fS*TZciDcSMXmtEI>VXq?PUejH*$NN<-rXjZY2@;%ZL$>8x5X@MHwO$PJ!aHlF zd)AFQojbX8UTtlvCsT_r#%ma(h?5MSQczvh`iLj0b8xzNKh92O zM;+T%o2o7FYMmVx-)Pwtl|ug~>Hl|^`ah-r|ETZ(skG1o82;8;{J%*U`MqG}F@FZV6}sM~L6H>D}1i zR`chKaje>3zx*uUEU!A76+sEVwRqVfc?7pBKmVF7}H z;Y5ak!R8_<0v}mKd%|buDngrC0o&J`enfz=H_Z(@YnSR9xZjYQ?ZpEenZW27L)182 z*E-zR)&TuhQ*-?^Jl>vwh^4cKNCQDh19E_W;6rznu!j((HH|GwI`hc><*ptQ#Tol^s&ebwLi)Fu2z7w40J^$cu3Qu4woBl_FB!`h)nmIm%NwlC+TffVw~ zfD&ASKM#)#4q+Xfe(E~_uY3%~Jy+9RS|>NKqPx`8gRHi<^?WMlfR13AJ#4zr9{S){ zMRf**bWZ!kf{kph@6uu&+C)#JKLE&Bb1MeAtv7|Qe2kL$RDsA~U|?9$X@QPGf!x#8 z=|7YB`p3UNHOJr6UUNe5;)_Cv`VMl!<>HTgd-?#m+%wpP2W{bK2Y&bb`1PajLif?M{7jI0m)nX8EXF7W@*~}~W;Pc1e01g*0Ph{pfkO+&63J@hFC#`Qr0@(Irx4n`S-)B|8K}>Z;XAp?* zqwYc1;|VWG`=2tm&ozEuM94*%6M`}4I*DbKuPs=j6x8>7t_TTBBx>*(F zqpviftD37H%~1e!ideE4EwFtHllyA>=M=5mYT;ZDp!(nV18{n1p8>8w6G%RYw7%*$-Juy^ zJyiD)wck>UJ^{`^_2>9^+59^Q?$fzX5S^xSF9Dm36Uq4Gf_^p6U8hMYo zb6)TVfc2K10ybAHKKL&i&EEfBzAU?l5_pe08Rq|9>OTpmT(Z&v{=5Qzh~6x-Gh}>% zbg9C;8GdHp>k{1!Z)f=q;y>xs1%VwSd`P}RbkW{$I(>@vbl<_-Onrtv+88_|JmJlp zcE|2@La69OtMvGwz0tgi3M9MSuzdPn!diaTeFpA&x-|OatbaoP-V$7E zUrGD;X{`1^bnr?&a(-1(`j`s;d1de((XfYq?=g+DMGF(ct9{^p^yF>a{?^Iiv%dN3 zqu_hR<*4?@!UOuZw$A{zqxRPESK-&;9q!qj0JrX{RPD-4zt7`)PIXm;5FfUV+n=ux zp0-J^yxW}AF+Mo^?T@_iwVff4FA$z3=kFmm9>lh}x7`Zw(_0TbBW! z+ud7re7R&Zu-?>^sC=dP>RRG#8A`%7_`igPWkBVcb`O78>!^zIa;~HJ*-fOb^Pi$ zakKS`+XN|CJgv&Jm%}2mb%(V%Zu=~hKri!G-Jbma;3_hw{J|mQ(%W+{?n8^4O|g>1 zaTg?l-Ec#(Piz`#3{+*CnLgtc)XsTB1H?BBm}qR5ZS5KEhB+-k^?H4-**Yk!;<2cH zY6w0`i5Wsi+NG`=1ulj&#o(_#QK@>EFui-e~41T!g8I zUWMoN^ael@4lLy-40UN9$GZjb*m3a8r^{9ifAp8WDKfEVxa(Jblq7uM&?`Fa)K-UY z_rm9GwOWozNp%$pqblsNimK_PZ2m&LmR^uenHD0%$yg3eBYTw@SCPsJ8O3lH`jM}s zD)ViWgqTLn@yAM|Vt89Y>QHf2+kR?ID_Z$cDCivX6-tQgC|00Amc98^*AFlRgM(s% zi@;b@DCQIO$8`-jda@9Dopk5cXPiX#k6Ixcq@9aW^URPk%kq}%)`|{Sl zheQ(UW@n%xJ0bYvjM{0_DACUUn>}<|)EMuP z-`PCP+QElp+9o$HsH2gj!VhFMklZ7g&AAsb9akxD%%kC$Lyv+cqrg6}Y+MGr(Gq1( z)oSCr;(0*7zhoH6+dFzfu?L28>tvjqhUg<&72#LT#P`v2>Rp;v;|^l)*Pe*ha4`FG z1TP|v?-tB38kOyzADR=`%e`UC9QC?)f=)Si|j_E2jgH>%p4dS=xwInXQsUJd6IhB02PC{ImV$!%^EM}l<2VK8*9V6i4PDA213MR} z8_Kb(KGPUK;Lv=XlqFq?pK=K61WjkJIUjmfUZ0&}eUg4O1o`9yg^dvei5t>ttC)eR zk#h=>a_0as_ZX#(uYWTT)8Y9BDbG^FsEI2y@_*ny6!0aERh0# z(LrgWTCS?|0)4pCJ%nBH30dihJfzw|gsp3#OYEEXuH5&*r+t0nRaC%j4}AO`44lo3 zC`A+JeV3$ie_IJ4-79z@W#Z_n7xH!IxN@lC-7azhav4p@#DEy)=S-}DX_5kPLrbBJ zEj-tP%b3NFAmcH0L{odB1*#4rjz76&zjcifvx0B+hzpKN3x1QMrJFy;(}?N7p~RKU z2b-ltmf64SF-?#!Uz;QLCYt4w=O0TKLHBLTDI|CHzcRjGZ4Y5Z+e{Xr7eWco1-y;Fr%wl8xO8L zm{eT4#_M^qbx#%pLnlxG!wML)eu8`v4!;Mm!jIwEV@WqBfQ&2yQ*qo7bsjI^_r$&1 z6!6VyXyK7cZ?mnTIB)fDfXQ{qZ^l>6*(0=5kT=Uhrh`Ym=I~-y zj`wzkLX1Ph*nQ9h3(WA{Ia5^f-a0DM$tY?;R~!@XO(k7s3j1<(b6T~p!{{DeD}WC? zY3Y!9Ur)NQ7L!~U$3v148_}xqh$WSX4fa!U_>Y@G(A7YAPD^E|yPS;2^_Z`vD|mge+PM{#nF>|9*)VpY zdZ*hMb=Rm6w0h>gHxTS|_jyf@{2}a_MFx&nMreav2<#ZXJbm^HGPr7D^_X8$CqWxn zo7YZKzq-qTseJ5ph6W}&Ajn*@Ap@q7eH+B5>e!f_rerrj0Mn10@W&{$Z821ruI(sp z-bhQ^{$4Dqn39tSYo~Oag2Gjab?2h@~$Q(2Lw(Rw;UYGV+!_}pXt#f-O z99EB%42l+^LcJ}^5&pAVey^W7JwEW9p{PsI3T-j+1NoN1Wy=2Fv@kF*g5wtEV2J zfCnsy&L?x~8Zhqb-f5F$Z!k=7^)xs*gmi?pLy#ntFr%Lc6@+3TBIfV?B+f|H5T4q| z>1^I@0B6@Bcsh~f5Bh3zLm)^H8kqJ5cIr7)afslD?Psa*n1vTUh84z)MB{K$PzG9g zAHz++LuV(;kBfz!CB1C5sNpKUC_$6KcrBYk4xE)}KtQQdn^KMv7y-McD&Pk3{Ye#m z_$Ehn#K?ivGWJOB26!^b3fZ94IDKz@!C}h`i*_{>yuO&Wd_qmxXc@WrGS%u<`KYHd zq=>xoc1-DXM}2y&LwY5+yxSbYhJ0>qlr^Xc7FL5UwvxX775%+*$EQttkH+Zm;ujLm zPdzTB0@z5N-*vJ?iO813D7CymK6^;U>=%uvLrMv|m6P*oe0So76onF>!nK&m7(J}+ z){8+tkIo6XPbM2)kc!D6Ekbq@Y2;vj1*k7gNEDrn`IQOdPoH~9&1ENfN80WzqZf0!L-&8ZasrTTXpk1w5Q@+;ZVCsG*6ic zYc^<)=QW~N{LDs)8TE(3XwDpFgwEN*xMI}F(i4xBx1E(x&kMV_ZOXieSakSr) zIzVn|2(wZbp%|9H==%-40@Y!080k}GiL0%l8#WrwT(F_8b-cMJ{Oi#3(zZS$mJTZ{ zhM$A9WbxCl0u%n*KDDiz?BR;wOReKsGH8%|e27RatvUyYh3>t5obU9hEy-?vJ>Bow zc#huIc@^D>2E!grLex`~o1u9>l$1NU@)Zry=jwcJ`1H=g9j z-bHSeG9dFPXC82}=a40~>b&9asV36LyD_wJ^x-X|sMuF#hE(2OgU}_;ut;_&q5hy0 zc@;c#C^a!KViXfv1gk3d&>gPleI{iq4y!*yLy0xfQHACc%X%siMNBak=5KBP+NFzn zNC!=XfWH{aOGzpQV=>ih#z!q=hDmP7e@jF{QS+LYv4jG5xAyBUGzyHJ#~E2}E?u12 z$u>0ULtu>PiH7oDd_x?yGadBmEl?Ywe@;N0dJRpnb*Zpfds&=Xc_)=T;K;@iCuhfB zVw$ z&2SD&EV?PB<76PCNew26Fr>J?hh|XSUC<)fY2T5C=up`jzr5&rCqnH zsW)S_sl)e8$a$Kb+1n_O*)^CYHalbNpC6m*&^$8v_`M4z735}yPaR1M2PjLOkd<(b zKAu=oq!vK3H~`|}tl89?ocQGcltFhTeLo4v;AF+#hm!9%M;m#kl$&;!EA*a30dRh& zg?~b4cDRTU8~l~hp;+Vvv|n^&Fo&TV>$l-2+e}VqJTXRkm4|VO9Ww&G1YX=1bDiGj z47FPdCis<>{94z|+di5;i%8(t8~IM>&TevTJ`Y(JgQk;0%6K|;8nhhp6dAd^#+xAf z2CK5T`->a%I}3xT@^J;y(wXF=4nxY^wfC{IHzz!b=rZf_n{nJ0%y_;9;Oh>EQNGwG z27(;a@D9&O!<`b%;OeO;~#4cELTY&rw2%!XRLuoJ(UcG6l3)QMqnr^J4V({YwI2yN|Bsq7jya; z@Us9<%WJwN4yve#J>Ex?FaP8suH!-LAk3u8<%#6UT7M!`LB@55I)F+K+7;fPGq48L z!jq?Bm1T_@`Z74*vSNCQyNlvgb14%KiM0A%a*G+<8T6mdEB0oD5WQRwnZ@BQSfY}E*$cw)0Sq$&~ zsilM10ISh(j3iSQ592*uq+nGN*!_DnTeOMv!4HksDYMAfG^iH+6+`8X-qGTmz zh#$*@Rb3Q|{DN{3UTpCa3OtgiuxiaK5Q8087z?lh1Wjat z!tOFMgpEVLiiyHe6!MYrx(z{kBVGKL=zJgcHkAq%!b)>ulkyE6_+ zy`*o>Y}5=`lsma7kR#6M|19qcDMjeA-a4wT|C+gOntw zWw$c2Ci3JdTC&>80*%IQgl7?PWR>ajIv(sVK7_ueJ^eoAR2^PMZ+yHseOCbqzltZY z2#0JgvE@Lj)MI{H>`knXf51qCc7P^(wVcPwA$F-ml(LDu__AYxNL{NRy`U}&-Q0uJ zB8a}<1l4%zW!)B{h@Gh;X{T^f!Re)PqfODqQXO|=fi;bUcJ2VFs~9q7!4*$wFW!24 zb!u-ZV|43B&{SD;3o_P-)briBqDfWw}Ol@BKG82XYuViDaZw$pO=x zao42)Pwg%F{DDomAeOt-9&LoMliSh!_=@lY%7*Wtxk9+eZ&So5l&?#~XPTMNIY+$R z@ydn-y6|<^RN%y!9*@77nLrRtR`65K-u_HkZ7+snM1Z6_XRR4^WwjJm3RQBQC0+Pb z>b>Y)ts43&lJl*G8VhrRAKy;a&7|~})o8<*>cU~oZbe?<@m-jL^QGtn9(N@+7186Q z$%=Y*obEb=O7fPcX`b>}^roC204HQGi)QumHI>rdBSGyi%}$F7MFEGfvxqJiA6g_J zQ+vdB#Tj<-xKYU3x{1YVwP6|5)=2gL)cZQi!^F_(F^b* zvgQg6ir@pd?Q3>7Z{mNcgO-6D{Tk42Ej?nO>v+ABbgrm=x0DFQmcY<1PUo9GJdhz; z0mDb$5Bn4v;-*qwRD5y>0ADAg1N%m@$zkrp@176_pYZK)c<_oP-TjI6iDo2jh1GNu zy8Li74*NULy* zBJ6+_r#T*j!Q~IGM@<;&TO-M_m$t}6V^M2aw?}PXs)|A1u^r#2B)SjTr~MSS*9gz_ zab#3@`T)O43==^*sY_#|3{X~^wEy7rK0-EtfER(M?GUj-m0?hKU;or?(c2$a;00&3 ze9|gqm2-}n?@HaFJZtg(8@3|O@CHyew}|}*dMCm1#@v3EvW*X!d8fPYd9uHVBb3Y) zQHCmA0V)-^)Swoe;zo!V$h?J%=|{BnROy*5XXPeT7-;42n8yknwR7noMY3}@8K%22 zAuCAZ<=Q;Vh~)+{b?{VKc^WZu`pgsj9(glVDeC|RRJeQV+H{cNg#H()hZ;`aSU&Xk zD?=W&#a=(m2iKYnV^ZXZvWEbH+~XBs2>CkqcnDb*)45C1w$I2b= zD;84>sRjBNO$|s_<(Df)AV3m1)tkZfB@Z@+!$U4|w~JlPkC43gt%^~0m-YoRQ5A-o zyD(&3oImH`K0Z!0w})iQ;g9K-*oe69ltynI@g5`R^|3Y>+M_*V*XPtgv)g2+Wh$xj zrg54{!G28SYB2mh^-r3|cdyi5=7mPVJkKXg*#-X7hk0Yd3|%9A!(h# zF#tVLU%yUI6ZkMNrjN9O(;Rj`YFATjSBWkSZZX$gE%i;?NAYzJ~IFK&JNB+&>sBAnTwSb6X+XQ*Z#$e!SYC^-!Lsg)lys_n`? zkhgFc7^<^DH$^zXz!xi{dqh|VjV_+EK9=V-;qoTYOyQ}_sF-l#&MONi%gOyrgq?Sh z5o@(Gc&`NaB9tBhPn108VRd6Sao|Mr!&O0-;c{gSTi<-!|7ZV2a^7ip=0u>$7-LOt zMa=Rd*lqahs%oaxYrpOMN6kK#2j_zsr1Y-Q6i>*RnHRrjwZ_$tmL&Qm^;##wHA^ItRrR)RP08*LLF_4`^(3!>PMIzo zo?icx6Y;FPDMTP+=M>$>SIOttS}7rxUDTraz_6!;Jl*JK?_uDQn-YNas#dcMzwh#+ zN$eY%@am~m>2zz9hWeSZyBISn`0L06WfV^Zv*v6dG-Wg`%Musz0VsyijU|0P&xSRY zQO>vQW9!CA`=l^j_DKu{RG!oJu;h0e>mC8&g85 z-w)``+EbL5<6}>4oqF*N3dX8KLMK!g=ps-=;5_p4yH%G20!eM5@3RXLJM!lR*vV

Ekb|FX)#kvaZUr$ZJKVU1K{$$(2!EIAU%rNmy(D%yP= zF!!|7`8Eom~w%@Rhnipl+rdI zZz*ufuN#K+U5)-wVK?T9V)jW|$;#<5^w)pBGj9@tzY zC}VQ9akP~_FB5xd7ef!z+D)3A)*xcL=ciHa5Vd1+7dag8h;HHTR(|8W=`t^98mT5< zl_r>iwGpbwOxCj5H({f|y?W_wOQoeXP?kt8hAg9ao)avSEFbtmmIeCdiUDQY`ctV! z2|ZDI(jRU7Sq*_RBVwE37HTlUh^_oofb%6=W8@JU*dXpMcpa1)eS>q|P&9ERZ$}pKw z9fktjLVG&J$)YteFQGbr2gn42qoQyMdG=eDO zf^l?T>HEt89a+rQRD;}by33vHySb3JmN=*oQVW;eknV&uky*2WJWun*qP6Suv8R4-Ooh;u_)UEZo68$+TA;$#dlBa~k-f6TPW{l^BIBuv; zj|$~Lp3L?aQ#lDg)nD}59amB?)zURqt+NI$2lkpEqP25Ulfs7qBr2=%aEB^VzZ1MeX9!$%l(S^l3no^wS^nDbs7Q@d1(= zXYD$M^O&Q}gsH=m-2^%_OWS=a#+UDNcc)lHhUSD$#WPM0DT6K|nkce7vxu>JpOhXcBwv=c4U-VHTfBy!{&*f2QkS zOaOwX1OSP@ZZ#Y{Jtoz!znhn%;(qc&Vs^*pIs@0{dynruo8_{nI)H>$U@biiY|b2b0v0$*33)v2(o= z6zz6_l;HQaTY*z44W39X9xXZHr>9olA18x5A!4i(=Ng9F5oLNiz~N&s2~^S1scxe+&bpg7kvG14IyXeH`>NAOjVVG%7jws_5zQZA(QcrQ zgD8t89GK^zYJ&D>Qe1Gs(mOlJ*F?kB{cY$OC?X}J#f087Zai9f)WID)3IxC|$LGYV* zJl(tu9yna5#w1HI*z#ypo?OhiJb$!H+r7lV)o6{68p5wXU5#~sjp^1kx$I9m&1~JQ zULW8RSk+c5X=OJ`ErS$u$-0V}TA-);qIO_$j7d_FM8k0GRHd45F2T%6k%{g}TeNxC zMGKnf5tmc2AZfb6VZy$Qdc!-M0o)oi##6TYmQPQvM~7u^^m@RRDQypbc?HB;_QoM5 zjlk3!vjr+f%=RARVgSI!o&G$6^)3m%79h>=4K0rYg+i!{cSO@etn8DhIyW?}?ft0I zMmzjSTrtDTGfWWjqHLS%wU+t*>V#a5?nj-0FT(@Y!2kWbhbu!_s<@H=*{@U5O%&3W zRukunyV*aPr$(AKNDEh~w97JR*UlO0u?A<{jl2Sc9^2AR*i%u;il?0mr)e?}KBO~# zPcoXd(X$;puKk41xofb9eq^kc>wjv(74;7AYug#Tcp!&*&-Mt6FkWFY+mD&xMuTaA zcYgAjv;@{??zugp4qczm@~(@>#0!k_bf@>V^^=5Hpb2fz@We8o(FC6w=343dli`Rl zY6kCR>N$b+8euTwI}bRAKts{~uzk#lr3=70l%Qu@&a;&F+I2DPsv9?lbT-V+C`z%UCKQjn_}i&v>)j=8oRCmkZ*&AG zJ}`INQUFMC`NjKDgr|$f#z*j~& zl3zbqI3{_Ye(Dm+ ze)W?%S7S>UOaG@Lbu+6LROxO3a`#(almlQND(NaSg`nS=RiDS7R>u^hg>x0|VGC{#06V>BaP}toAZr+s zA()PgHWnvENJcdwz|?2vN@Dl41x|NWF4-SX7^z#O69!O39fq+8AzbWeU9R+$vEYyTtMifFCcJ)o$%SwJ7*dp8u8wR1A%}=o zW7enWBl}iy8ZT#HzM#8<(Uj~lWe_+G+d!^WlXEnbkHz4oh^Mbm$$RM~TF4=Nox6{Q z%7p%wjkdBT_r3lN%`BL%uAhB$|2jdNqaVkancDkar|Xen9KUumH0xA^q88GtESlQM zISHau%F1 z*9--icXT+fHMEoSNvNozW^-Y+8Lt`CJ9ND%#O{oGajm9nSQ?3Tt#74fy+0(tySuC? zIp8ZZ(M(AZiqEqSTxvj-;4`=$Qg>1s!;}2YxyO{y5itGsQb-havS2Ny$DK8^XiOkD z@p;TzUzd8m&C8=HiIbd1z}T!bTzeIAz{*zGE4r6EBQ@>%n&6cykVtyzr-qn2uf{}& zy1PKXpoxQNx&qM}6OU>iTueb@=)-%sV!DLN&fj;cwFZ{+uf|8Gd83a5^S6yoi%9sd zE$S}(z`6<`v>zlnZ@in zXVFRbqSL85=P5sZMuKou;|(jT4+oO@eh$2Ll1J>>Gp2uT3(_j?BD*0@egHGWhVnyp z^g`4NeQ4A6%fQ);KZUy;U+5ff0xo=~VQ5VPkEn_%ur3NdqG(6evqiohHP z;J9od-w=XN(tT-QC$i}EqQM|nPTFEY6xGoTAzRit&G`GY{H^)*P;JdiZ>4rQ#=G5k zHsg(*R)q0E1Av>RRPaLx#ISsvKf0H6usqZh+mBi(Trf)!x2=F>6hBOezOE-<`o2=K zzFfO$CI^ziESm=*_o-8d+WS*L^M|e2tC>!nO+Teis@}&h$#%*$Fq5httkW#Ygih0` zOl*R{Vfb>+lR>A;5W?Y#I9{yYg<||DLa+hS;x$dODI=m>bbf>&AI0kx$xPO0sc8&f zCbrp@T6?w))3Q zlw}Q<)X!>0@~IBqNQ607l%_dNr5bLx0i-;JFRFae!_#W@jh*r=RjeFT>z#W<=Z*-*0ow$vKVxDr@g;63gH2NZ^F z%FvH}Dy~vDw{cmig-Yq2@{Os#ai2<}z3A#uXD=T}$tIUY4I_ptGKu@U4_F}fQ$-6f3dkrQ1}DiLL>7#HrZ z%JLBjq{H&Sim$_in%DShB_`C_>`0C@M`gELW45XTZ+egN?(J^keg~m6$wVOy`%6X< z$PQRiGt~W_C3HwWBSbz$3?r}^=o*o8cMT?{OR&an5lFaCYx*{QW^`T(LdxV~b|3kk z#$LMO$rOU~?J2CI#BDn`>4}28ZiQ2?dz8h+lSQjcjl>MVJtaKAb_*RC6!Llc4xW!g zH~EL;^$%rpzEKJ`Jiu_-5F>08nsHZ;c1otDBz%Zvl9zat;+z|pGqdS%XYw_f=wU?p zpSBuL475f0U_z6#bY;t8eWaa|0Io6c>Z)J`;&OeYnucSekNrrrrX$#KHVLnt|17IB z#YB(iki3R)aBAfc99D!?Fut&w>BFn3Ev0O!N;)X8U0oav?`3|NYi*j3wz4ZbC521L zr+(T$f>im(jT3#{c~wPw8L&t>>>$rE{WAFo?eg)5Van$$3kaCBDP7DBiE_+CgHPS+LpP4;I*JYSV;! z=>qI4f{7|HV6vFKgQAL3y>xctm?Bj4i9ytpg=P>L;>UMk&ooO-fm?6L zeTO#6Ptwv8Zss>>P$-jnCp#`7$hDIgqOTDmFW_fG7l%BBNEJK3dpP(H?K)|_fRfVy zlkLda5pe`{hgfjB7vevrE5M5ksFjuOHY0Tl*!{2%2S5bvGXAO8{_eh%k95=~AYGUGKvojJeo4JH-9 zzYF|HEwd&mj$E9{qg1{nH^g+b5F!=i8~Ljh>+gyclxYf((H+h&UtE?^WsL5(%shU_jl&v@zeB1(-w&JS7{p#?j|D*%Lc3MO)2CCS_QUlV+}d+&3qj_Y5E_yBVqN6Lf?mpHL|IJv6T6Vk8xp`&@s(YK~-}#R~k#pDOaT{ zI7qV@b1@pRaO`|(;}2rX<|2BNzDSGXD}kAu^fuQDQsMD&&C zkdd#dF`Cz#zD9lQaUc<;b&i<5Cvaov+z=;oX=(4$!kUBRA(tIjb&eaFLZ3`_r0r8G626(|cl^4R{W3~a zBZSlpS0F*)S`RyX+`nT@1mD*7w`8y=7u$`U1ny_sv)s6T9qosqkHT zm1>JCNQdInzu}2e1}RHdC9tMSPMX@m_5NE3;ds(;RW(QqUK4r^I-@GYF}|18kAwEE}TQ!P7XR6G&LX(-pC5)cwvz!nYDH8rVW5>d#ZZK0V94P*@A#oB4&Fh zT%P8R!Lp>l(UPBhMewB{O(ngllcE1G)Z@zGrg<|i8|}!b^&u!V;Y+6QCJ_rQGx47* zV(@rmk*7o$IB~3$qY+LVnZzkTQKRr%dUz9o@6KM+) zodoztgo#r4Y~{5V(t4}1-9$-wfVvp9RsH*N3pO?`ryT`8S6XhyPlXxP@5GEKAEn0F zm_CPla{?AsHe~7czvrQu0*;afmK!R80E=U2^ugFJuJigO>id!#mNU@tsKp&enGJD_ zM1j_H`kNXHC8a@op9yOetZoFlmIstyvhs>uaA$w>hG-Wfjb^-kvmyC!Mx2r`vjF{z zwO%^kqP0@I=(>pPs(MkRESvVtj9fyPsI9K7WTT4xcqB5iS%p&<*wvYhrQ>2c4xC?O z`kT?ih?&U*+WSmikVA{Hj2Evd^F3wqtENnFdKA;E-I#>nfM@>V z*5!Kl=13Dw{>m7Ox#dBj71w}2QdhzFjMSFo^_a?cwEv>BmVv1o%5;J5r0>jVQGmV1 z+PMFo3(H^$IDI~|T`=9?L?~2&(zV?ZVHQ6trj)KPO9`N<>d*`E)O-k5NNqINh_4>r zY?7sD8!8kjCkb#Cy-B%yBz;@5#7_<5UzoKbKBmx$_%yv5B*=}jAK zf&iJ85>(p(cJU-(zzeN}K6teFA5=s2!$@2K51!i0U%^K$^@GUE*s&}v%(mD5`$5`H zZaLpmGMlGU{21@v4C3$;k6U=Zi>p1c*`V;wo*4dbAvS{7fU9no$DIh% z#w{_aXhyS;8TWh{CKWkj|C3i*R;LG=($3R3AtOz%L@!7FJ+jz~xn>@j2tDq}d?@g9 zcjcdUoRVv)A7+RVH*z z7A4m*|4U&?>RrL)P6eVAkGL>hyQQB*p_)GDk&3ctP66el|gl zCWfjKf1opaF4-{`fVHC7i97!J`_f6v%%gnGFqMP3t=jKa^lUFz+bNvP_Xts@&>qYg zlHcq%%k(Cmgk1D}q+g^^ybhf8LxTo`eR^@~b)IVxs=J@+b}waTJ!y=((PtSCixWj7gT1j0ua<7Ah@H$ z5XG#Dww*yx%bzj^SwwasBbA+(k)Y`%Om=AK38CI%s4oh?3SKVqx@)kw;Cae&DGj}L zb?9MlF>1pJHDBX$OIK3t$=iz?A9(9uk77~odplZC5~oYsjlq_rQ^+7yatBUNaSk6A zo!)ybyR1coKRnaCwViJLSep_0{Tr%4Xr5=$p*!#AK?QLAg(nE{AzI=?LMz078G=2H z79nIhrv9CaGT9XD#f%F+=X;VZ z1r4wpr%UXs;cf}129u0Nn8)jFDqT+D4qE(VLLP0;U}Cc+qgYc`^WXef#X7C+u-QE% zB9J(>NtjnkIVH}t;8K^pmvFNsEHs6fH}s~w6E#u7_F;8Hm(c_lySbm@uq!vNq zdy7J)vBFGI1#jO`a~=<$Cv^+S#TMid^;LtL1y?jsQpD!^h@z z-Pv`XGD=xa#Oy7u{n60V%eB^fXKbox+1T{+2DMB`L}V-ABk9ov+q&7o zKKZ@IReooq4ktRoxcZ2MP~2N5E30{>40&M;6g8TZ zW3ehBQ$>6=hhhOa>8l0Ig2|EbGty6jiG3aa^$Sd!`f3&nfp7|X?hzV?QG56C$)Tf| zZsx_1+q26Oxd#dQrN$n$>~z5q6v>1$`FJ_#+IiGnv_Ge68XXXpW&JCy=CfIPA zp0#Is`TIoPW1j?Gagf^C8dzz`?~!Tkfstv_b1aUD+`tbaU!UCwotmy*nvedFdr+f} z_RoaAGTBVsie0xm-c28TXp&|ZdJ=}9%>=wHdt?$%3qSgJ=0bKBera={i;5ozjDo-! z^Q!4#__nA7r}!PhNxVu|LEjFBzp|PJbQEk%l)Miu6{(p z&B;;o1vcpD^fsqgA9YU6R!VpAN7#O=2Y@g72lGMW!*t4G49IOrEOCgvc4Ax9=lgpLtf^_Vf0YlygULo z<31tEva21H#h=g?eO)-Up|?7 zPd*z??1s$|uS!Ky*pWAU%<0 z0Rk+038ed9oYW@K{=SwDeUzw3_ zu#~g(5-w3Xx@A!Df@>|;U~FnZP|-w)yv;74 zP6NB)LH2e0%g<+A3Pw|rs8+(^D0O?*rf2Bc39itK1s_XALCeHa7X>qFv-Veuh8h;2 zhgD0rLs6_K61kveTAFE5ZDGeAtz=%1Fz0{{qG{8SO|ZAq=HTJj&0k!r5KQI!C5)($ z2X=4tJN_>^iNKK5fA)$Wefy5aP^diIiyb4&_jdf|wtnTM*v1qpAc2{)RD6HV0t>8Z z%pPfTNGo_qH|t8%T+l(Dphh9mdre$I-wUbvP`Ykz^}Z!C+M?3|F-L`~Bt z?S8r8-(sn)pxEdVRd63Kh0C|0a?ge%*7+FBmeNHzW$jOA>O=9~?PND?;i62iQi~p- zyL^8u{30fq5$A0fthgMOOkwj^Rb{5GieVj*S4gf9L>p$e+MI3E5{;#>OX>^!0h{ygQki&`jK)D|j@4O2Ry00BSRH8)KzuIqUuB&lrai`HWkTa{^NTJar2Ue?& ze!7beV_7*g3>NJIOz9S1Bb|@ep_+h@tC7izm!5PoWT(qZ8E`oM$hy(Iy-zmoF$1^p z6-OeztO5}j0adQYC~W{bD46MVVXik9`8ii7Hdw#~5L4VHU|H*`p)5p2fiJt+^~ zkg8>=tNi(Z&#Qb+FTO!y_OEqvIJ8pnt~7b z3c@nZf(~ZkIv*+F2tWS1bYVKqTZ4h1iJn~TpF2H(e_ce92NuG8h0FNOdQz0N(_zI1>#MVV07T`3c4-L#gY3yUJj=fqyqh zW+mcpSL`Tefq`2%2Q%(q?r-sfSgq0?D{erIXwq?hPY@(LL1}TM`U~1Nx1vUPzcJQu$A1)w6IdJre z%JhRtseMs{gvmnaD_H{Iht;(UG*;dPQ_0GCOcv)pO4qZARwrToSKZop^&V#%kLaz% zp?|mxR94O?H9EWX*G_c~igCDpiLY<U3Y@{SYjH#d1x%yGQHUVJ49IJIXI0^E&z| z`M(<45j0_wMoowo?kSagrMb)piKXlx5}ibNPTk^T2A;iUx_)TeF?Dp!Uc|v+)Ub47 zKF>tEPGepkLa(J&LfdTl#Is%Z*Mrco=h&A5ul%1K)*Ra)2alm+*7_ax&QlNVDg|L; zsX(MH@$IHhZIjofC)2C{U(g=b|8Hmy+kYhH{|)V7V&LHTZvf8!4eeq2kJ-cVe?oiO zKvhzpJLq62c6XTqT-+ty-KCjXg#Uy0q_ZsT?iLd4E(I01u)FVg=huFH|7pF^tzn&c zK6_q&g$1cdrV4JX%wbR%f;*WR7@C}cMod*VGyr8}ZenC+Y9dlltkC4z2K+@JQm_QX z$)&jw?D4~h;0B7#8DwT8GH=N3!GR<=HUc&@0BUe}YIb;JW&+mC%<%jfTbxfoBQQI) zvVcx71DV_i2#|w7DRO(mi%UC0n>%FveLxkk6#_OqJUA@=ox&lsfpTeOVFUs^iOr!2 zXgi1@6JrNdY~YK`$%-@6hDZ0#FH%7Zg)3 zpgdF?1Oz40KHN`XAW{HWp{2?BPpjU}=;os{A(g^xipczp^{AHnlJ^fnk4-?m!R_*1#|Tp})&}%8|vTz0S$S$fdFMOPPG4 zg6)_(CRA4B*3u%J+=M(t=Vz1>FM#a0!I$-uTf;Uv1AG1e&(H{#ne|68xHg(AfopPg z0F;jYG6F^;_)X6Q&H=!gnVHeyxdAKy0=Td@8hoPa%?{(erzf4JW9S6Nr}yUa4#4Pu zEQ~L~K>UUuoSK|KfpBnl0r>X(s(hmpHZ%ap(8}fjjtMwRBMjYN7%(o}*u&uU6_;`g zq+|AY(*T_5`~UeZ1J|cl;!cbmw}0qAnpvAF>NQ-ebX zglA(9j1Iy)eAuIq5>NYUF#Nftf@N+3di;_>-!1(ixc!*_uKewQ!5;KCqTCEfLxU*% z?LEHD;LMO6z^DD4%l=KD{@D-yhwACSeg7jPIW#hUPS5(J|M?TQHLUc>)ZS!pe&8P{a2gn#s;(>$S|>Uw$G-;C8^N`ESpM`D@*gMm)3uJ z)gL!Ah6JM0>1HZb|7cP-`D{i6+dDI^woWc8PVJSk^cUZSpG+v z{U7Q2KWXt7{V{+x_E*%#K$=+F`{D81>-WbRI1TH+9s9=O#K_hJ9;PQ|KH76`^*{E} zU+RH!7Ebg>0O8Dx%z^jH{t_FS|B^Pge#;)MXES8}0uE9J_7Mk4f&P*MLs4_EdpyMC z(E7*!rpE_Ced_+u-livZN5&>z<0lT>vVX!1@SFJwzUVDJ#IYEDVL3Pa1lRXRH2fg_ z&X3J zzVK6<0<=H5nZP$tLHPFfX93NDIybQXyzH|61`pJwZ~UA=##_FIqfh@^`&SQg-VEMb zE%>7a=bqwU`mYD!>cDs`)7<*OXW{PPdt;-Q^B)D1!u3lAVV@lsox`xOwtd($u;ux) z{Gm2~V;$lH8vv?*aC3ogOhQ^%f9$)Syqf~M{20UF91zGIsPFc(49+??eK>DwXbg;g z%R&1^GH_~h0R3%fI+*9|-uyZMj5~b%cYyOxa1dtaFXQ`xy*qya2akAu0uQjf{>eaM zPaxbsxtDzK#>i-54~RMcUaGPeO`eA?gbD-&%wD6`i&~Sj^{SDjD=XkH|Rf_ z(K<6O*x>ahC>tnQS+|3*<5q_$4gRflT*oWwLewPk`h45i2E$v)DO~uycrZw+ z_oznTvt(e>kRAgFx z6x$9g4iyAXx34>AY@Rp6%Es$fi(wU-24yS>0bm@%k%Ugz6pF*p?la)|qm7FJLv`}MZ+lc>Ta#4$sb6NGM^XO_evWD$h&lXElH#@0$gIE)L``#+Hq$*Rr! zj3;3Z*nIzt!K-z8zePLBsN%V?dm;3o*yvvCK&fo3hd{-htfJLzaEWcC$#`Bfxmpf{ znydbdioT9S>JtJ#aE&`Vt01V7f@GP>=DV`KViS&;o))>I)HT5W%1P&p3R%m@&|9-r|0i;X=iwrp;1tY*av9yRLI^&`FOx=FE5*&ML%6C-svS zLhAaktt0u|e3i0VAISa3iDc_68m?Q^Rv0;`9F6akxEq{9jC(9wrOsiHy}puCGW!rBKO(@ejXypozhgA|jGlbMfox7er#7>>1Y>8G zFm>KCX=o1`Aq#s=C&@KS`e0UqS?cP4f~GE0I5ck*g1Lg7SuE#8T|f}qrh-*6cyhF* zmvk6F#df+?j5ZaPO-Qt6Le2BFnC~zAWU}fmBXLTMW(lCQr{??T2 zAduZhgOeu*Jq$91&{1}2fp7JKN4C{F-dvwVw#84sNgICb*{8o$)D$TqLRH=l` z)--w9&7@eGU!ohjZ#@pRYnSNHN~-7`N`6!eA*eo7{<9RoskHyZhf3N?8JVD0mut>4 zrn;+VG77DLbs|07W$%_H`&fi%>!m^q-JXzMWf(hJ+HaftRB$65R<{g_DOkvs@eb_4 zA(mXxR%+?I$xY>8e<0K8y%;qq@+vmKH?3JQo3p2mbRHv0M%F^lbM-8?q+O=MME56^tpyfkw#K)k}&3+SU6j$U=` zK^Hh{{TSzx9Pc8-G9DV@a*MNU1XhkFX&taH3V)fG~|7{9}T5d{Hom?2(F(oiP@B z4+7LTe>OLEcQkAO&)7cJwkAPP01{0w3Jc#?yU>xx|~y^b>fwZlgP%ag#CD#Y4Ez3PWh zk|TQYP)YeE>2u+N>7M=C28j-qqmjNs>Cs=V(U-NQOjX#btd4H^iy>fYvao5SU|XD4 z&y|8kcz2%}#X^nUnP<(&@+%2n?8E$YgH|1DP8OCx;)X_uEqr~f#RhqlUbsHUT4=xB;3xfNzhw=TbXfso|KN7KG>~g!* z_|W`&9YwE&2q~48`9GE;8zQR>zWnyt98_+Nd;Qs2#Y$QkUJ=&>j5(s@NQqz(h2Tt{ z=|4yk3Oju4Zqt(hJ%o?GvpaCqS##i5(<3{4&D(FRF0y4%K;LB7Sc*AA7&FIQL-Wr? zavB+*EUD>hbpieWB1z#@8#-`^-jIbP?U3V4H+v3_SzqK8QjsO{UjWjwe?$v;;6Bl$ zzO7yr`%qeUtU@bv=mUMT^bKVDHEzf^&G;KuKA93&9$QX!Q-g$hx1_8FfG%@zSzK%0 zsQg((q<0JCvk2Wz2nTm!} zrJH#y(v*n@IjPS8s~G7huo~iG?>cM2nVmVYMXz zhOW*Vd^qv6z0RuoREOQbAK`!C!5*T(1uNz+Sar5Sgv&w>o+%f0N!D5D4-E&P2%b$h zUbZ>AnYiP_0>LTMW-Pkt*}kR-2al>J&Jwf}4)sDdqsyn)C5~Ts-6Zu^TbZ#1p9|W; zU6Kh{J(xB-Kq74~I(C1=V>ec%a4RQF)R6b64V_sWTOylTb5^b(3LUSJQ)-c2jXc&s z7I#TvdtMEh1wupNH)MiMP#g5foJKYQ_llq(6hPycUqk^M7v!*s#t&b|3I3N@*7r5S z!P??2aC|U51@73--s(#|x6@(42i2Jlz0_!wAC!!|OzcI)6fNl`0etj0RZBs)@7G=w}m<$}KA zDCj%lo1%fblLJ!Y2J%tgnAD{+Y;Wq>TYw2pYN{1_of!DZaGW-^HuirBR+%=PrTX%B zp18{US;)p50&qc^Xq18{ zxXh8BUTie1C9$8yxz=||rgXU8K$*;;Wd8@-N-mI+>25R|OgYramTUP~{qbQP+x33d z10|hZSeFyF8G}pJC+f&g5Pm;agC8y?^BR6pbY`scQ{bP=w-Z58`YgN*ssSX?PV6#&b;PF_L18Pr!1U(VBt4gR_t7J%Wc z_dNH`>Twy_yqci-tD3bB*I!ic^kG$0_t~xb#Vd?+9h5dle35IU8uwlXYVUR35{dW< z&c!lR4y*t=itHIBj{5{z&$r}^)7gj~w4{6z4T!_!qac-Cl7TnABUc&m2KWAYUOK+a zOw>?M^s{JY$SD1BrYeHdsDgnz0ei3#!EBi-Z)!aBrPj*ie%luuv;8<|i2AY+QT|rn zbA}vwN)r8@qb%-K_Y>oU5(Cecmnfo$$$?rB>d$8ljT-*T~-w_=72=KO3o9g}ZYs6XzOn^ZW+buf0TE!|HQ z(vFAj=#?~qSfHd5X@)`jP(Y?4GeS=f&VESMDFTC9UcSjh_9pEDC2)Z=#4Pwvw;~63 zW*QN?--t`Bfut_dx6T=%Zy1f?#c8m`VHEjkxHT%O=oTJE{OEc17nrv%GO4M!cX23= zL9*$Y5f7MeyN}%Gqat{rGpBuzu-KNAM?I|NIe@>&7wru4W=9&+As!yqN z{GL`TsEy{~GK4W`t5?r5$K5f9X|FB3;B zzrZ;_UvKLUHaA|Qw1Mr;jVEMiOTcbg6**d_L9t`lRO){Q(se706#eK;0n7Tnn=bOV zHTyRNtjl+|-RQB#D;*rel!zn0zD^z{;#CAr>_z7C^$WPXcsm%o&?1%)0h+G>%Q;r(Lf`IlSUzpcVh_nKZt4Xeeb;b^2qN1_3W zPlC9;htWJG3|O7uPHYhv9o>$dMpdnKw_`i>WqCxP8k6!ywei8=iD!A#tX%=9`BTsI z84OWNhQI2e@gSFy#K*P9La%>S=?O2_&0y|fXEh~W<#%2mEAQnBNED(&43X71*EQ{h z7ZV6PH@a{?4l}o(1c6Q`aYCcX&V(-`NN2u!KQ{&svc z__;>eIv`ZQxy(R9xK2?fQ<=849wk)C)#B6K9o>szgPrpd`59+>?yNHO_(UDlw3;;Yn#5$tIHZ{hbt8S@@iN* zQy}OO)l)}7Z>Jo)^RSp; z1Bn2@ZyqAuHjFX z=9h-zO0e(hx9$e17{*c<_p0lPn{36qV!@Bn|IHB}kJfls1+~4_%RrqglyE8EWUCGV zDd+K6EwYO&w(?Ei%moD%XcRKS{j)Dg^UzQX-7Co;XW9?#FeAd~q%du_YdjCNFc=25 z*y!#t1D$GAFMK{C7deA}ZI#^OMy5Zgj>L??S0r98LPDM+OOk-*Z}LFbt+bfneiFj& z8*PW`tbC{jOEO_wAH`WzX24?7!zb=`Co9A-!j1g`{ny~Xive!5*$Pk)#8a*wNX41` zds4u?ZLe`1)v7Q*UFc!=V;4o&0!7?Tv4(I*mdJ@oj}_|d%af|~^B*#<##l7@!p0m_ ze{LTA=d76yItT+;h1u{z%rTTgv6~2a4_@y2TV|)v5e$j@=Cv^Dsg=|nw#kVrF zUUc&#(}7&PolD8Q7zcRQilcc^`zw`+d-5Xhg4+i7;ADxhZnu5cyAh#08q{t=vNGx` zXLUXQguZm?bzAPauUQbsR3q0##WNgc!#O{U<{`Ot*8TkvW*ZeSGBny=(UD{Fwc_JWZ~;cabD+g;QpNTtEfFjw<${%{v!@ z(~Ry8hSTN*@#^7(;ls4)sjsAEz>SkSmOhrZATlQW9SrtD>-?^S+j1PgZ)KNC)KXWe zgqwC2XJZfNANGgE-c!D>!TVb)#-y1(j=oYYo8Qur~(x3hJfJiFjRk#Pp~IZ z<@W;ZJbWR@QcWvaY4`+wJ&zh^Ay}Bvjz4G6r)JT7{D@82C=MqC@OMVJf!_@pKdPHm z+4keVB?H7)hNrH5ev6GxNe8FSM1fZu#A(bR!aFI3&(ED6LFBXuYGFEi-*zxGy1jhJ z3@zt`ZMX1xIMXSLL@7#7YiAfwc9DL{&ZU}#-?NZ!OG7PjeKczkLw}n#FDii*KiUNr zFcA{9k^e@Z*oG{-H8z&W(M6jjIy(p?qX%F2dGUHdJq zT%+bV5zIzadpD8z;VoThrDr77#;MXf6;u-ru+Xj64&eDeRFjd-jeGQeXD{USGKocr zcmIso|0JE++Ttwj)r&ih;z0Qx_)M5Z2fBKR;?G~(MGP-mx|wQWAi%OD@#U9zpq{Ee zim@m+_bXhN&1)3)p^nc_e(ID~_l37R0^H`QH(=u^voNa$jw<9nIe?R`&6rOR5j z%fG$hQFo>3B*siJh4si-bBlpo!}oG>=^?kT0Il&`5Ml+b*P6M42bCdQSA#P%;I7~o z84;x&k<312R%IXfp3w&eIRaQxG^ekEuLMG?b3^FQ{0Qn;(vSSdwztk(7Xkhe%M0qWLCL!3ZIrC6^%TYg{ilsayg)(N6}KIP*zA=Hug`fhaEODnbHy&8 zKhU&>=c>NL*=Cu{IH|i&nn%k^3orqO<&r3GrU+~+e;@_rTDz835CI0B(zy0!u%1S7 zS&XyeFp|tsE99Wh0vZwH1VQw9{Py4ESxm!cp0WxXa7s(Q5C4-Cl>iGvYc9D%^SL=u z$e+P3zs$qJjoYAHZ@Lni?^#WANK)h`G_g_^p#@C7QcfN-VwEyo7poyuJcyJOw;oKP zl^>*yzc9*Vu3{!I$?s{>!5J@{1)E3DGrkthw0Vv_}&sI_4Mk+{cI=W^$!zh6-$ zD{v#<0&{PdIJJQTy2qAGI z^GA_osv`tJr?I5+V@Ky>kO`ziC>N!O72CknadYFu3A%3IL{x>A*jTfUkmhOq=t}4!JV06O&zoX zp&FtdR?yqP#$=H$9WQyb27Y_4#iHWMQ7x?#?5;cY*sOb`RhAo#y?HDeUZyVwMP^SK zbq{1EJS;WoY1)`x7HOq_GC80c(t2Uz9#%th*lJaSD%a8^`eebt zAB=k__#$WYz5UQ!+C?X=uH_0*b{bS1>FF|_Jmm_E@S>Q0O}G>)C)>52+D4JQ%(cmr zsFp%yXMLhe*Sg z*PZO`8g0T>811<1=$O%xuA0&~%)XH~rz5w{JFk{4d9`fQ4qqkn{IPj%^cQ|Y0f5Nh z2)I1HMe@~<9;KN&1nL<5vAtDG6Vn!$AiNcecuMyhIULeuB8iBmhL}}F)@Dc8l*&wm zt>*HWjytato&KRb0(9eeR;ADwn}35IG>fI4*QPdNn>NN0i&*+8A?> zc;1m1nosk@ATRYhsQsAR511|lx1wirVbXzk{wE?^gQO;^Yz8_yFv@J2S+YR ztrJ07%aHX^WL5juU?BVk+WXg8L#c~SrI_rm+i(Q(CG2th=;7uNQ~j{n=RkGJ7dCetQkEGiF`myCj{|_7MWVg2o^tzshC2bXoo7|=|BJD6 z2o5!9(`anlwr$(CZQIU`ZQHhO+jeqeJNfToW~!!Y7PI?$^DVoc?)UV0R`|TI=IvrJ zskCH|TUmMf?oR-g+{BAo^g~@aX^&Qu?f}M7o|<%{^2osC#VOWp!j)Hu z_!SDN1Uj8cjtBG!;+%`$a@Ex(uv3AuM65-$x@G2z+I0S%7CYTt>%2(|My4L6djwg$ zL(m+*qx87_mnF!XXD09n+`Y|}pd(?1vdl__JNePm1Ww5>!pl>&t4LKVf*#d-UgUcN zDhKeej_`mZ)LV^QueO^%%2*b_^8Tp=*v^%4j`GcWMAL0P$cW!mHGR2qV|PBJ;maru zN6wkqvSYyS-Ojk|73LCMA}k#=!h40bxkKSwU2MbHm6F=V~U|N z^_6G)laJP_{H_6~fs|N3$2s(aHPNfdC$Z6alf3lx;Y)hO=_n=Dl%3XE9ry&M68M^U zO!e|f4j*|9nGo=D_q8Zno^=;T+Lq|&x^?4F(Q;LFmvlnr5G!OIUX({ARo^uY_4EM8 z&Aw}3B-w+fPnylRWnU?Sp{wFW3xlor+%f*)-GnvPjuAq5jztLA>%oR5{QbCnxW(`= z`$P0}DF?BcCD3K~O!?tTNkav?FWUgL3h$>u>P;(4ya`$1b~)5FsTrjJ$~~>r=i!^zAu{h6U7G10FQ8t3R{94prm{JM~h6XnpVtH;!C#qP)uHrR_ z+?vXD?aofyqP)5Dn5MEye0k`%Y?`A*1xnsC#maz1FmA3OZf0RY0g5(a45 zR3A6WMmsBh!B&+{v8U~bbP&vQPC$D4fTAvpVIt1#i}yavr<^oVV5YpbhSq*dl|Iqq zx*53LSnF55i~z^-GcM$U<@V52()CodkS?Dmh5HPjKHG@HTq#zV0H<=m!Y(b_<&2+Q z%S37L=n>}T$Y}3?RG7u*lS@wewV?RF+gs1L_;}+nnJ6< zKY=K3q0fwhI~=Uy#J$R;M%20t{@|RDNN0@XLN;p5M^yFDtz{Fuw6Fkz)TSa;WS!c$ zGEoUnXxb2EQ8sC+Qi9Vg3z$Sdk!%=4vv-mUQ_^&pr%6y}@((EpK}=-SQD2O_n_tIv z*-3Wc#8!Q-IGsoC?+b5@XdK~buP~Nq-d+W?3HYO>s{d%V|*R2!2oULY>g z%L!M_3pIORtgvRTsyayJk&?F*n6mQlF#)wJnyLj>)lscpzk&3+9I%xmRR5-3idQ_P z&Pcbj0`lk+zTWMDR!OjNlc+V{^pHB5Gtd$;ucXBNuP4Ld6jo@v4IU5t>D@@F^5Je4 z(s-yI54VMOYI)2-ft$MI=#Pp#<+pusvL)Bjy6gd_rlX#m`w~||6|KAXM*~$OU7c3L zB9GO!HnGTLHHI4w6%a^Y6->>TO9c^Dzc&O@qz|tE4X{%fn&X4{=zaBqy43KTuhiI| zdZ$QlGdYO39JeCEVGan@hYH0RemG{FB-mgPW|%PMA}OPl(BAphKZo~r?~^Q@0T(+5 zDqQD87oVkLqR+bZ?v@~JjAFQa$SQBh5_o4FIUZu)NrQl(d0pn0KHhcY#BE}GbMPU~ zlBWk&b_uRED={Djj}rOm#X z-5-prNs}ZJ)4_9p8N8zVW8y!`#bL=wG~Jb$Q*b1bcO4C{g=>#X-pSCRoKc4)p)>C8 zggqLW^h>xO;DUn4x8hd`>BL}l^S0YJiz@rXj43T|H`@YVmnbN-1N^9ac(+lPFTd3fe z#`rQglk_F$1VH#Ybhxj_BdTM?)#AuTHy(D%kUPQNxx2W2Z4xWY~araRXZ;|>hR-!z=?79=1OHFB;>U?_jlfPR6{ zq-m=dDrtp-H~QYVKBJmWkYG#9w9e|d6f&oX?xdi>>Sx{z+R_?ArvaMRYZNjDO{z{c zt*_0!hMEjU_TdxF7S#H!3FjU(>@b!r)eg(c)|bV-r;;++usUb~%Ii7CB}j%BJ^g6O z;FzE%&T_qD#sz3jbL!gDrbMZ}{r$@djt6&CBVlGoMYw=nu*szsQru!NyrFgWDfz&) zqQ#Y}gU&TxtDVZ&c^u7#jjdI%DQ#SL&b)p>e5(S6I+@(u9)XT{Bop%okMDSlNbOIQfq`6i=NK(7T}ULq z20~SQUyR!?njE*y+)`}bo`e(Au)8(ts_uOMeVQWa2-6l!h!Z2YZM#=ARBSL+m%z2w zH=#S`%ub!bSe8K@v_TL5T-jPNyCIu})78qyk9kCF=$?a<^DnPp;&H>E{>~XSG25Q< zKlACxB_O!iFv?@WhI6g66+6M6pRS>dpOw?puB}^=@A$vALZ8#q|;2maJ%TY zw?{M(55MBHRTD{yw&RY}b1rHuwEiB4g!jW01C`v6QeKy5Li`QUxzgPGbS|Eo>H9oD z)=2dXwmn#bU9F*=O!8Yw+}xZ)OW9baSz>r8@7ag-W2z7;w6habU5niwCs(W(`XS~d ziWZ~jXGxUa-!stLIDJA8IQu!M54@DDmdw=4>-q`J1@MS_XkbZ!3chy_Y@c_XaH;ei zBMd@y{#}5?J%=xp(~o32U|@8+WYOvDekPkjU#6h(;m=ts`snkKi!;y{N%_pZRLlk- z(!!%DtSw0(!kpx+FU@I$Qv#wJ-76+XUz2MbutFAJ?(7rQ#CEi&C=-GSKns!jWrjbi zFGJQw6Fa8ObmgJsmOeHW?$Rn!TkMUSgqP>ULWFb)%UZz-??GXj3@%+!mE_KW$k2zZ zo&mRp=Xd-nc~rSbnI&44g&MnjWcDopvAtUxB9gA`p&mU`s6Lj(3)Zn$9^|fEAA)jM zrIxxBEug*^0Jg(5cTwtmrt2dWn@($*7Hy-!ACd?IU$UXQGnF$gaB*gJ><^EMrtm(+ zSm?^XPjWRlulMStRI&ljwEXyNY2{#MLzsQa#>OdD-N))$lWRv1`nzLk$wzN)i4dX; zb^Ej3w-a{$p9nko9^69M@1tm7KdU=?IrqSgecyMig*<;<5?nRamTs`eVsm9uNHe#p z8cU2cmEao`&(2xvfK|juF)Rat-|lZ|nzB@$!h^R0nHe$Xp4OD0ZW%{5Wj-b{R1c*h zVxvcs1X%7Ks?k)LUK!YJ)#o>-zi%n4>a9t>Awg!JzLAcj; z+JDYC1hxV=|#ztZ~nP2kVYFUYx!WVqeA7hyIT%}cana(@jyaYBEJRMG#@u%cx6^pFvD=h6m((rfQ~P= zo^Z7{9C~y@#ZXTo1%!mjxt9SXJ|u|KhOWHhiKsUzTO6ooN5lcqaSWe%oNQqI`HH}u zwsc4F&!1`19#lP*G2fFHvA;Vp2(t!ObOV~k#6PAGg;X7CgjL>?4t+<3GcgW{4T?ppx8B3$PhuXhvTq_vh<|s)R!$wuq&eMj>hD2 zLWlqC){dl=cQPdHJ)M53arc~VT^cZJ=qp}%Q$nI5`lKdKz-LFQ$1~hh-9@5R!Vcq6 zhO!kAr+=3d{JX0@g6W{$Yta4ELB5MMUQOvlksZ`vE7;&r>GIry-o`Ge($o}avGW643$i{O?q1jmTd85`hmM;*h8><{$t>rx z{Nt)phZr0A`8R^yS0+R3nfKF8>BnNMD)Tzc9Ael0ltj2SSb-xfIxLXqmfkY`Cc~B3 zItYB>V`HL97LJ9Bw0qG?s3RnUy^mPlMea%uvu3r|w)yvu#d3T)-Y;z$%J1bOpdX>z z{*jl_ZQCL5$9-1@R^<#l4yc;_81rKH0-bLGd?8wtXI(vk!ok&czTSAbf3+ zA}t9*C`xiOXw8V7-;@!uw($gCq}XDw=h~ic$uXsAug?wi{(KG7ePLNH!)ah%h@yoz z6WgVp-0}J%);C_BZp8WWNpQr&kX5lL-&$WT|K(%y-|+*NBp|!aI4e(8BNpnuk^psh z_)YWFHhmgBT@z;Uc&n;g4aK@1Bi|YOEIRp4Oc!4^Mv=Kr2JSM9)(Lyrsp z7hCYw!dXk#=`B9z!DkO#eO8SPZ+=AtsQQ zMyij(zv^)~LWv~`Fm!rnXOqC-z$u0dZ9V#TCOfY#mX0mKp@*E|Zeo+>?GvG0lYgPd za9XhyR}K7OM6eMB8vS80^3#4S5f@A!2*Kt0rte%cj<9^PT$+y8occ%s!h9CL$$w0q zDq2>VXo&J*GsjUGQ&S?Ns``Celxmf!R+yjQI{<5}n{|@x?RP!tt(rFK9ZzM>`h{F_`qFMZKG-vloUL%AS?j*=P4IaGy;|@hfrfcJlt+RJLwj zC&3;rj`$A9TApR2=2QoObfgGi9=~a_gK{Mxe>RjY4MJZI6mi{QaBpHvOfnuO@g%|m zRoA%`w{8V}Zm+#H8fCtgu_L8l?V7tJ8YGdY70EXmNg8YU^T_Arg=ecu54aiM@F;`} zCpgI%qXhVGQ2eG>d}gePKXMYIBimw@s{1vN*HGx+C<7FSJ@24e(B@_qmE!+=Q$}z(do&yxy&| znbCcvW{=d`)qwWRa8X7~t8Tczj`T~T5Bjwq!JcY@eyy{Ww$2{w-R#A|E34&t{%SG% z*c^k15ge>&c;xpio$ZT=>4JVAoD$K|d$a=o-V= zuSNqq`#!g^wytWN3_9ypwhivE=o&(F#t~m^@)milN^5!Kb5kaMl#zD_2OPucOXqZk z*%2BIeN*B`@I(eo&{-O*Mwt!YCqe9rU5V(I%80=fpRkIE`n|4fN|hU4mvpWn0&3Dt zeu(ByeR{PKU7{%vIGOn^E>Aace%CLi#dsr$_Wt20FhkU#mL86MPPhL++UV71->2D@(SA^r zDUcl$WQYP=uE{zX1Dddfeq>6 zWxLn4wE?G=>RVVRx1RSLH6^iVz8;}YD?$y&&SDW^^tY!ctSr2(7o(+*Nc}>Qerafr zueGCS)?mR@WS?)6X}R&DowPvtvKt@LmdQ8k9N{XBrIaa7^mrU~))swdin4Q^Vlk>n zbknwIPZMxZnH+v1d&m<%F8^6Ty()jC)s8R(=VtFY`ZOCH0(wS22tu#8TEhON{Qk|m zcu#%+T=hA5{;|;0pHfpjPg=rWu6o#5X<8^e z(D1JlX5M0PQxu!m7+Y&>t)gzj*o?egu-}L3;s7(4DqpMSArvyQ6gE6s_k|(H^4W5w zkilS=h8f*amRa*{w(4duA37Iief72Ph+NKdxwCMzInIuig7L0=w$53!%y$!0T<6Jq4a&L<_nc1O)?qDDTCq6SxIRWOZjR&sCac2k8eQc%rONZ_fk z_37~zyw|h2fYhu-PhJlEmP;9dMo}D(1xce){)w4FZsyv9{3}_mVf*B)`&0agf`#S% z?d)F8;rh21QguS<29-E4)N9Lk{MyY154Z#>6wZL4g}Jr_eIWos*zGR8vskbw>qY9QeFh)+RPyUXkmm3Zb;G z1v8PrgcW3Zc@NdtYCDgFFH_!CbucfagrnKCl&q}UKKmL`2O%Yg?*JSAF)yg+q}>tr zIPHzCpLElk*f#HWnu4`<@Va%#(>Q_YyR*INgKZp<3RO_N^CbM6Lu2XO-66TUGatC$ zpLbOofk04c$k~2i!#)A6%#N;y&VRP9kvWf%V^J5_#7HoBW3v6s@NX65qWe_dZj-=D zpGeEutSNc16ec}tFH*`?`{SG(v_JON+gyjNpZ?=@Nx1SU%|w#dt~=Axr#_X^9BCP; z%#>xJpBt0%v@(ktg6xu8wg@A{^>6t{F6!J@-j65XuF0WEDu0u^bZkSVs(a9Iote!E z(6~5d$11YGmJVT02T^#-TCDtJ+)l^?4-LPB%#MbBsPbK+T0bt{xKUl2%WnWf&fXdT z&@dnBW*7m1HNR$^+w+RYP28|*YS^m3eX(ff%Nr)dnz&fT_xbfV9AFPyEB!RKN1-7! zNby4zobh}IUWgjc-^M?D?3NDCcNm+og3x@w%ii)xUcUXOx5$P2GiZkV6OfBeX-zoHHSdL9rM@`YG^q7& z0%~UuO`Be{s^X7qN!yj^)XE`P1Se~)^041DtfM)^(J6)!m2n8Wyg+E z{Rtg2upgebbTH+(QP$Zf3o85Hwr@-rYiPb$S?+4H=wD)Yk}+R(bv_6{W^yc!&RzgD43~+D)0|iY0NGu9E?SGYwaDV*~dp1 zmxqdJvqom-BwH0HcWx15Wp5oZCGWlg+Jfrk-S2Fw`ozwJ<)qpFOthjcj{n7gLY@^9 z!a{(9W~Y|>azP$FAK7~0R<#nMu9~vKrAi6wDAw@$63auLx_jI}$AA&ifv{j>sfO?- zCXeLbq3%Wb*=o5MertwhQ<)q_odQvICr=sN-!oeO=s`x& zNrb~LAsyfAG zKp(N_iPNBwTcS{4+unLe?IN33(O{7vrB5WknCGxnA9EI!lWNpVJ8B+vc^g%Z#}Fn6_mOw*g;e zJA_cA$#=eL&R{ z*7ceSxez0$Qeq(|9E&^@4EGE{zIVUO0KFLJ91-<^u%(zZ?_y>rL0AntMW&8SfU#k6 zgL|PTkDK-F5#;jMjX_u8+*8iU;i@6-h$_Sgl4LfuNNaBY2w^yImTeF&SKf&IaTph1 z+si4X4~U@XOWxZU#c!8-t7~ETEllitGo|_-LPTMCY(KxntRtW*p(ZOKRy~nhOxh0DiQ=J zJ9pN#zi>%#d}HnGmGf7PwK>mmkS3~Quezpcg@Cf2ix3`GpVKFMw{?aHOnf-U3 z$XXU5Bg)a|6RxnbELu-$O!l&i-iWuxhOqd%PCz8c-FNQ8F6^tD6lzI$YUhI(k4N~Z zhin(YjEjfvE;3DiQ8&z}ZSV)d&wfC|iIuD-K$s0*$hEkc7L^(unxTH44dQRPSF7E{ z{)&Zx7#DaYEcCLh^s69_9h-mVI?OgDrR?PA7^qIVEyQ3tlKdf`{?`D+0=tORuOidRZ0r}u1X zb-Vk<-Py#K(O6eG6iLa8BbPwjS}Y2jc)`Kf(nO<75niUL)hxG1O`fLQ$CJ@?pW(4h zt5JpdIDwSSFaKJhAe!w*tz1a7+m=!?;6Su^;J1zy%ia}JwJmjJ11ToUyRcF9b4aa>$hv;43YOkW+NMyZ0`OvOsOSzOm88jKg0kKGZ{y zEhc?d{Ipfn{GAWx#R!`0W@N9{G6sy>4FpFEw_!(`aXsBX=U=$CcsmyMJMni*p`UU3 zD75iWh0CCRLtpYbs8WQtH5X5Sult#h8*JSi?MkyRjuGx^4y*x`4QZhVmDScK{f%3# z#J8P?u7nLxWnHYHtDw$7*dAGE6VV$a6+@mt!7H$R^KH6a!sK)B#Lds#jEDa?u9WX) z3wD4rA>H!%y}SetKb?G6Ol(Wk_E)*tV1C42h>zu$+$Vyu|2CxzVMTmgO^N^Wo2pu~S)g10p|$$& z63v&7GMG@ZTQ=Vheg@jcG z0I8zWG50T4VnCYLgLX0@RH5^^jeEA*YYG;@&)$R62w9%i8R;h^sI`u?m5Q4-jaq5V zW4-f4S-=6xbC-;9@GQ}!@q>TPM~aJ@*UKc@Rtvisj% zeegX{X3TARnd*{5tNl%$&!E~6`{TUTqqIICnsQbO%LSZ35%-MAD}t-;`jHW^m>(q8 zNv^6gna%WyigEGpC_g$?oGG={3|zu}L{&IY2bD5tI^lrxG}cJk0g@_~M*>CylJVYG zXaG~08hVKRt{uy0wfSy11rmJffIAVkp6{ns$q`OMeSfSxIci4a3|6L2NOv?XM!K#k zl{!Gj+{XlTkybq={NucJ-BeNihi!tUAHJ3LVCtS~lW6`%8%k#SZc}YNkF#*HkuVcP z_Hjo+5~=002!trAAzg#auGW2_E0p?RK#;jDY^lkgo$LUwnohjPXWHP?;c+u9P0hCn z3h~RtVL`zYC#)2rtxGfnsX{ThiGi^8;@T&=9t`R>*67HZ6f!!MaU3FvziT1CLW}tg z3xHSEx}AE&3)ngKy`!<*ErE`_ogKeUMlLVG2G6kvUTx4x)=-h{z)Ea#Y6eDEZhhRW0Dl5ECCnkjurx=mW_~!rEwq%%xsH8H-j_MszAogfGtftZ zx9Y+i2zwTq-g0k`@xOg|6p~-B2PuPB%DDl~RF8H((g)BgzQP=4bfBX`eU_1_T0F)r8BdBW5$*KkxgqfP#fl;X-XtzmYM@!0Nd^D!i7oIRI+P~9` zY)UrBu4Z+6+g(eZ$H$S7Z|7d{4YNht)Qcl#HFmemd@u z)pmDz^xiTUXCy2~*T7Ro_-sUscv{0A&bL44HaJ0NbmeyJKswb~g`?QoEMx!8a8xaN zH@%$zdAvVQ0@yAt$o?=MIXzVUB8@4o8=cqPwgEsY;Y}{7$l-~g6e%G><{f7w#sTXi z9HNYRw$;@sXEZj8epGSR1Ak22TfGR~xuf_4H`BHu()6~jr?OR%QlMGF@FUZ0h@^C5 zumY%ZLqZ;|(1~A%_MZmA0uNn6ZCFI*aDsh-uC(wz@C`z2&7<5T(Crml)-m&47Af+s zU5Pz^Eo&QF8~xF^#NlnGS((K0YO`tFeXWiy>lD~EQ4ed^9>1DEv7)4v{38v5{@Xox zlgw)Nj@~Bh*}9cf!{v;|z(s&TxihsYEpoH3`w+tbE`=*N(|BXkT(DN1`<2ERO%~aq z>im0FI}c$sHs-vCv)iHZ>0DOiln4(`Do32nmNB_E=f9xbqwdi}UC6q&@@^oaUrHH_ zOzt7>HPuVLL^!m2Q>mqxP}|7dj}vM;rr3%USMAb@wF_p(a)+}tWR&=q9yAmm zLV!fy5&nIUhouV&T|XTqzMw}xp#mdeSVz|aIt9WXbzrNzqbgu?Zc8rjO(MxQ><7x zVaCiXk|;b5=c;xd3AyZ90l*DydhwP=KtOnPgD_AbPAh)oZI+6sMPRl(;V8Am^Ws&#=&4k#fm^E9R?y3lzI@PnvFx~7`i zW!XJ-SYt?N$WDt3|B9Rzz~;GQDaTh(@*g)1%sYNRmvee%b@JL7pklg-qxhfy2nMGl zJSzvIql}+g$y%d3H15@Z1aFd4Hc$}6gwnD0{cwU865<5Yw;Lsvd zny^&C)<|_c7Pbdni$<3eImzHVyZ;?19k{&TIL{8OM8>QV*BkHz`K%zPldnz$jv8Z4 z*9mrr#}z|@j39Z=_{0psh$Zzb+3ogt!=Wi#%ruTt%@aodD-dMk35kk1vmH4*hGJIB z51tW^sVPCh=VM|>fildCRIAHt6Kq6^2FO)ugnv{ntoaG|YaFQTx~@y_FK9hbe!>?n zWFMn5$6P4#sfS{ZKs{DTxT46$j|#S@fmz|;fRl8`lu>22KXM1E|-t)>TVR1eM! z7X{fbzd3N;g)y!tpO%vw%^l0ZArN-!ki8x;o>l!8DPO;==gb-Q$^N(OP}~Md#vSjE z#0TaS8Sfb#$Y`^NLQCJ`sCS-GMGLICc)JZPwL7NPc61a!B7<4sBWsC~bR-Un@fWr6 zHv$(4@%?PtVOkT@yU4-0ERf&%m=*Ji5^c39sAkieoS~1d$E!q`32BNvq_)`F!FqeU z`oFem;i6*z)NrQw8?}p#Pb9VMnM0i&BLhCCP~p|G2U>VvV$E|mJ3PMSNOC0|RwGlN ziL1tDWV_gH))+6=ME+-=6~emG2gC5-7JZtLa;by-DYyQFrpH~AYt^=oVPKRurXErv zviFHG3pP?pnW`EOpSH?KVrA1eEirt3Jxhc>6|ao`1bofyX4Q z5Aq`kCzTr`z_oN?>+c=&K(GP=QjIBIzBfOl_G6@zK`ogrZ<+@8-*hY33y) z?iK9!einr7LaHOm%KZg%w!Uh* zB&r)A&AuWg^G z5@Ps7!dwACc8pW=Vy7R0G!ebiWfgM=Y2Sm?xMG0INy4ALT9ev4p6ALzC_%&&$`+%U zo^@oC-MATWhcd}D{&!smTAdt8nW9FxfevcX38D^WS;d&KM0zYl;E&Q3gCEwxWB>}N z7fO>MVy@?S3g=A+spIvkD3WvWXh%4ZEq+o}A^vVH@sfgM>;%&2`q9R`SH^KQecEIg zk>2!r&a)WyEH@-*E=4!>u775O{6B7%CLZsD(hAW^DfzDy&O=sCRp-wgkubie(uo1c zjm2Y%9{w5EHcZ%IXn9?k<+sf|swk>3vAWfkXGD_AEEj;udu<)ee!877ei@=66#Xpj znigW2#&(W?GnVn2Dk?umR71#r@zt?8-`i!F88(X$-DePoP(0WAcH_~Sh|B`ABB zr+kT%opteu_4H=HJriDm;00*ub|izK0)uOwO7{k~oT_NE=Z&fSxQ5hkg9Ee<*@o$4 zHHw56FINV|Uq{z=F`_l}JgwY$!yK+R!Z+LfS3d0pW!#Yb z>ABc8qgzhm-%0gm_5l>>CBH3GpX0N$5M8aM-Lk{w7Y5M3tS8MBkCn;YZw|e6WgXJB zF)z;FSLuYTH?5*)NW)J}SQVXow&0gPMd*(>N54Sb{Q?1Q>R+Ug;yV-)1jDuS*`02L zB}|#T@Q?SW=*e6_OjY^kGGtcl-}{c<`#&fI--G`_zCXlLNtqE4Y44gbwZ*^JsQ&#A@*K3+Tn!69S> znmU+cS03j9K{Q(yzqYO$lt|fkNLcAtWEf${3j@w(d05T<0J4pNM@#sxwJ2QE(70On zfR0|D5P-amrt+SJru8Vkk9#Sn1*7g3Yp4{0u}PMRU)Pid#-)F`GKcfSc;uU*15d${ zfRtQpzM&Ml`u);nWV9WpeNQjSKR!BV8_|``Z4%%pYQ_9X-+FW2E`u-t7P31&*Hx>! zfej1Wf{*dizmyy>iAO#ckCO_q*$deBcj7>aO1?yI3?sB5n;%vM60umK1VWewp7|IR z(dhNo*3U-#u((#Tlf?&ZpPBDL-v-av-#yXn2*K8uiS)FAER_&?vm7%ZyD7tg?4dXP zr{a3)qQ(M4u*Ohp{5 zPfa^cPzL$TVgF+^$K>Ixi;S!tzI00#=3j#=)(XkPPokgRW zy#T;WHic0SBOQZy$idCWD}$7C1QGaS zQU6%>1HE0^0N~i*_=kN?eYz7c9K)M4LqnGb7hw(~!!&?t1YQdQpjwKup~Iu21z-+8 zv=wCZFh6bVP0zsC*qi;>+=-u<0a!A!25dM7`?s9g9DumFIGQA09(JJpZ&E_90?{gZCrZ8~`zZYX%cq{EGb3saF3C&keZ)c>}-%%xxb5 z0QmF!`(yGhO(8)wync;+#l1I9l~zoj%DFpQAjqv3y`a`*WTK~ZKUxN|v_Zd?P=Se~XF?5wfATNG_@DpsTQP&z_nhg2&1Ji~dY<+nJ$XVC z{90E6e>j_`2&5XQhyAWhcBJ#(24W0v{@faaa7zdC3ZzyVphIWzPdt?AT)rl51QQad zmNUP-)&Lot008}pzjkY)xy`YMJu(yjDg@@DpY(hB1FJ7DzBf(3T+bOGdUJ%VZo=FI!aC#Qk;)4gavkspHBOaH{YapY1y z!ykgwPyGaY0A5A<6Z;Va=sx2QgBq;8f%9rx{l(FfH;^f`a@wZuhRQL`4Z6^~XfR6{= zJmgtEbPc!Fl^Bza!KmQAylKCK*{PMIBCdKZR4%*3MRP(r8k^2{Eu(JuSDnE@y`=<` zW}ixd-vh6O9Y3_iSKhMs$&)@@C4b#oL@R>?Cx?O;z5*X#l-OX^`+oZPwkpm&57&$O zlEkBXqpj{ov*PoG{pyDq_YwGTvQYo7+hULJi8_xzS*B^+yo(8zI=y(3VLpSXOx#hQ zSj2Gf{nVe^)15gmmElpC9A_@}$Qyk?^{~3P@8i#X)}mE0aj`8cBwZ*k1Lq&X&hBu4ny#-L zYRO$CleII8a;rwVUlq?_1I#BOj|IL;0-(Ocj4a{5}|3H(Nv z(bHx_#=Y7(j6HFxgPhw4jvT^N`eE*O`Dl@B(^>kLNA;UReBcG)10Y8yX1NGUa0*AG*=kXGZ{@$wXc45HFpFH zzJMRaH|#Aw0iz2qzGDR4McWwZGk`+S|M?Yg_F4+cxd}u*V=*o9bHa5${y7U~sAAW= zy#(rhH&=(!m`<8@ksUJ0dtjEPl&VI4u%P%pJFMxPXif3Pfn2?tJ1S{q3lgyfXR@9Q zc;m>Vq4a}|@y{WkX~9Pi+7+X&rz7Q^G2U?oN3Q|e-SOLsxUc^#K%R_L^{CjnL?Kga zc4!pvl#1?7<+Z($V@0HxiXk5=DPZZ5iB-!sCyVpDWBS}*3Q?pg$uvB^=0wG&ENbizpU~39}`sNN6gEyLym~iBT z)~DthZ*w}y;d^vMgdO?jlxed#65d}cektq5mWP^FRFHVg2(=o5QZkUFi{R!-TlLdE z6c|D?hOK0YisEbCRYd3t1N@G!opR21;R!#A2bv6g%O#);W5TV+gh^%hh}e=S*Z zL(1iq*<&3%umw0qr((|6bi^h+JuX9|90v`w-pQ8BgZhJ}<09J5b|GGD?bAv_g~xm_ zlSW;US&K+3tqbLAWhL4Bbk^ylCCbnc>nBo@4hZ=u$!i)HyktB7LOqrOsZ{bU&^GKX z@jkh~T_EStZaStt2qv<+;hrKbqP&b)=P( zZSE)8>NGb`eghHd5arV&zw^pzkVfgxph1pY&On4&nxPh`*M~yH%<0ry$cgTg*l6q? zJp9^XpUPVIrq2FVCx%)D<2b72Q9}tyP3hO_CBuoE|GK$qp0ROwG(XI{Ear2+d0F0| z;OOIuB#xE!qDrDu{VlHzMRs|RmX}Odi{{%*Qnb2Aby}D)8k-J==Kms7<;CG*y2hb+ z)wdpfnrEH zlN!?!a>LQ9k4Zl_q^uZhat%6%j&4Cqtc}V@IDqix=XmN@L6{uFDz9b{3}PA$!kyTs ztK?^^xaU)_t8ca%EODax$>^hSo(9-6V0!?&JrGuB^qHPJPHU2HYHMs6mLhQwbc8V3 z-_?a(>`r>&R%D}2{@Rr|0@JT_sCvWRIS8n%gJym$U-jim4BJKFw%o(My7<^}jRx{| zqnA@nD=+!y=?+xp9-CovnBi|;Yx|8e{qw)bKr~!_y$^R4#!HDny<)Cam=Ra%`U0^$ z*xK$F?y|bivj!Nt)Y}>YN+qP}nwr$(CZQHhusbBZZMEA_UWBOula__zNiv8VuPh{qb%r_Gq zkU2tvqFUMyvoJ6DS+cODI#%0d;Lq5o#7Fkp!#5VU@QunU+-@)Dcjxkm4T)T^5xUB9 zTY|!}5?hdE^P6Pynvbo{6|NA9+sKd>54wd1?GjtT@Z_+Aw$L9VGPBu8fOvYk!>>aq z?XKG$SMh-}%aTkdaj=*&=c95)SHvfutFp)5$el-o%~2hdw$?}sYi_(qkBnt6NqD3; zYr>`bX7nh^3W@gtk5@}p&1D1|rB?h7uhlq%JrdtOKa!gixV&|1nhA%4ra_?Ds>lsi z*7>hs2l3O_(HBTd{^sit2U;)rbpuy;qA|D`e&et}X<%&f5q*iBTx%+%w`HhjWYWKa zGJF#V*zb@jZEK(ZBcW2RN)686=^RcMZ}CY>8&(;#=r1Fz6nGTx%UL$Lr{J>qSk-^4 z1C=axr&f45QWjx;KbnU3CrB5JVjY4Y03Q?Xjl&7@muNlhr%+Q z)_)7Kyy>x}v)@D39)`df@pNk*6@})oQ@h@1>d(312Q_BkbMA&60~Y)g^7nVjakUQ+ z{vDTL$s0qqdy*1@RfVfvqePIE7@F|z9`MP6kNX4Vws}Bc-ZS-viCq8 zw%+$D$m>JYSfGFoZ$8*RhQG}Bo;O>#wuqb-PO#VFJ=pYMlxl#SdDb&C$E`r>VIF17< zx~bZd63H{}7hbF;7PkkOp&%%P(MYF%Nnr?C+AvJ0z2N+Dl7yesfs0MgST2RKmq#S| zz!+3zrkv@bA+_18S*Q^y9t<(sL=ajqd8mU?D>10Ev0oNCFK@(qhr#1a(D`Ki)|76g z<9n?pLCSW9JU1*Ow6UFKGsK3~^`S4ev-!Y;1Usy7-7pQ_>@ETMyh{lq{peIXwzTQF zf@~5$dTMYxL&UlLUKyD+Ax zQjrBNIE}LB z7?5PY(XN>Yv+L({b$j!2wN*Zi*&-cIrcTufHS%+#QH)N*%M-G(O6*CxtOFB-#O(qD^ReaU42ueECfhlODCm{<~5zv3!Xy`dw=l;qNZ!51}=7 zZGAD<{D1sTN(l4+IKx!~M1M5F)88XLcO851{H9lF!J?dtuGgC&9 zc8Gf{3od&+UEuNASw5Vc5vDQNyTt0AAcSh2hVVX-&iTzx3opExh?5G!Or2wbGOYhV zoTuhk5xP>P)SouU+6{7YL%_X-&Xpz0tOtdcE^{ql9Ak}42C3C) z+tpT(x6a3y@QBexFPEGoUwBijDY$;=mohNhT=z-+1SEoU%4-~=Tu7<1?c=N}-*{(U zNZVN}HS{2v)?2KWasb8AtG2Juhn1@ZDv34&rOxHpJn86a!8c=1_M=&6N5$A90Cg zHA13)&hlVQ8AFEu`gjiOgI=F&xrLLQQ6F=&Zp11^yhZ1&VRCPkk(nRiLx?j2Bl6Lv z_cpwh5`$IB2zAxKxldobtF#Hi4-gc_+_^Om^&23ZOb5F=tZT;1o57yw#(50DHTJSP zr+KEEAKkNxrx8FFEe@h zV!~cY8+!3-*`E}?^XIK$&C%hi)`<8#*xiiJYvTt6I+YMDxqp za1Kp7)U4D>AL72moyu&2Rd=Z_xK#LjU*MDKdW(QOYQTc%3*}nmam|$RDUDd@&eEL= zpD<=VSpG(OS~us{>UIgAgDOE@t7cu82&0eahhd3bZ*tuM5y-^nE3CA{LnkakF( z1k?A((`f>n)jZk)v+JFZUJWe<4@!{E=+lKECnxGos2*(@fr5bgV$aGTh9h4CiK6h0 z}=c$`yTHTxW8qx!} zI1jrk{PRwBH3k6-2XN4!M%7uSX z`wm%5R!PE>R_e5;1fz{iq+onVVD3jdNaC;D$NW{7Bru0mR|jiz404MRNLAj&CiDEd zwlA|ClEC59p|r-J0?xb&+W$tYMvaVJ~L@6m16{QVK_{#r>Af>Mn>}VtFE7| z`-kuMr_|q)dY_WGaZQo66aZe71g*u>b~|d}{bFAOh;JINOzWTtp+K_UZOHx#b1u%s zNXuJCbigsXKpILgm$;>UrEfi_v);E$Spk@39p1-zleui}!CjHfDaU4d7M1}CTb zM}OAybQj5c*zMmZ^N2QeZ9E}<$$Kw3SpFFF!}=0k*|LXLUB3RcTvp*GKt>|-q>UKM zL}E+<*;5IqI(|_UxX7%Fz!6Kxyy8nMG+cD*qu~p>8wafC|+g^AjE9i#J6O=TPP7Hq7)k= zO$_zAdu>^%*CLPOy=jaQYchXKPT_^UuQG1Hh!?)McK z`+}hQokTqpz>`f&k<@?piN_cAehQ~8@Y}k4mnM)eEoFX;kzN+`s`H+wT@IvwL<*|M z))62q1@*^II}W*aSVPW)^405{|YW8DotZTZNXh2_+zbe ze_ZS~KP`-Lf6#vE#QksS%${KYHuj{#JB##;Je75#(w`ph;f=r0eLUaF#Bz9xu<0P) z4M2J*=(%ESUMbCgk*=Or6vw;QQ<619`FBK_tCWg2{q-We;!mZ6G}`821dzn&m3g~X zPgh2jMF$Z0f$>zRwLnskY{-0wZj{bZ=E9U6YzNLr)8^U=z@W!d{34BZqgKl~GAHBL zI^XZ5#MWVr8O5xU^>_g}3ci7|rGdUoUQP^85=u&uxkoMAhhQ}d1z0|(%C06~T;!~_ zF0wyZH(unkBm-mW3+Kszh&fe^RV|-}hwHnld(0O)&{0dH)$ixpSYG3*@5Z~KVdG0E zMa2my^P+g@*sD)Gmj2Y6Sp2K~z>0?8p%e>Rar7kWiVy3@T+s&*T?h&M?YzHT^l_i5 zHUT#L0#MO{A5V3%IR*DXVMP1B8eW+GIXr$?tH2DpUt8cMfvR-b{JLS1C03^nQ4Wf- zP-+|A_J&L(#!?F(Qb6u*Ya)0#W5mpDgy%HWu~8Le((kU!On>>NC2tNWPYj%*=NHUR zU|o=s0xY2Sw;$qtL(<;7ZXgwLWu%)!o;b85r#^Pi{q*cW0uQYFoSYC2h&S=d%d*V9 z%yjzh=Y=Zf1)~0p;Q1|#nJjZ2Z)pT(%#)`dALjHxxDS|;tcTxWLAIa`!dZ?NjEETX zQpEGn{ay^+2Fzk;x&U#JoEP*vvnfq>b{DkZ=!Ker$Pjfv(h+H^yqk#4dRS3VKvB%` zCek3ZF%s`I&>ig#bw41)pY=R-V@4PRNFt|x!s^qe%pAi8uw*>zF68Qsu|fIXXOt_i zrG9A6hmJX!bnd4{Qj>Co#_(R4*=l*GpjY|4$h;}+_5FC_%O6P=iu42nID(}&T*dOW zo|-Bp(qhpWazKz`<|idAhjf2d5Y^p8@h*$lW)zI|b34Tu@2%j}ZlBO>rA z6SkRtE50p46m!KYAX%0JwplZ^=j=IPXZo9!@n$IVW^;Lyh74*36o&*|oG9Z1+u^z- z1EdZh&AM1xwVgFDT(wmE7#8igi62WU!zv*EHs%nOXZzU7e}i-#34$es>JAuMauwX< zrR;7P9Ywl+d5y6Q44cGzSGJ>2fZMr+Ey_+CFm43 z#mQ4c%yMSps$@s|P$}Qr=83hb6!+>}55iFb->@2aFj0aY`iJ`&lq6?>Wa-U_-;1dn zVNB&l#HioSpez?1S+HMMk*<+oTbrBj!*IFD_%E#_u3o{)pNZJs?Aq8p7(=z|hzCc_ zZU->wHSCwNnX^eMzD zwU$UJ=NT8mHt;k;1IMUK3)~|q(1msb#r5df)y;=e!T2^M%;0X62g4z!=prh?Ezh>y zaXA;n1tJv3d;A{tblLV)4(yqR*YB`KrBTZ~Hg##(+FZ}2TXr0+2LP2uP^~22{%~lI zdjp<6F-M=gUbS*(JWVV*(nfro#K;>PVPZy8%6x!cl23a=-&lsvu~f9vQ_70jSNcZF zrh_G`3f%Us$||v2Q8+zMLFzR?{+eG_f}mE8_+7__Hq7zjDLEROVQ?|Mmb&T)^&BnHe4ju zej%`G*RgYPuuP7%V|~Id&ucheWDvtx)>UZKE!WZ|Hp>3=j^yrYr%;+9?on^9#pG$O z;V@nqO&p0;-la>yd!q|=rGbAf+K89ySAIxrCN2vkWSL|3>DeczL=og{f8>g#r=^&I zv8D>2zf02pP7X9$?pRkp@o1L&K00bViKZiG&Qi%DzPDi4AvF*~0oIcko1^ZLHfcT_ zg?=E?24Ed;z&YUAzoxCS4WpZd%s50%JZiLav%xF=P-~$qr&?J5#vCUR@y{U}=*Yg3 zcWTg+xWuT8!g98iSWzK5G63Ch>}8hImn$->~ioLa%S?ym5We%c@pU>M+M+I z=PX$rkNP9==_n(qM#2s!CRMY$7CF<{+5R~J7DO7^KRVjHHPRLkvjQC$3~9za;pq0r zS|O8X`G$hcG?%2$Z>^)r9Rs5%WwS?ba_u55#il0p^xiWO+>k`%O+OcZK<+$u9ETaVx6`O1>(6jDU%)5s)rR?B9QK4Iacj{ zxqGd_hwwRVuc&{SQ}$%tOK-#UHk8OyIzoBSI#E&&Z8U;BNC~m_%>0R5C&zYR>F)qf zu}%F=yu&RYqe4W8M(bvQHUH0GXySQj#CC`oAn>o)sMq6y#@$(2FD&pdvcUe!y+^0)v~f+wya#F|qVc%f;p` zhFg7F<*6#CRj_Iw#0+JjF^a+4b~|GQf}!!c&Z?0|s?Y^=gr>)TtZatt-YfOXQwufx z%7Vdf#Fxo}9f{2et*vDsiWXWRQNnCXDGf<*AIY25h^*62uq+@OB90NYko(c`he(+4 zz0TdO%?#Cye5ZF;ZG#$~;Ic;wi#HWxGOXtKVBr#%+tU8)TV}<6KoAI>gmN^k5F8|18XAVjmDW$0ZSkv} z7#A1B^rfjfQQ}~|II=bfRgkcwIEpsM!#AtXsPeFx(RoKj2n?@<~2G*o8sr`@h0h zUGriN6Wsi(0e2FMgW8&!jF5$%x)&ORWL^zInmlo$c@B^Mml2C1Tbl2}PB%aSq0>?e za)3(L3kx^whL9i`;w&iifMBGJ`WPl=1d830a}%M2G+P8@1#bYPHhFP;p!R;OF68pG zVQ05m?YoVEG(C2Qt>5 zCb`=CIJ*)fy!y++iZRHV6P9Uzl?>X%E93TjdP&Wb0RkZCU@0 z9u2509e+1KIhy&uMB%zRCX%l}v=gcNj`BSe2iceqyaNR=7Ws&uA_W-Q`G%S5*c%Wl z8R9w&H;DM~j!*NC(PMKQc^`ugC4hnl zInsf$p2$JNtH6g;6z;!ic`0+STcDV-6QQXXMU$Vj0E2|2b;Y00vrT|ygJooFOOSAz zvC+9>G)q?i9wyE|{e-h$1Oi-}(g2ohURl&K&2NKNKT_i=i;4yUq74#?X*HtsO6!G& z3g&NuK8|lHf{#}aElh3+LA!nd!E$j2pD9L>_Dtf!UpkFtLgNtXRfgpxH6DqrsA*35 zWKh|$AZ=hy%#!###jg!1>noHYu)=mMNEV*DIbvYJf!yzq8c?0>f!Y2h)9?Q&m_VIb=KSymy zoUG!R&xOoZn1KxV2Kf5}Z}mz+R-P|7vaubt@}ppq+-<)GF6D%Hd^k@}sJn=U+$ODy zEe$9UmH+khpq$>z@rr}z;)io}4w9f8yoS;DE?u8>*e!GnJ|>~gLbHfluiS+8K)}ua zj&V?fpEAM+?60E&ToEP-U(9kI9027+yCxUuhs#AW3l6#q$=J55@wtitwTaNpK`(Zi zz{A@EE;*ac;vf#6k>NiQlXlMWKkBJ9|?X*_FJD4Rt(|RnACR# zgi8kFQD2Le7Vx0q0m|BKx#_i~9M3^_7z4Z4^saeWN68|VJvd=7I*2CnXER`WMMcD* z#YzVunRgO8?R~r-(GG;E5si^odKErKk{cSXx z$(gDZMda^Orq*95;MbHIs{WcgF=rK_+Q>SPe0rN3MKK=8O^ahzW8wsbTV}cxs_;^f zFDt%CXApn8AX00usW-O5qT#mJ&oT+Wl((gAvN6F;LOVmAApMDVGmmU-Yf~3^@jt1$ zTc`E1Gq6cK3;6_kJeL|#$J#3BgGN&s@Lpdr+7hV#;lvn{J7n+|o*&v@KI}_TK4V7I zzqv{Bt}oB6duM$%Pn6jo8?_W&_EdOb6r;Vg0+4XdS-fKr8xlpC@+gGU55v^w9Szm#HrpbR12WC337 zd{k7x7VG|%!X-ayJ?l!QrWr!F^%M*~BUOW=+ znKMQ(<&wj{c6%Qnql!bAC>2#tqfbK!fQD3<7D$}#`qkt$A!dKo8jdIQun8Neb^2@O zp#gP+FQ(p9G@i=W&LfmQdufZ)?m9!Z=IJpcn_xKNtg_9PR3eteJ(-MVKePWpbOpGN zt&{zZ|3lmv?Bfw|UbEUzJ&#{u?(Ua(RLlz!&ipzLee+Kvb1J!Hp4Z7-R*v@6Seff7 z#DIm0usU_#q(7U)AWe<(Q*26z60%ofG8&EN?^rmt-O$<;0wlAGkLm(-EhuPzBHd6# z%GwVPPBIVIe^oBc^1oLujmyGF|34K$TPgKf@6#f7o=|j#h+p~Xa}fH0% zHLg<-7Gr?HBlTa(CAiUF4M<->22U0 z6Mk@A6I-xV#O|oXwU294eyuCEGtHo3*dla{{6&A&W`0gWjLmk^Tw6KO$ksp1hWaAE z>I&OZb6$V-RExFvkH5a2yxse-JEDLKhEm%nlfyxC>4P|RX6u<+Cp~3+t^y* zY*=jokw!p}Xs{0MuW4&4M{ztY8G5*pSKZ9_JII5{7=_4`oL4}So+>|*Oc1zzN+8bF z1W8{ayF3|I7)=@9ERZzz=m%T|QzS4D+)HPjJ0yf`ehbVabOm z==qtRc_x!#Fi>K`PPYjACZ`Fp(k?0C3DTJ*@Z2oo@0+EwC&E&m){2J?1^PJ{Nw1rv zM-By~6yWZPH(PfMIV4YPIH*43z@KK`86;HQ$6^yTZu5CF3E8ilXQL-#Biu6VcW(0v zIV4;UZu8?OViq|hS?`=@lP6*{UfGV<4~h0UC5o?{Me`?QS(-PKU-w%yST+dS^A`;& zn(NEmq1SCrFj(2G<;*K6Z;P3=<6fHz+@CJGkMSTsf84Fh_5UkgSpTHRuf9A!Kq}=k^82*mk4s5YV=sTCEeufairlTGAhr!-~~*VBMAA&`vdacCtiXB0Y17&E`v z%F6IPdi$NBF>GLD8=m*ROy;LNuw)5lucm~rSufTgn7+q03MrMPo6B$Ew5+x4jc3zb z|2y3#{UWy2;N_2+t+CoO7vP%2mY8MQvtfTlBq_6ZXO&cIm7WaUvA1xl2T!Eb_D>t? zJfx2SQ7Ou#nLDI%QzS|w)4E8xUE~b_Vgae3Hmbn3Avh#T=;XRuR=H|jyIM)wv_jLt zf9|A@vJn^5$}6R~X))p9JssEiSs@UV2d0!nF@8i#dA=cmOt+D@=&bozthSP?Pi>c% z%lsvX^G}2bc9Af{WjHjn)1RzEu3uq1_V*j;uKjMXc+>p70bFB1s_-c9fe*b;kgIO7 zWe2P<^a09zE4j9#_<8LB*$e6;cH6GUtd1ZSu5i;Cp}RV(2>rKM@-qLVMY#lQ`Pm7exaNoeSQA27;aKO=Klud`6KEbI+3xc2#!8{R z`9C4O;OEb-F~^M{9RZ-5i9w9^~=tG z!1>@T+B_jc;+83UbQ3pO;c)2je32O02y}UTKSw&LZh*=6u-p;|A*n8(dg8LqK(5#v z;W|9n0T!NdyM>{MEmi-oXkq*Rjh5j5?p^)|T4X^(zQ5c*L8&*ec@IwR9wNC?J8)<& z;;PrHu!dqXyVeyvuEjaVy{)6?wzRgBPXesob(WQz(T!zfE{iNCny%Kon#Wb7ws=_Y z%gJ6&#-S^3#D=?9q;hp}oPUgeBF6U%a*=SzB$KdR#JZiqk6UGSD9+yf>~D zTc!{YVlo|6RGF2Qv3K_nqiEPyU1ggqGRiwb^)y5y0u7b4o>Ss}s9~;YYhAzW&ad>A zF4s-DO%7C8+|D~-YHsn+d0djN&X2RUc1Rrwg$y&!d)S01nmhc;F_UEOkS+}2ri?CY zCFORZI{=6c1cJ&a27?B`kT9c<%WPH6bZlAEDJ07wqgr`kqOjeaw}#Hp5lhcLY#})rNm!Mzg!Wqf% z-<(TH>#uX^1c5vFbuO(5ioNlzv%inl#J$@AlbjScuHqJ4BOV8B zC$m_TdqS=@_<7Lp@_}u^3swo2E$i1x}+;#g(R~b0|02IU$^9GjF}G3e3ARw;P;jcT6(E-ct!-0@;&< zhhv0zGQ?1B^yG(QlD`X-hhwL)BnJH1lF0Xl_pu}mkZ$xsqYA?U+4OMtiDR)PmiAo? zKNBxKj-67jA~iMIZrAKDxbGv&JdUpW=fm1N2L>L4QXGSE=XoM+b(qIUopK zhPT*7d%VQNJ6Pb^4*1@8FDrxdMZZPE54Gj9OWefQq~J~giBsUc_JLGS7i3NWyn@FF z5{AZ5iX{|6)3_fHyGms8vknr$=WgBY6o|3IOe0FZ{*kZ*6oAOU1WA+X*;CVrWn#Ln z%Tz%7g)wj$7Lz4FFi5&(pW(T?+a^SK7lR-xYQvpe!gIl%WP<-1cmS?JFk`nQV%+7& z*t0y^9Qwb6`v=DIiz4o}2(IoqShIjksZ8g3)L;z{0nW2IQ2K7qm{;sYodpD9-@QtI{`hC{K2nB zEi{A-^m#snhBST#dX{V+%gzNj1o7W^fQz(<9E>Hz4ap@?9dEk@cgRV@`+_KRfgYr& zo1`?_dok?Z$FJE{9F*;oA)+q^(uR`+d>iH@P#|&6?UgyiGK4XfyrvVeufsHXCI{da zv4=eweYTW3iA|g$EO79fAwuzj~rYK*Er!j2r`PWV<@W+kU+G%cewJEYB#bjx1{1{AJFwkxggyVR4(13aucn@ z+;J!gAdNQiv!up3RU0R(0qL}OIWyY*RoQ#Uy4njsI=)3wV=i?~Nwo%P9C|ilIyeSU z8eLSx#&N|k-JaCnq_k%r#tCY;hX;sjrl%q>`0TPWQd-9oFC3A9gK?y+nLZtxpH50?bOr%qwi z+JL^Pj86BETLMV$z`UKUj~*Po+f}i8q@{wOPg5P7X6Fv>vybWSC5U~;ub6|3kTV`d zSC#Yk9dd)E!aB3Fhmj#OlaP;_55Ssk4$jQBpQGcw+a)YGtseL9{k5K-=dp|LFCR~z_KqBR^+Q2C`$N(d8lF$b zc!M`v5geDFPA>QZKqtLg#0v4dfxD@*6OeOEc1oP0&ug8U?62D=l9}utccJdOL{e1v zA~}3<`waN03-}-@#dI7N6wB%b*%u{9oo`rbnjWvG{TnF*RrAQ?VKuYM7A9v5^cfBG zkah+|B>^QSMWqbXD!SE@yV0Jd`zmzHe`Xcx7}8UI->5&zL5=XaTU6Cr7S%+OEA~$~ z9Q{p=yXyJ&R9S7wIGPcTCl5ak;sawr#15vL86)kp(lO}Kw{Z%)cZsX5B35xRc76ZK zsW^_5Esm7`94WsXD$gG(k5R^i;jj_Yc$ToioNB((Q3p;DWE^`+4dArE@Vvx3xJbB& zU3b8g=tQ@~c=WJ+yK~;j$#i#me4R}!Onsf5Jsw`PxVV&TbS&(Va~=uwbiF;%!Y2j4 z`>%3k64P1#MzXtA+Td!5I88Jqfe3E5y7*{SKqEmy_EWQ(XD^Bh8F0iiwQJ6Tag3uQQa zm;n6yY@2U!I}SB&dJdbxJE8TUfW3d_B>y|;pk9OIj0^oSFf~THCPDE#-ZV*EVtn=j zuzJM=_i0ErST7^WNuIlT^lBNR%7cnAR!)DSvp}>i5NlkwMnX*~2sBS?dcvq4UC_#C z9%Fr|R#O@iB^}Hxs4Q|`}^{Hfls}0!Wu68$x7>lWRwwKts_Vg9OSfv~)wV;p8nz*qFk)m5DHeD)Ql8Lkag` zB8`3qO0+1HNb%?MpbmJ5G@8}&6lD_$DiS{0%0Zn`Dc=0NUN`lWEEPK{{Ty1cK#2-kiGSNw!AXa9jaHx_B4D5Uy1dE`M>u7xVuv8wRK*3e&=6n~zTg|o! zpwP(d@P2*uje@$1*kJHdrhUY5W_S9tpWL&+leQQ92+LShl6y56ErN~}W0zw-3_>_gKT;|RWJOK#(tQ9fsD+`IpgVuZ1&mW8Kw9PQEAB?xYUjzJ>$1PrG!b2?Gt@1| z-bm4U3x&doG2C~O8zm~4aAhsNWmb;^jY`beCQ>&otP04ZlP+dkwV50$FIpEZ%?dI( z%Ba6MfX1O!covy_zejjZo=D;$TcWLWxy`a^I*D^i{Tu&pY~-cfpie>^clfIf{k;g> zkCZS#**;MV$!xfJ)`aqf=2*f4v?Af3cse@L{ob)uR75-70!PZl;K z;SV*!%P2Ixy;`YZFCA9P1UruiU9)Wk;^e*f;HtcQSQ0MRziDtJSrfd+8DcTKyu{&R zC-|{p`txn2;K{lo?ICvgpc)86;#rQ=fN7+|`eFUgODc4uf^=sYsD}Bek6EjP65b(z z{^_Ls!@A{iBv<~jAmL&kxQl-J^8~Q5X&Un?ETfv_XBi#i$+jZvzIN0>7Y1eG8IC8= z^vUAy^T22lL|#k*kwx*>oqWUcVmkWxD7(?&*duv~ja|*+Nyv|oVE_1L2?!DY;E^WD z-U4#{#5rR&LJ3mdR`k?UlYQmJe&1P$fhWJcx=?$)iQ>Sl%N0d|Toum;1vvkz)_p?9 zJPgq2&XcTf9G|bh`p$Y-}p$uSVozMgEHGY zog9?|_>83@Kk^I(*q;((k#c>cNDSwH+Y~!pu?=#J$h@0?N(mo?Zt;+Gv2KheZVs4*xUK^oHL?NM%V zl>6-cxT-6)r;~=Y3?qUq?;&8RrDT2H#wL)`3|tuLpDqj&c&IW`DDFe_egy>Q3ma@t zDfe9SL$DOElk{C^Vc6`<#0?poAPkFlQ|=$k@T@0-ZR4oW>hCUOlYQ}KL?v8kUy2+= z2B6N~=xZoAdDA@hD{6?%!?s&E0&}Qck zIvXh~vXW+P!`)ark9mqd8Upj+V<=Ljk*guu3(vo%i~j&e+zRON3fP1AhR6 z4gdU?xgg#DS1w3T%f|A*%mvx#|F2Y#_5YCyHmOMPlVY<8?D~sf4#gw3a!;sjff#@RSw`WWu}BM2*{7q^ZD0H#vcpE zv6wQ7ANMJD6gb5zV>J`+cCHO?~k)>uSRux@yNB7V$&aC2L4=-?F+gwj}c( zx)25#_Xqewsf~(?EB|#a%gn_E+VBVCk7w-nlf`93pj|Nc9&~m$ZYJ#7g%f=a7QtN` zIg8CS!}dGOrNzf%s|6<$1EU3AtqhdIWh4U&;zNh6lmGxAa!Ur(b4w;EVwxG}WhDk6 zE9k8R0u4F46-3L0MI_Ythy8DCnHGj{Bhn3btuMegZQP6)cg+F{AiisYmzSOZb=P-1 z6{NOe(qBY?o<^`2Xs8;9Q@M}!@7P~d5Z2tFV>rr8+gcG5TwnKIdsDC+fZq9ee-H+y zTEM*8bzTZoD1RkX0d)ytN>C8S-?l`GQ z(UxVpn16nwkkfHas(Zdn4bcZ6uo@<5Abyy3!nA9>6$eCYK(jjDuYSPXpd8yO`RC7`O#^nU!Y_?fEoF%IOLf5@g!R9&J8dH`U|-!T)4>+p{^_k8r-(0 z?XUCm~*Z0^FTB4#+s2bMdwUm-VAEsdV13@*{2vVJ+N;+7Z3DH^O5~r4ml{GsZwjC7U_T)8Fgko`zA^RyS;_^dJ_i8%>k8)zK{E zNA9bInzIaA;wtNfttSzZ;h@8J;*i|L?kwMH?5P+3&>jBCp-bIBrLyaSZxg<<$5RxfrgEoURZQe1eGnA*YZu*ov8yA2fJ zK?J##CPH6kvj8r|ex12`#9a6Z&E2tEjH_N5x$;9YthmseY8LLBvgKwqtGwRunvKm}bpCb_e1k3wftY#&aotdkZ;d z?yD$0GyU%Fd1NNQg0y4e*5x7>+oULf{O?H4u{dm`+V1~Oe>cU^2}tQ0B47d2XRP=PvUO0&en&w zY4jvjgISE_)kc`3lkNfIFe2oV<*t?5On9~W_u4g-T(NyOH4|_vPs_g{&Wnn>8l3mu{Gys{?&bdc8Vr0er5&fSP%FB%gGV zLD4iFv)tbYiB0xCOOFo6=69FzdKVFB z97f(-(>vIyFd1HsVroG|@uvo4fXPAz+&u%$$kq_vMc6%Zs&i`P6%g=%G6Qzl8!gfL zBv!$EjY-DZDJTuU)1(pG%8i%qjpJe>vLM^b%Z~!Jf|sIuJZ8~s2h4?nL%CHd!p>oi8Dh!ysvln?`J@$s{h0rZZ%#{2|j4gL;?pb(Sji8IgT09YyZ(a zX|VUC>k+~8PtIs}{fvT*&sw?(oUdMzEq9rW{#v#?nuM!hlK+gvk$@1Svlua-x86BT z7<;GEzD=o)M)>?|c>ySU^}+{^8NMqxoP%kISbq?(^Rg$p-@ShS12~9Qr}qCorv4uT z69F4*MX{h*=j__Z+R#Sd9Q;2Y{?C<@^M4WRNE%t2 zIGX+*elz^fB5hsD5)KEw5DW6G7~gF_V3Y8z9h-8ig+N2+I zW~an!T5K^OPYel6CD4Uo7*F-kRrKFP(2et{Hi2IkB;=h0^Id z09l@)a{}**V1g{5(KWSt`As6bPoCcl3}}mR;_wXmR~=M^3>6!5B%lrgW)Keo7I=pY z+RaASFqED**?@25yt_B~vv4{AYhhfY?3NS@Do&$Rs_4z7S`JdkDcAj-n?;+Yz9%#p5A*od3p+Q-;%5~IkO-u0p=l&d-NvstmeY)@B6|Oe=6E6z8kw zIjXRzQAL@)$6AMDyiAY2$q;3fv0i|X?hBI=27FkaanaWr z5mGa&OMRG~Cw^Qp-dL@4h;p@LM(`xkFJZJNI~ z{x!N|rBX_RtjRxwVsJFA$|~k{6J%3>wBsiB!k$(r%*G4ETk+L#h~r=*mlo_9dh!c| zPs1g~<9pW>5leFkJsd`sLM)e^$J1K599@#cF@&HvX?9C%do)3BKo)G(SlwnCdB)|bAa6Fwpd-%lf-(u);)2;x*f3t<@Ex+U=vYd&WQS5@He^cO@v|vh1Jr9n>%O|Q5^_HRNxUQ@gfZ!&X;hmG)h+8N8z-K zCYVPOHZiPb4nufcOwFTao^M zSFit&pa0a8|E*pu|5Jee|J3V$3EKZvz5e6F|M|E7YuE07sTULD|ACmSR@ZXdYC-f} zt=%Jj#i5n)cjFhS$6>Fzu1MK>$|8YBfV?g^F@a7{NYdN2W7xA)(`}cP!+!z50bs^I z2~CdjEWxwV_o{fZkCK#51uz}ngZB}!Hxt0b6R5HAt2Uj*R~TTN_GtIp7^ zS+UR#Mz3^1ioC@#* z{#!wlNa9BOKrxx9pFKuFNtN>1zg4r+0O4Xp21>>R-@B@1!zgFsK9dyb&^eIfwb)53 z^0w+hIv~3~C{r7bIQQ}aZ=Iu3=lOgFvf+d4)l_Tq@W9- zFI&hmjd?jByC}=$(i|wT%r5#Y?S9MI790B*Q#-Qxco&3KZ909#G*(z4E?JsJ6`s)M zUx!p^Y!Ja-A|WrLLg%!RCMuF8=%+x(QzX@`WkRIvdg073D6JYgh#M{PW_jlNc;pOt z;bP;gw`e*IvUf6m>1*WKJwZZa^D)h-!v-(w zBZ4&S5Q5G5$h`7eQ4e=@CX(fqrM3M!;ckdG>X7gWFHRw}oSwqZ-xmkX!vR1@VqsQm zH}m5|ws-45u;<{QJh0eE63Nu&ww?X`Wrf3{?u|X9pqSj>y}1D@pF@g%N{S{K>9|8-g;=P!khi@z@a|LA!#z9rDGq}r%h(S&H--&ptBe~!GiN_ceH-@ zn)0e%z46RD54OoBy(uUNd{tSn%oY21N6u{X{sy9|HT@Wks~vZzIiNbgG3f4EvpPd} zUoR%txQvi+g4qcyBf6d5%q_Hq&(310DDR6lx-Sc8SE=ZYUvI-6 z1iE8;WY-w=%}8)d{J~xnu&H`jqM;g+>uH>BakE^s8KyGs5Sg?z<$T@+Q5rCUbQQ&TRR%BZBH915F$}h_G3S+%eIr|8UgxYll3!uP%e9)k01jWKzl8YP z&im9)enr?W>@I}?+u|b3v)CvcM7azW!MTDt-NI?8z_`!=#+5x&B&)2tek3! zDFlA;P?>nqlxs5%z+%Km^9T9tsGQwU$;y_NrEI%7k*4d9uIRz?jvzn1v*IXZ+VmVH zhUb$<9b4}ZQMH4xu|eg>wDcC6r||^61KObrCL>gdH7cq4$Pmh}`dJRYo2&lLptxke#Z+7i$^8Pu5EIJ5>`5kfjATddimWE6ow?HwuKUud zo^!~lAC_@@m*OmD+vn`j=ewNDp4;F}xbo6^wtyBVt+IUFX7G7Y=I@-#4OPD&g6^AC zpi^5+L}K-rd8H-Mo_&)@_X{6)c<&~VHqvgIAp?H0m|1A=>sT|dJ4icIvYrJ0$X+f9 z13Y5Tv3azVX7rZYf>$9Y{sB&k(U_&(oCmNiyKpa#%f_+}eKTVG< zadSIQdiZ%drw59ER;Fh_7PexE)jy(7xXn`z89Ph1LaRy1)47c) zbA&W)bbHwDOJxSO$r;~_DO_l#U^hCX##5x(!cG*MAewh1KKJ?8?Q%&a&DreID6wg3 zcz_ckk>5rCI?h6k44Q!+lo|GCz9938`kuBO<3O4YUaj++icl#&Q<}eOKNa04_#gfO zd9!>nXX7=&RW7dWs(2$U`~w_I!xRml4W|dkC#rV8zrKbsDXVAA@=@nlexIAsM2Me?nV{EiqSV{c`35{7{p`7bxgr zlAOB74r4w&8jCbY4j$gPvbP0s&q{lT=}eSM#0pZiocQ4&Mz6UcZgYc_OyZ|rd@WD6 zTMZB-NE#j>2CwuK^z(3l>P1ML9K7XT#R8~j6!hEb<}JpozKu7JJs9hpnD}0xsldsQ{ido*nJBAlGHIb( zDDXy7e@h;b{^e;qYqUp$6YKEClMPG-?T~yd_+sOT9K62_fVzdl`QB%Pzsg zD7QQM3&5_PA^+d2Bi8@7dWG>{Ka%Bt!?ORevspOUIR4Y5^k3N7Yz*wo|HX+E{R%3d zrL_VEbqL}Hv4gP1D{jB~kCu&PUIiK52@cs$*k)C?_wUuszsHr+$&}2j=eM?_wWH$G z=N~#dw|U3X63T?tRDrn;QXb0sbZly7U<4jPO*z%X47je|q2b>mP*SQ4!m;uHjVD&J z0>ULAsKfo`ry0WaABm}Df;1Xc`y*0^D=;$-);9yGf4XnxH#<85wx@4&_!&#M7JyG+ za0SBzOwj;v)aNPy!PLyLwlfWAY;gXTampVHz@_8~z>UA_RpQqUENl}1N1$ZH?O#w| zNILhzT3B8WD*$T^1;o|yEeFv7pAr-E@>NwuM@L69(t?0i7ZifPi`)l#WDY40D&!A0 zBf#9JM+=-3WfSmg8x5L{m1heX_*E?roXOpR!3_Xd3xpjb=YitI{0KN_Yh+mAN zj-!K{4lv?s>W7K7DbQE@Gcq$mfNhkh7UY*~3loQ=0*KM;`gZ$6Py$EbB?bWvV*IEU zTjdwx!D}kP&FoND{qLBF82F{;gG2zHcYfL4S^x9tSbg0`=Zg0$ctXI<{Mfs};M8EY zTnFsq3N#`4wRxfv{3T`z=nP`tSYLndcn9R43n-wbB(>6uRMxo;{9A1NEA_Pzlp4mn zhNu6t0X7G14CnnV_~MVj4Gb6qCo4c7>qqs2PT1H8JS9*P1Av?dItKSH_oT)+_ht9x z`3py&=8v~Y{k;Zg?dS9JX?!=qz+9Idy@~(mr^8rT(G^-2MRnM#^;4@T4RZx`_m4IW z#^7Y%2)MS+*#>Z{hu`(X9@D^hw(IgWsJ1eL1GD$pxwY!_AvZqrdjhcC3m%Mj*IS>| zS33m?boPUwlN+5m{q!99{mZ=ld;IVld+aCj?nnCZTP;2@K60Yx+0hI8CG)9mjTTSGJlb7cJK*W3^@QoBfCX?8zhZt6;h##YmNOz;~Ol;wU-eR}oOp?9A^` zaw9!(`Ui^*&KA$VJ}9Uj`{7cjm&n#1{PR*d15oEz#1w!!5_j!>8T4+W5WNrQ%KvM1 z_@N8DF5;K;1N$CGo%Dx*51{hMZ{AB5pz`WJ_}R&yLGA!mP=0e((!=~`tR)M6i1gV0 zD(~a0JJZ@SDFzk;=x(m#2t6*9k(ZF(*x`kAYT-?71w zm-OM)*Z9A^Gug{m_;I*>P+#EQvQKetoOR z)Ro)(dse!4xmazF)46; z{PTM6!xv{jKVgHHh}_=+IJJ1TewJP~lelMht?$2g^GpANV_i6ZtsJ@%p84PO?0^X7 zP|YKF*kRdFA(|>+tUIa^NL>wfuuk@bE;->ly$hQuCC<7E59ojPZvvUgy;YlR9J#-2 zQ9u0)?}}$Mv2&+4?1z~tv+(_DIv{tpjDyCVP_*uT01Ebo>i@x%E3Aer%uECP6l*t5 z9VwXv<@%o9t*xkBkk0FU{t_h*3rtF0|4zzT2WtG$VOy`$QnCf#2kP~Se zl;fP@_Y2h(%ey;^ZUEtKo^##}$;{_8k?w!^GP=J^E_&u(x8d-JJPH;1K%Py*jyA(6 zxPB)~1o*j-$MQ1nxC2<$r{|s0AEzNSR3bgocU0DHgw^ktDJB+GNakVGkT+cZ0EViD z59k><-CuazWNkGKz!pQ?*ZCxQ(I=kNw*3};QWeJcYKC>A5ooL=+Re86}3Dv#e>3MUK_k_kX`eGzcI zo6%!V9ZEDia+lA5PYOxpcU}^CR3%>Lo zizJ(4SgL(C5MV$|e9gJ=F+ebodwcUxl%oodmD-Z3XM3eAze31{^4tl@Xk^o zktmb5f{TJ{`(YxZIFWdYU^KgHhC&V)Ws>-mT!EqKDyPDP9)qFp0NPR1{uhD4p&oMG z`MfOjwWKLK9HXg6hzKreKj-vnB95jxmlfpigL+5w_^#D!jMJdIJ24em`|a3MUQ0zS>w{n2_N~6_v z#?*kaNSU5|8C{1dD#1)5-1J?Mjie|Q*A1n!Tnfi>=AoTvRv8FR%+m>v@8#T+}q$y{Ec>9Sas!R+&4AL#kp4JN|=UA=2^vr9-!anP~ zf#t|jmk+-#YVva4^}-M)@3lsa<)0!E%1X8}H--YQP$bGxnpkZ9t|jk9?_a#msRtd? zFYW^p;ph1HIvO!$4p0YkrpTsoy^0FCtaWJJh!R~<+*8Q;b~#^(1(D;AsuUwvIIzVU z74O@;MF9|1-TA_8WjD-B9SZaA>Qz&b!VD`glV%Z4t`MP87*IW=1ra-xre zn8MRako`zc1(qM~>>vG*RUe0)-A5JNKtXYXgP)`C2lmQ}KUCo6&6RmAOhfTeh9Ir4i`7j+lFSIqaYgxT%)-sL5poB8? zLv*$cpIYtTV5crw4DAA?4f5>kX_@9W&>MAS3?flAC@=fX?E$avHX3*0T5{FwoQnEoTS4z6gqwV_0r8rS2t4&lPuOJ^eF)ys&A?8`z_scYLx3i z;?7L<>SBz3*%OuDkMJQC84J6gqmQsqc5Bz@G!(#?s>$d1m^fz-d%(H?wyc1XbC^$0 z-nN|q2xJHI(wU54K3i@#CGqtiFJXt^3y$Z2_O}m>I5+b%oem$ZXiq! zjiaTf%Ed03RF{*gNID?TU&f;ra(7DB++7&)3WmtULRdkhqf0V9k}t_wt0$>1P!&$d zkNcbHU|i$q0`alG93dL;4P z4RXlcRDJcv<`h8AOcwoW&NqgLxq5yBW7T~Nb#zMyX(=V^5%x_pW=%_90xC}u+XVvq z`YkKxkT(lU*>Z0~b)Ey)_vG0E5@@5d!-e0If+y=*x39$@+hA#GzJEU9ia}YZ?wPGU zX(^2gBEZg1lr}a8nrpy}_wzzGi>{TpVe>zcd#^+;cAw>(jchIk=7Rwx{?N3Uk6c07 z(=5|92N4|Z<(Z@};Lm!o-wqL{Mbm(ULm*5}rJltv8&Q)M2l?RjAOI*CXOlPp_YEix zp-~`jNn9iJ9Gs0=Iz#PFDp=r#$@*2CSK0JQjD!rBYQ56hGTT*={sy2@LQtw0P9_~e z*Rn!RUe`}6cz}nNMw6qdvREphUdC34Cn_-j%fH2VesufjS%sRDqAr#pg@TybC{deOV{GZPK+^-?(!>=!x{q z6br?}pqK)%fSieaYKp?83EnOz#;b<;dIE9=gdWw$sc^<*d^@lMqrG&pW6L-7UDY;O zb92jognX_=OvikY#QUPzQ1kM3Dn_;Ze8M?oExsj-z_i80Y&;CfR@6ZqrQa>4f&T!9 zcx)RcYR_re?}8=UFfMk`{0U&ooUQgOCiCvSOubD~j>G}N-j#10N3PC!YOrSU;bz&t zR-BbZdWA4j9C6}0_!CfAB5ZpuVK9n!k?|ekVsS=a8$jB*wdzJ-`6e@^w{<5 zr20n;WzJKDeIz*QaOSkBUv-2kY5Vd~=`dDq0_QD9YNRX7<9mk?IA|q#!fI7}uk%X| zoLi3pUSb6lw6*SzD2^`SAxnv@uvc4HU-#=wPXptidwFlg>Ww9!Cw75PwAT$%7@_IA z+x2%d_xHFw$A<}Mu?P-KhA8(oyw6Ht;tcxA*@|*A`doIqM5pD#P$2Wl<*!dOwz!P@ zT=pk3LyP3})#E$#9TLh*U`Ya5>G-1!ExQE7)!UfNpo6PxT=cGTX(g-B^HxRKKrPP# z%UX%w7TZ;V-}ad2K8>LYJ;ztWhXkQ63CC^8TCtKv7arl9l;ym%)}G9tr`tNC)VrPQ zM1u>xk%*9z>~ucxs`XJ4Gcqz`zK1AxN=lsERKK)Lqw+UD=pk$Nz_3E$md#<6zBItb zP|(E=;j6qZN=DG0rp+Tn|cJTrIc_z4)ME3n@~ z4H_Nl1YPw~w|o{=kfHRc3G#Eds%Ll;6zBxlmBm(-K!`;Q^i_pi7?!*-CacZE?bmT5 zg=M+4GM31Zx4Np(7<6YfOFCjb1_?cH`?ggr)e9&b;8HMUKKK;eY0_vZtxPz*T3oNA z5<(BOvY(D14@LhG;dRn8#y%G`^yaPNi~hXB8OKB9173vVW6)cpI{2-V0yUJ^kWka| z@1M0WstXz#oE(hQ_5}{m#(9Kl3s}S^2R047@qp0%>({EQ%O$%X;cEvjU3F67KZmkJ zk$+P?RRU^UYS*h=;TI61Ip(Jfv;#B#=3gY3n6CL8&^3z3K!m zwcY8X(-=*I>Uho3#kAWQ$B@BPKqS$2axvI8B8UyHHJqH1z%FT6;Od$8ocF}~{BC2u z5+0b=Ux1B#OSx6B=*DL&$S`f#vg*0f!5YjIIXZuR?GNPEQ|G<48hUKvRP-SSZ@Sy0 z&=y9953m0GuvkXr|63OQ4lbI+szv>nf&62Rfb>)ErGUi(v8EVyaF=XWt+8p5Y_}|i ztVtN1Cz+LX37?tH`%#|vFWGpTkhD!2f8)=+Z74d{**ZTr3b(~QGv0op;(8O5H1EtZ z5x;_}fhM50g5Pib%>#{u@qn(C_;kVF+V@=)n%4Y{mB8{M3&-Y zR2L(BH0#}aaI_?56BzF_?!O#TPOg~g{GAXE_1#ulU7wF@qaa=TWfa-N;8_P*;Xf#IDM=EJ2%6{+?RBQ$PDkCtik4PvzRr1d-DZ5C;GX zjpf_)YM;(x9VU^q`!A-D{A|9(B$g)luQk5I+&Ll&n&x`Rc&1N0jb~2yi8-(5AI$r< zbHK8Kg1etR5VM+lZ5aJtfMgSfj4(u8=50snMUS^VV##hd_1WXMR0WJ>y0sP#mkhDwb7jSzQTi@?N1j<++7!tHo5bhQw7H1iPCZ{ zQ{h6hf7hYEcm%pR!ChT6baK;61T{1aXdoJ%io(qrL%(`m|md#jFq z9@xh1%j7V0$%g_Z&F29T7xkX@RB6U^s^PGjdebnDTu}jP?-3>E*(+;1)7 zfAK~;c-iROn6E{C1fsvY-akvS81(FTV zxu9mT)6aHKP`#k+#>bjLJl*Kvk1&T>Gb z&IDzl@aj#}1FP~?A@bhrfr#CuVOWt=!rdmiG>Q8Z6S?s&pkU5}uGWqYTp(y?Xf<2#o< zkD{dU=9!%Bc1WaF2rnkLPznt__AmIz+uk&mppJQpuL817Lg0N)`znUgTatx0ph@ec z<$B=VBU$Cz0UEX4ykTA!B=R1EHHy8QSfEv|5WSL^kk~+(62RAJo=YHko>f ze+(sO=U7{r<3@yoL{3hk|K~l(%VWF>JBKs4w@XDXklVCFZG3fIFu}%s4Y~>`aVsd* zD&N6;fmLweSLa@#T1Ea4K=jxm!YyrE0rKyIjjQ2;Xop~_168F(01_oY==nFVE-aK5rg zBH$r&eTRYGIWZMhwkgG0H6~;X0fM)iPjg@H{h@_BzqBfq zgsHu5sKz_JzfAMZfe?z3R*sWH8b^euj`8~|P}e|G(GaiE$l)tk zT*d|iO8V$+o&=>_ogY&{C(h+&|DhlKUl6m;^0p|Rug>M$A9bEy$#w0Byge=t0E_tH zH;Mq+EJIgN&4Hrt3)pdes6gX*>iI0xXNB*y83nh|@U9glm`@MMA;$q(w91&~LUAcF z=v?^M_w30qSyTWNsK#=vs@PMfgkE%TD&_XXkkol9+S5nPsuG7>Kd*Qis za)bV3uLSi*rPu+@_jc5O^hGCJ>ODj}4i1i7P-(-Ftx4^QuA3LhnQPgZ_#s)4Y`Ef) z>bQIhEJQ3SXcl+x7(oe7kjn%!-3OO^h3Csjz3il(&wslcjymiXgj0=fv{2}DBGqgXEn9ix% z6^!a<_9A1ua;y4g^Qs1``YYDIpE!b4=aqIHJaX5G9n0Oct{+BR5Dk}T4Ki%A>kvR< zicb#NN|+-oJy8FVr~w;m>MY1-W8uv{q)`zE^7IJ0@T4uCaJS0x0MI4QB87@ z9KSVxjoLvRsCXaM5Z~^-R6tr~djv#I+_P|* z)ozvqyG4@yfct7wG@_7(nm!)zF)@$mm^wErp|nDxT6&tPL~%JPYCcC*x1dqwf{!oP z$>IVkkmfMos`n4yPM_e~b5&ZPVT$vWPDW)F$mmJaFQkV^OO`McC1u2u`L4zCwK#Kn z>GMq=(#*Ot*%Uau!W9H&cJ{-rMv0p%Icuc@WK8x#O6lAW-jV^TwH&~xUgfK5=B9hA&fq<*RmzKNx^kVX- z&IL{JZcqIV>v113^Ejl5ISJpcSEYWBcH#>1Y(59QW9I2L4q3+E9J5rmFIcazNNybt zZ3|q;2_vzfMJp9Xm$dMKGngK&Yvsl|t|5rRA=K|fJavtVAwA#-R(Iov;8+x*eT^2O zF5soYXjt{!M7)t*C$W%@E+^mH85=Kim(Xx&^jR0N{oK~&1f6+KBJ}PeSzh1X7O>35$=9X;HBAm{CxV;8ke%48fpvzL zAA283lr0`JDh*J3&%VtG>JRJQJjj)KKJG`?&;~lV68AczYnf;wOG5eyd`F4i<8Wc;SH;qW(Nt%G{Zg~A;vxW9@O`IQZ}HyPF?!13WRz1 zEE9`fJME4`JSxEo3Go5DJ)%)vr@B^hVBSPa+|%}_wjK+swB}lI7it=Aew?>RHg)>0 zs}I>E5l9!y2<+b?nd&?(bk~>Qk%qzuU7Z5kT-1Np*aVLFkE~H`Di@!{sZ1u_B~RJn zFJXn>eI~Yhvt(U-*4TbWxLMeQB+aN@QZJFG$8laSq1uZPR&=BSjG>fL1!N-#qYLZT69WB66e9BuD2%SR>jE4cq9uau?eyB8rITA9uZzPmLp4#u8zLz%6VxG_k0^ih9gM*lF=qB& zehdREzj~f>4| zdFOs%8s5>``qm=GzgSv#wJkGP4b+{ms)x72APu#EPcec?|;7IGPFl{BTk+yf3h#qV{>h=ok< zl!pZGEGl_CUo2D|hZo!1w4wN(gO@V)k9w_pFYf7`n%Av33-%uJ`PslD%oa3ynt~No zm?^d0yJNx7f=+A5_i|*)^Viqs>>^gamc_C5QSbHfe6T$?X`NE+byxQ@E~jronLfv~ddB9SP|4{!2HU5N?gYKt^E$o7A`@X;OBOMG4O^Bm+rpGe2;psIX3Jxjib6bDo#xT7%(&6ku}vy}&;HFWQ3jOs-i_5@66QX2vCEJA|rO6g*c9faXRc#VT;6DMS* zM9+IkJv?;3wvm604f3B3rFuS*RHR-W$4SVR52(-gT3>c!?`58BYl(@&1!0j;jUblettcQ(=hN^y4L+Ouz&>IVq!isziIUeDKG zfvrM?a$FntRK2OuP1r;pi^hG6aZ1}E@~&yHR-fX?Y{m^`10EUb6h2FIU8|{qNj4|GyTEyHfeM%{&uy&OcB;b8OsC^VlfbD$E(_ge8t(ri)L5$_?m=_lC-fT} zipCj*Kq185n~;V0BMMI$T*Ccp$?2)i3IUE9Uxw9b(Kg^W?v-HIt3TQYdS$JBK(3AW ztBPt{HleIDMzk3A4}Mad1l>8NH3>Tke%kzl;n7k`LVM#{)BYleSkxdd1HoPCx9pmB zgH-eR2IIEg2MR2B%_QZ7*T*3^P7Yzf`p9q>fXSxNeHBM>!K43yd$x1dW ztej+y?q+8D*X@9!u6@Tor*5crmiW<%|8>M~0Lek(-^RQ_U+c36j*mCQSTQcq79e*3 zs7fIIb5!U|Si$>uhLqe>30!dXQiqbx+it_jxZhy}5X*(l$5XfL@Wzis)H>q9oEWCr z=VLjm%oza>q!7KvMqfUZGQqZ-E}6KFFAG*C@AlQosIjxFY_{LotP0%(G$rc&(nJHs zkZVqTI&ogIloB~#7yrF7DZ2hmsym>vw&vz2N0>esW#-AR27<4cMPbb8Qx9*G;q zF|;ZmmSJhzi@?^huQc5c1a5k0OI)j?mrR3&C0ON#v)t+qJhyr2?8)KrSy-DRJ#KaI z7sPaX&$7ElFn=p`Q5@g!)}5GXUwM2K({YD0Cu(-x&BKz`qYm`lxW}cn3b;H~U-~ZH z&`~xs#ja~OyCba>t-cQboMZg@{iz4cQsa~G9QS7T<(3&vap)k>B{4VZ-PEaBeRUB? z8wK_mtcGn=)?4y|ED7glT6mc0G^6&<#?o_I)K<*XJQJ6%l{&99Lapq$C)r2HC~w%+ z-*&)n`|;F{e*Gw5dReP)V7xuvYqX10&yo1Y;EP4Q3GE7eE^iV~>E*;VcqZh|G9kqs z&)PCT*eSfS+L<~a%|CNmUF7n}xn73dHMl4Q_HtngDEU%{maIq|1*We!MAiVQpzVp& z^`T;ot_FBy3QU@pXf8Iy<_M3ea<&bykCbxjMafdWoJnv-97$Ap*qXalux;EOg7R0> z{Il4{qlHJQzsZNEZr>6YbnYgPN~NRWh4wsd#}D4so-_Qy9b(J0I(apM z@7Sk&LHK?5*fcDARt#x^`0tno%SimFnBP!VL6eG^Ipl_ft+X183w-vl1$XqIViAo8 zj30|JF_8WuQ(;!>|4oFkA%ZO`3-H@%zahsXGxNBp(=2Xf#K#PQ8Mww@T`dkPg%1wh1a6q3| zU{{%wQeK_WlR4aPKxS!%OsU+xwP*e-E&pNv5IUKg*=(StmgN@-sY7YJ){zABM))Mp z1#aOR!?BF_{I5Ciil)&*2Pkb`?C+@|@aHs^Jz(QuJ<7cAzxO+mt zSF@fCW@6!WhjY~DK1*AL3y8Izb}jV#MD$Ym*w|D$HwF~S5sND3lxLPN>R-w$$f?P; zC$?!Pk&ddT{Qgx@clg_Jkgi3>04YM}n4~#hZZ;iUiE2?p6FrbLe?WW`L1|@_!xZQX(ZQXcvrZY=gQ43 z>biy6VctLs>Z9?klz;Cjj<$Mk)%#2z(t3CsFQ-X>)5Dx27y`5bhb)A-}>Mi__M~d&WquakimD`|Ft-PGK>M5<0 z>++?e2MS$xeB*4FL|8@RuiJS|52OiAI|Svh81$?GREy`IOANdlXs+DW-ZR0TP4^!i zTv00{(>~9UgZkN)2T5nxUC-k+1C0g(%mJc~Gcg7CLK;o=fZWXqM7aC%7%rFF9R; z*F0C~p4#}>(|cc@)6s58csTS~wxZTkF-U)C2m9vC^P=Po2^+OG^T*7z*)FA?w)Lnr zI5t2Y#^hY)%yYz-K=IExPyMr8sr1>LAn&4q9xkTojboozo9?X}KY26DD0tRD1^Byit z8UjsN@OD<V%#op&|nn*r$WdkwzDY=6QK6nzR7UATzgXz1YCeYOg*d zTyqb(2odqsnS?kJ zz^fGqd3?_|QH@TZ4!s4!xHk(WscMPJIhpl9F^|J zRP0fdBys_l2)k)KD66bGEt^-d^FIM4KkPq!jgc`k)YXyD5`&2S>vQZ zk*AV_dIoWJ`d-CZs9lT*$FzZ9pCOn^Ke80ScVlqa`_6(tRswx_l^gdW7KRfpkij|o z|Nal^-YH0wC|c93I#s7^+qP}nwr$(CZQFL8vTfV8r*6me^mN~ziH@G9dD@W~u`~BW z{<&AIwb%cR;Tg!Z=d%GKb8a;c!hC3#jZzQ?4VhQia!PDk7}r{>8hANy;9}2MYlingSkX8Y~0*uZ#^MWt z&p{{LtN~3s0OvDRY2*b6lb*3+7sXcU<2v9PROZ)^lI7p^9)e)^#*X%KZ0wfDan_)0 ztU0nu8X;NHTpxk|`xduhW9Wa#7n}n_mULuGs_f85Jdo-s?Q8Jt<9~70e3Aep_E#c0 zEY48U&nnY_i>F(405@} zMCn2J^FfH!k>Vi7(sD3*v33UC%4KNykt)X@zxACa;^4`{!R0Lw*}C(Q-aS%uq0jGj zc)xb#;4(nwKgZY&!z|qM@rR)C(@8|Au64FW%vo+t6wHsLr@zo$LO>_NAUxpfBhG#y2eLc!MGG!&f z6K>;i6~I>Er;SDy>^h#9f_!&_%?ZQio5se{0pPc{Oi9U8Go^n-gD)qZI zY;!()Ooaf+$m}g3#7r24J4M~%=oa*&ByMs+WdCg#`nw;;ef zq^||tb0jxGVa!++%0X<{Uz`Q2EmSUW#1i7rE|ZfSKuJlL#9rE8Akasgo^0;OJ`x_J z$5Xt5p?pfaDk-0XPn9X0e^tj%NEJ#t32| z+e6MzcfTxnaqWb164r}h+5hccyrSEIA_#zROP3y8MjQMCf5#}NDhagTEocLHRSWpS z9dz3PNfL@%9{=Ez_Fb_p*s-|JfzZsTX6j{?1CTUrwsywVkw>vJgNspf6=jU@&T>@I*fgq@tSdL#6>_3MaOokJ5t%RzZ3;!<~O)ll*?^OBXsZ3NvUqx8_j zb{858=b`(vI!WXXe00Li$N7W@@1wJ4qtr7Zc=-;!KvcAN>H}6;)$R}^%YkFA6qyG2 zE|*Jev;dNO9z!5~&t)O+1IL;W@}FIv!-@s4s5XQQ)rj6D>SqN1vR|Fz_}Wo+I=hmp z=XYM&%9LP|`-qzaRSNJ1H(IjN#_N_qnG+}u^^b`%=e)P%>W|3!7xnPps$mcUD6*;t zCtVKR6&F8@b~>E-IU;bYbhw>+`C*W^br@dn((JXwNFJt!P}RaNJ-J% z?emIE)yU~FtMd-C)T-0JG|}Q9L+bQg6%ME%iuy!&n*Sg-B75?V&_yk>y@+!{kM|B6 z9R3hDj-m*KBXr`VVz~KE)8Qw|Eo7L(p^TX8i_`?Tz7=1+FXyUTr}FNdrlxzhPRrR2 zg|(tAWu0JmV}aXhC4m(`zDygoeCc9QrK#nb*E$Ju_kIksR;rSK@d6YtNL%|{BnzT;U`OScsGc^D~?|wxxY=T-aOat_3)_ zHQCJQtdGzaRX}vvbcYH1E0RB0W@rb#6(o9TYL#zi$1V~*JU(EJA7s;iAeMu_s)cCY z3^HI!lD4f~zAJAnt4d~UeT-v#&@Vs`X9`P2i%5nEEeB7)_u4ZoQPMc{JGQJy?B@8% zdj*Na3`da42K-50eL0Ld0T$|R$+M*RIDK)0eQSW(I)8P2&ZrV7Ho#8vqLVO><#xT% z>8l6O-D{H1naJ+>KEqKIJsyX5=eF-(BcsdH{ey_@H~B1H+$16zn~3ZG2rX13W`G=uNsiVdT|?wmCdxh%|i5@mnj&Z=)zTFkkR<_&JhEs*gm zSvLft$iZo_8C&@{02`VhKJd=;D8tqy$Y9tDo5G;NkU^q*pZ01ysA`Gio~BVn&|4>v zAlI1-6+|fc-zgv z90B1UeldDSXA!0l9Gae=KY54^IKPBI5oQwH83MlmUpyR95)FSbzs5fA@Qe4)j_Zxa zOHJc)*2~t%+Q-(%){NsahK!0JBA~Ho61Ngi@FNl&3h)F#g-3}-0stBn1sF)A9~-;0 zevaL#E@RjNR>YlOejLLOWL|{709QQ=a~LT~X{f-TbsalCH6*x{IQWz#z(7EFI<IT1d3I#4i# z*+91rKKNBcY&^R@;3I%QkM}RazpYu3rKB1nVxuD?qHqDXa6d;%?h0quf*Z$slzk$v7c`4;*T2jKgH3Swc&fiVG}feLZ}$j?Yb~=FN(JoCVez*un|jwW!SwL1`ly^dS41EMAaCD0(X1~uqgiu z)|1ZrSMD%DD{X{N6YMgA4TVx2jL=8XRa> zccxeMrS8!|2!GG#$Nwj%HZG+-Cpdy;CpYHjN>QHw?GNA|f&@RmFg7$el=!$mMD>w* zz9sZQecvg7-?CLG^WcBQe#%iirGF|`KWG8lej)-vUrlMeky4uF{62VzT0tTMvFmvM z{p=|HVBh;1zSdIx&?fx2@?+@Oz1p(A*#7+Nh2ZJg_4Wc#nRj#5|CtrkH}?CqE&KZz zYxa~ELq|L4>)FhOuZB-Xm|bs#0*8VK9Qjp0z{RB3BPS}DRvI{gJN{Xp`IUfy6%vF| zz@^vQL%m8y_uA{F=FQ%w-;0Z*rt|H>Uw{90(ta)mnsh*$9UdkL00#xK5Bg6AqZ1MI zPf&e;Q_%aj2?HKcn2@`HAb?dYzaJt5&^xn=xi}x#{RHs4s0Ju46bNPQ&caB}TkV%E zwP1da9O&#J@Hjuqzh;(#r#6lBIZ-`hF`=j~S6Y+Y)%{40?ibZUI_366+ydeH++@yS z6+>B+n(D|T9hUa3{J))Rlb|MpPzOfy_TdAPEI9T zHY`3TjkQeUf+IIQoeVi&+KMri?f0j_6D)Jp!_fQTP2{Gn$`y-b zu`%7t`?sr#80%hMiU%L!BC@?DaCP7m?|CRM~g*8##8*;xb)QF zX9L#o1GMNH`altw;^IQ@*P_rI-(GnWNU6C6e+cbJV!Ye~SK44c$$|SSU)x@a*iHUX zXUWWa0*PTiIRY`~>=T?k`K8Mc9>sni5)**@2Jsy@kdQMj)TWs8AVg}^=0T^fH|Svp z({|V~`-AWgaAmsg0leovfNl*jS?3qH_Nu#6o_my{Jq>iN!XLH%p8v#CI&j(ZJrHe{ zG0eqd7NOc5*^PSaX^5`vy7&T`j|C9uHT(^u^qr^F%eif> zoxw3sBG?Lr))=Xc4?Qg8==foYD0?-{vhB(f!*++3;rfLB*#mQATTHgfIh5Kj}#7iD^ z<>@xm$_bw~1xY&~llmO&CR)C*@iMxjvi6qS?-2NaCpuBMIgwv(rf2WI*uTZ+7hJAw z7@^gs6a@s){MfCqwaUMf4*VVyZiCaj;o*q^O(o*?;CQ3>x(%fseBx%9c>Bh`H9#Ft zOP0k5kWcI8gT9t{LyV{hR^6&Cv1YS{U^iC_LPwODE^%Wbi_ zG(0)uc%8Om{Z__BX*Sv7LfkXC7}wKd05OgugtC20Xk;a24i?)A&ee|dR$Uw3Xbtz) z?`xLe`Eg32^H=MP+17wdU!wxrR^9fBM&F(_V)GMnqFQzaG8Nfcd;J{=T#T1(F28ay zWa4Znvl1pTW6)ZgdoXq~yesL&kou`t=_d~?8o|XtB69|YdEwN@)ZEuD1Sc=Xn$xPF zGVHmG^TR&$vkCrf>I(-SlQLa>ecrVPVxkc6#e)U45rMltJwl*#Py+e{ySm)006qHv z6wQhLCj4)Zawn{;Oskx^%i6|?8m%5}=3-NjHMi5fm8Ry6@ug`iipGSqwvT+zIE$Od zCFX_W9Y*B1x=G_jK@7D2)DuLQRetgK^uBgW`AAF&tOgCIm?xLmkb6Xy-9G9*lrGWWcI zAOn|(wKwz9(E&oLTp|qkDg!kybEWoDst0-}t|S4~oz6Q})CSPnS>Bi|Sw?7~*>D>> z7IXfcNuwnMR7jaFno47Q-!WpQ*3Dp1dtt(5TluewvUm{XTh|Q<=7Flm(l-0~K!eY| z@lfW(X^4#TcHH(daQ&ndW?f)rx=30huV{sKKo z`@0(tzLb;4$l*>)n*Bn?wglHr&_(TtG4Bm!?x`k9NCuchn3}}r_S8U8abyj14w)3e zkJ{@*Ny`oUQzZO`8AmKNW9nk7vw+RCKQn#?t)y$BEUm#p8hdOdrl5h=Bf}BsnN;xK z3jRn+oNKrF8?xgSI!wn&`fg5j!w3t_oa|w=Pt~ruP;Vfp?Xe$BOM=3e3DSxwy^$HL8J#L_ zC_b~Zg#o#_u`vBP@u-q15FkCRYXP&vBkI5#y*U4S49Y zPq}kXKXG%7bD^9FxnVh%B9uR%CjT|7Xgr{DoODgkPcc&9Y!71!#JQcj_OAZ2C}`SX zF{gX?Ze5NuYI`t}OOYyuBc1`gOZrgE&x2)narS8L$A>KuU*wwk2$Q0%WB(guj!Kc< zZsIwt4XCTiGBztf#RW>n$_G^S!ob`pHe$sdV~zM|k36r+SgBhHX3- z_}L+ZtVC_Om^Hp?qg;ja%}(nC`VTvDr>@hTcT~*pf5XY|!i;jx5^5bsrsmC2W)s@d zs?06^`uX7d`Ti>q9_Ivo>f+TJbTm8Oh9|vdSm}|kWEn5Ji#F6`vIOpW(;3sFx*|H2 zTemz>Nt&mODJeAP*yc}42+DavuB6A*^1$^GZGbWQ3Lz-C3m$cltcn17g#J72m<{I0 z$<_){JeWrMe1b|@O9d?<)l0?J3E{g0S5S_$Yb(a{JaHW-M2)#Ko1!jnmzU|Qhh(~c zs`(P=qL=8c2T3rx0Hb|gRiAB^_CI^oQn+GXFtZc7Iv2EuUYE|S^J5dWgP?QHtOu%h zNziQ_;<|Z{-^>seh6)J)@hudMS3LvLRnH#sDh^Yr$(F{~o}7vN^~9B+J(fURyc?+j z$IFQU(ih9y2~I`5MlEcbP8HS(iHF8pHBA&!1a9rdGB@1s zFE6P!(~QlFCUlHPjrpksdE#Td1HfoX>TF<(G9nA2KPx{G8GLK6C><`_D0LL3`1JxN zBBkaybw!)ZzG)Y*dXi$BA2#`siA=>dN{db>nsC896%wz=#v9}&-Gvwj;sOV~rf|+m zcQOL4X}>SsyicrBe6h}Y^UMhr%IQ^7M}+ z*7aKP*hkr@3+uRJvdEnI*7LjDd7I&VG`4s+)emdV25yDAERBQ>w5a+{p6klN3GR$t z_&CYeD^Do{tvQeNlX6x?{loq!6q<-ZML{5!qIMmKw48XENWOP4D9|HM}#S2)8AA-UEM7F}UzIKPsp9G`)w!gf&-WlxsZk$#tEDT4lz}Z?NT!0PkD_ z6tNXAf|NOXrNTN$qt>O5prel~q9EFv;uW~R;2eJN3kkl+BR4|G-7#b;wvxDhwCYFA zJat8I-}jAH%5x=%LpJEU9;Jo6A{c1(UzRjhf)5vLs|Yhc7$5>{>2#Mwfh5L|Y7rr- zBVdicy#9=&whB*KzW^7jnkE3#Pjxsbjcny_M823AjY#Ex97=%52&j}WPF{LU7G?(b zJjlHGY{VxFY+8!)yE;AJ+53jeZ^{t%z=aAeN^nQ{}@9BF3D&R4ki`; z^qQ`6kg^Lo5_K=8J4Tr{#XL@rDh@Y|pi)oxIri z&1WHmAvJ>&UgDh}z?U2tQ$GQ50h&r)!?+b+ZnpEiZM=ycImMs_`sP#FVGdf&7_qezV0LvUjF)q?>0!MOcXC z1gW}wK~VmNwI1kea_I5|s21O&EIBb~7PL@-5J< z%jV@Vzj!cVSVoOXzMH|;eK8V@Zr(3Rb7xhrn`pT)Md|#ndU$Hm2zDHrI7mE27iCEA zXN;!H7C{o1vov9%o zCzrg`tv_-seO7LAolQ8lJB-mS{L538>Mq$iFng+wAi06n6QLIZ^KWI7q;qEmcdQm@!Z4s4q?YAXA9a z)^*NJUh|d2*^yyIA}@mt8>zr-^D(vD(zh5&%p0(`yuL0v4@OdIfLAemdft(JPet9C zvOLi4`93@02Q>+lvbpI~_laY~UXD*21q17&Jz~=4uK8$!>$0kI0M7NVdr3d)o~M#? z5ODLWCg>3jDH4X7clpkO8!!F$d_bvWmAuTI&!4Z>U$nX)e!R!yn2GTx4A(9#?AyJ^ zqM1kG$;%leL!dcI1;g{9fPSDiWsil+)3peXO!4U=OZ5HOaiW8Z&6QiRrW^l&_Pr*> zWR;6)Cs(F$Z8nV{bdX$_>Gm8inRelYWjw>c>`l9@D7>O3Ek^BXgh-S~XoZO~wES!J zAVtGtMxA05Q~V}teNs3jL`XI2j?0%G&dz{VpLVCK2G~lN!QKUfYa%-)Qrx7K%-LjW z^Q60{u-MV8Ov|&r%0fN1LH(j;4t&7$tHW!HP<9iH3SlLzv6$7E>RwwTdL~+zNFU66 zW3LTDewQ;+rM;lUts6^>3LTDpft?cKJe8&_lP-5%WpjM|fe^0hxY4uyAqk9ei zfw|NE&8*m)-fgG{>Q`~s4`v|V{>U0kdaj}9O-pwb5tMw5;;Zp6k9>|%*?9V9qoyrl zrFhrQ0Z!kHk?C1SRjqL=Q<)=BYoqAmx<}0Mt~j>O0?8u6gk?-1h7`kOO>k*A6z59wmz(g$p&Y}-ZcGn$$BiBrqKI!tN8>SX9)26M(Uw=$aWJUM3i|?8!+O3)D(eUprB->RJJDX(AO8BXk z(oUtcy-Ju`?RlUp_1^yGibGcb-{IjAy8ec0Mzllew=xH*rq6dYc3qiOH$a7PuvUff znYcX1Tc^|nps!%R#p2?X%2WCel*?HwDF#ONt~iJqRu)ue+j|#+5lOe&PK_rA2y@#S z3V3EF%X;O1A_jG2I#Q2dMxs8x8!d7sC%Nh`k*lLn?8+VW{eMh-$3tq(u zW{&gebG*|DPpd35cT!EYoja?7MQTc=rj+%uUNRkRAALJ<8tqwVybQL*FFJlAfk9mEXhMiDl+B*n!qbG*8Dy2kR0&3m{F|B~nusolm?kMD@UbTbaPc8E$q0gbu z{7csZE-5Ro2C}8JIG)H^WwGwqX3=!MIcWv@bKzY8)}l5r#Jr@@Ucwu=bIMSNq_W#9 z*tc2VWJY|PTDI=cCk&3tgSCrNQEn)49hpblgj558Bn(#`{~~myEpa=}!HTI`{*)W` zShVrw`drl1v`saakVh~yfBi_+~WG!uS}Pws7rAq11Ma1eb!ZjrQepsyT; zKDxmhnv9P!In1CaLSnj2)fn^+fkD$RFg{X=Nn zXCH#Um-w#LqM3|Y4Ju#nl01~0FGz<4r_k>48Fly$RD=fKz5m{IJc|mXz}4~XB#$S6 zawdouUYY1+I>SaLPKL~SeVsgddVwMnA_B&OCiTXha_1l3loqy%pAUgaSgviB2+8shONpPe9c07E&H*&TCPJ8l2$o?zW;?dV=oo>Wm>(MHyJG=!Jo0Y+`^^1i5P<<~AuqR(6%y^1Plt zP_nvqk|IQo8fd+1YU=B5OY;GE1RMElD8Sh43FmbeahJ55%*Nu6-G&m~;c}5u|K}jp zd1sp8A~FyhK9Md&Z1E{y>C?=2Z!S93)-15VdhOb5oryR~eUA%IOBS{P<%r$#CySxM z6`t|FqLr>K{bBr?B>H)1Z7@mQmb&I8v_o`!0N525TKtt79aC%Nl=j1?6lo5vARTc> z3(^7`5gdP8HsoJ7?+*U5?Pc~`)7cgoMg+{axuapMPC@a;kMd6NQIAh}DwJv#2~=0= z`|5pV*82(vHh9O+z##v}^kMA31-Dnxu&y$W|h+=`-!lRo7b% zXCRiKa->SnDW#S`Ml1pD2#`dK8*}EPN|Ud>>FF0x&!}Zf)1;=hKq3=+aasY3!v)oXM85}0Cudk=!)Z;4a;nV3%s#B zOhYHv-|px)z0B{_=H%*-r3FOKvvmh+PnX>4du7EJSeP!0@vrs~?}qYKGpk)+-t34KDh-QFhm0V@2aDKn9t) zSApPYP>0Tr@(xJcmcN~1Vk%3h^`3(=(NT}K8 zrgBSVrmKsu

%F%*erZ0La0dK|e*OBX;(;Zf2nIfi1HRy)CZjMA0v@jACOvCnj^= zCG&Vo#BmzcN(U)&lx4}+lKg7*8pP~8&nqH!{*EAHVs(gt-(OOMy8pzjV+^8O^T6eU!Xle1eUuqXWtDPs>DlA>3how^;&DHF1oNjiHo1A90o*7 z-U?2ZOot%m3^;}@fAyt3>+&U_6lwm22wpq@_nzvI@z8yg@o+-+6;N?=*$+`CP_7LU z5L&AOsh)`H6};9z6WpMd-vsA?c@#_QFL&TDab(gt#$D30N7Tx&V{AUFnn2|3x)9V? zfDIsQBYw%#U#s=4TIOQs@!bJN9d z)58O2q!7GJ=64wxp?Me^cNq%|>pE+PA99P=K&qnHS{m{If4QmtMS8?hmem=u+zZK)SQRjHiCToHJvufD> zf3BJ{GtZhA@2x1dI$P&n*R-3I^ve27j0a7hjccXWDMZBBEJsx}7UgA}ygj67TCP<$ zyY*aUk@;Pg$>VW8+UfN zo4&A4ZjQfuaa~iZ(cw^|R5fs}%$ol+v#YUu%j_cGKifA+y=%c$HdJ4pwUJx5nr~Y( zop|*h3)hEPDSox4%*R~W_?5tnm%fr=(-yQxX;UF0wLSi&q7V!&r!4z7M31b6HHEmh zuk;ZRS?C@y#3V>alSFCuINNwZ9<$P?Hx4Rtv?J}hH@yV4!G<9@hB%mTuGfb=1acR& zPrRQdvm1sO;hj4%=0ocyf$uGg5Kr`qKO?{+m=nq+*z*~LOE+W<&9=u37TgIp+gB_B zFZnMZ_ZFiq9q$>#=$Kw7aI#-{meEYBL9Dz6Ue>&J#Lb%P1*B$3bAzD+>YSCI6Hvx;tW8;a54=P;SGhmb*0u z{|5U8B|AXvA|dA^bHGWt+KSni{AIy&3uPrfzc4Ljxa?;%fO*Z)KZ}%a6LWxh&)8nY zN&96vpnc{!Ud0nbnO;vLU1DbfXC6&|z0nWRPZ>X#O+~z((&Kf#O_Xla(}8o-*w*O=jzDpPA`QWlsOkgkzV zw|1e9%QYJ_$p`EMFl5{Y zALzgTZ5ZHxASiw(|4(sR|K-X5OFS(mI;Q__b4ym2Ox$2W=$WaVjjzC%^NO4_p2%EX zyR4zyzHf7|^V*F=1IOe+LdZhDs@?hS0F=lWCA=W`6Fpq0i`$W}SFa8nnQQy!R~FX2B@FI2@PwVo1CDb)Or`yHjgO|D4;}xjAZiTcx9;@~N<< z)c7ffl6Wind{GW#%e63jaKNIF)3;q>fA+&VJv8U2Mp-f{ zghVZ1t>S2<(>DRElI|{%C{eNEWGio2o_BnC5!mzk3HB9bn^bY0Jv3I@Jjf1qxSKAT zlU<+~_qk&OY(S6~nxPAQd`l(6xbY0sy5;IMFlz~CTd$dPThqDgBb`yD0tgg*!7L-r z@PiCejQ`4pp(;U>D%Gviq0tCg2pt=P^yd2&i z-8)$*eJLL5v?M*t{0(e}?&^jgt#UkTl|>`cy3l#AK7W?XwKJbKJ2qfQ9lcOao4pS1 zG^1LXzPb7<^w+LoqNYKqm1lY=8hUYZyYjpd#3cvjMDou~IG3=7$%Kz+_4jsChvJiD z47Iv}GW1cPyI3-Wl21d1_|&q8Y_W6Mot1##O;ve2CN&rYn63wqeKRL!#}1gp#~ z5~jP&`NWAt8?W($vYtdCfz0XQIqxP52CwcYTq>Dh2ub<}t2ezKnnf8$Dk2X7x`6o^ zn~6}N^%!u)!G{m(flzaLI$x^=81aN`cf}?iR03qR;~Fm;eiuK>5;({i~?CR`%dmt%7{2OW4vzEa1ctEA0bTyS)+h0(^KOcdM`nDggz9F1- z;*&ABXoHe#^G*0-gq71tir7IKIl7&Q@9vN>v`xFk5CbN&r<1QLi@X6s>cD!F`J&z> z_GQpLUAImV^+h+GefC{r^3>i)YJHVIpvxmA7=q3JF1TY!zYoK)k#mQwXx zW2%6c3H7;LHg04Eka-;LNuSg|Qn1OsL89x{;OjWUZ6?2oR|VWv<8dgdrwC5cL}(~y zZzrjk%B9;i>Sy}mmFLqETQuwC#gk4F{0dt5C&ndE@voddb67;56D`Lx zP{=FTAaBENIelY1SjjH9>7ueYxhz64N$}8o0=X1gJPYnHN|Epl*weVeo^t z58_KB+&;r+MI);jay)9V1Vjk!1JtnyQZ(Deu?2Xnv7M)WBJB-er#AG{f?Mod7%$vO zLj$Y7eFBZSlV~*1Ys}*C$eNN3fae}Q!r<`F?MsuMFYZ;xGGo;*^!+v;a7gQ5VQ9(B ztLWa&n!u)|acsP#*aj4TN#uDr?*U!=F$Bui2%8W6im%{9L zM4zD)x&I;o;=$Zn4L`!K*76X5#o{dB#=k*5sDKa|pjFBM1S3BxKUk+krt=WVs6sFr z1I??Pbh&UiEFc9AUPC~4#m+avbr>?Q)Hk}Q)>Q6<$U71dz7Owj1i0{`V2tWNH!Gl zo+w2u>s1`2PJw>bscVoCAukJ|chxfIZw#j)}9T!rSzEn=Js9|?G9l3J5z~fnc`y z)W88+DH%O~3y$%q_eHoOZ04zO%c^mVji-V@FO^tf(d_}AGwCvrY9RzKR`~km%yMx) zZm^^FxJQH>PwGHf%wIQURr%wSyDn!pd{~YHZ{I120s?kE&!mkP2qs|XV(-2QvKe4n z{+eXUs0%@Ek;iW*>P2Q?A%PEWvA{x5t+>bF!*3=KnnOX;B9a@_Fg~AB%*?-_L}B%H zWZN`Cg_?gNkc^oWT68%jQBp~4MI&i&&-U6cRkC!q&EMu6V(#AZN$ZASFs}Vi1)d!# zo`WAxqE_!eQx3x;qk&bN>+#d^#m?O;Z<>vjwRx>u=3UUMaWwZ1_oF}#wXugqWfS_b zU@sF~;jVlzURK0h@xRy!v%47c{~?{8i2i|VyFBsIrf{6K0w24gWvP(WRZ!6Aup4>X zXa^fU?w`C*)-6nIe2sW9{y?H1n+ow>dZ;;Tu8&KNhR?eHEYV@reURBc!v>hpvne0&NH&_oUgNBfj2 zc}s_hsuIaOqoiFtu_uQEjTOk%@OFMofcfvSy5z;)Z**_+VY;YH-2|r8=c)!kUlA#( zir(bs#h*UtC~0r%5I#Mch{*=9N=_ ze>MVqsqU0ol1t?c+g|8sCi|34)~|01FP zKSYQBamxDtF*^KTWkoZvGP3=5(P6fRq~m5Ae9y-(D_U8d33vA*$zj=YWXxs=*^)9; z8y62DgFjtR#=oe0T{pLO4j`0p%#aWjde#kY>vUuVnpm~7^6-2sa`5Z>>v^cMRoyYU z#9k3;ZRv_TLtG1Wzk*6AEByStrSqLTM zckA2nXm@FYp_gL6q(Xw@OIl;tor2D2COcd-5%+F9(N+N-QvM#no$I+Hxe>?SE*^O@ zaa4i_mbv7}t*fWsUWAcz+|4&zgc19W^2=YytB4;ts@Y+87+0L)v&p#!m>D0Mv2S= zG(9iloe$IEX#WnFNR(#%5)pyZ0slE*s#cNuV}`0!p*=1e#@cimZqbf1-G<1Rj;8eA zR`rECtOQ_IJX0I>LY2*J$&7J`v4?a>oUP4+!9v{^LRfXgJP@IOfBtwLTqn- zqMF@M@ch^|`zp#08P>}7A6fDRx9)RnC-XE-TF25(aYU7%*HE{BgH+ADu*;U-M>!b7 ze*-(YU5PE{+9tcODS0s_X2}n!b0@GV za*=NjHMXCMr2Z1k&5T2_jiQ!13I%=D6Bf_TOG_<=7OnvY#FUE)GPJs^_lKU-7Og)E zTxNv#lC^g--nW@b)ZRof!EV;Si-oq2_8g2h=7LmWPrRBqj4xW;<56dG$9k||qO=#X zWiXRJN_w`67lL_INh7{=gDZT*g9k9gmc}DJ^SHn3m>;liMzi9lX8-!iao_xMwa5yL z8}xY*jUV3!JWJHm4_s?qKQeXhil3z{;mxhYvc#~Ahe0F>m*vXrJ9w?mUo?KLAwPpf zHRfXm*b05^~OH>d9z1v4SUeg&ez_xCk;znov*?un6V;d>p93#PQWu-GL6bvxE6 zaMOfT-kJ{WY7lLb00x3;HhTp>E98I>NV>UAiq7+OYtZcxzzk+Q$DApbw4|K($;g{@ zE5XqIDJ$k@`FQ4?wJ*QJ{oW8Y2Ul~^Ub!~qo&31Gm*%S~_N%Z_ zup)6C>$5@G$QT>dxG{njz?yxg6B&x;iEOG$f14;YgRrps#hCc2SrtSDAg&HfQmM8S zD7Ft(Z)L5oxK$&5=};O+-8Ve0#l{Y8Q6I~RGuTXwtQ+y4YmxO|}qKx804iP2KvnK(b) z|BX5BPM62Oug_vZZmSGL`3D z2y9@l&m40{c^FB48p5 zp4I1hHZF5nOspJIpB4a_{TYtVKjP5}7DDduD$27u5S;>;I2<79kZZ74d{jMUZDOin zGng69gJ`62W=@8Yfj3Z~C!|G>so7#cAJyq5(elJ2>{(QS2uq~-{saB{i4R;lXdavq zw=i3BRxC)6&~lj>P(N$^-2aN~0;p1Pu#!53aQ?7CDB>1JZ0?o??_SD$l`21nXN+cn z!^2a%^wO3-)Ip2A3Ak4%LA2LQ%uh5YTFO0p$h`5_y)<|M&xGiRBHNDa3EZDsR{P&L z0$aX%L0l>6N9dgN^un_20i9XpqM8xHzXLu+rfqA(`E7O5bxe#y=yQ|$fHz(u>x3; zt5NGY065plMc0Ylryv#I{i;z`1RBX@`S+B=Dc|=iXzz1oM9&80 z(2a6g3|Dw-W#_EJ%JlHt^^`_<`D0mYA-wusxNOlIo=+BeClClPQAswTlbwIX1T{h) z>TJX?_$>eOtE=tmDi3ipi)YETs%Tly#f(ftQHhgOHJMQX^`?X~m--lMcg(PgmTEyw zLG!9wU^x-yeC_DeEndOiu)bCk*=afvrW@Z*OXQd!R+>oYA! z5V*F|r3oM?wu5P-P-eaRgoBY*tRzO*)ty8rtYzFCL9yL)y%g79UPAkYF7M;7PZY`E z%^Z0txjIDvNv{LIZSM%^gTx=oZLAdvn&qCiOTi`dhS{Nsg$CbgFb>I9PFht`FX}s& zaB$a!Op)2HikaO~(KZ6RrutbUDsr%QT6-ro>sm~)wWI69{^D)D-1l@MN2vz-%mzIk86 zICU7?4M`i6QmDF&L!>w7Lv&-_#!PDyNVCb-=z9b<-~;t9TacHC;jCI3G2>{3EL}wc zz^T2OVtDXsO16CW6U!FF-uQYuUTw=Lb!M5+6-*>99E=aIz&11Tw|RewLDnjlZFV{?|n;Q&{6w=uhE-kJkG%^}cP# z&1wWwUI!&c-%TXrpe_=9%{C)AmNt=EBrmlx4$b}#Mf5}>Db06o0wynovC?N@-`gbM z-gTp5byaa<^yA2~PXd8P%#6yoUqa=2tph^wjM`E@Nbp&eM}~0wLX?e)qz*1fJr9y{ z61nVp2irN9a&sg_GK;-JjuQpe+m?U<1a2caHg}VPo3sR|93%zS*f#Txdl(@D*bc?w z0+DXnN%|}Ug^5(6!$!{H%%4ZNPH@^LZebRsr|GV$jpCKCYR1wRg63dkjMlj@Fekyz z{t{4Rq7v*i^$;e+nO61o{g%rfE!0P{Y4A~*I|R+}zFVQU@Z{8Px2U*Gh&TbZ9>rIU zH49q%%xLS0)6@5NPSBtxHe-iU(O!Ai1;>zN0>cTFfd&`a6PKIY6~sV_0}|atf-zk7 zGpHw#LRSwvX5CDKd15cvQy`&;#2@lMyIS?t<0e?MjptH|*4*)7C&;y>$%%fET~VDm zo;Y5zXps&Mm0^FtTV;uL9M<=8EzQBsuvQp`$K;7>pUHJI+JPaP0L{fmnqv9va6K|@ z_5F6%&dp}DeM~DaIWcYD4wP#du)+ax7P9-qUUBv2MTtEvxgRrEK{;OvL=Hu3#tQ$K zhCNRVEtdR!1Q>u|HC5Xl!Vo2ekU2r=vy1(kYOPd+zhxKfa#n=~-2^s;XCYb^U79s;a+2$~jp%OWK-yK=`=++~r@+ zs;1VK%ASs9(3GJ`s9U-_d%BrhxfKf(G?LEhV~>NEE=9>9zHIAa{agV`fnB%MN21Z4;u&v&%gFM)*1HMHCX}T5+EZ9 zY*>&HNBF)WbHI$D1SrG5MwA&~LIkhyZwmUisQ;Gczm?mc#MpRP+5R=ToOE3U_fOnl zXeZ}PR*5kNayMD+x|_f;H5k44jeHD9VTyz;tO;&9e!f376Vq$pkYmeZ3*H3Pk=-B- z^)W|qDdHUqX__ozFYAo$VJY0W*ceH%vX#-@^kDQBF!T@U`AW?E zl{907>9Yf~_KF;drdm3UPhC3-mbRqpD>%B*5+7WLtZfDF>es1nW2wIiTGZlCa8C6n z-o_TAe)yPJ*2Q?Txzfx|K7hIUMojd> zf~A?&El29)UV8q@Y1TtB@~cv{TI6zlOQH1W=W2?8z2(o}3It$VI;MS+q_oub!)OwD z6@o2;_s2MP+^>|q$L493-1W_F@

scWC(q#>MAO;e(3P*SsoTt~bVlrO||{ABe17 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,l_4UVqg( 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 z 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%0D!0J{+N5o76YEG#cC$W*o;&JW82Vw1gRzaDy+ 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' -';' -'=' -'+'';' -'=' -';''.''(' -'=' -'(' -OR_OP -')'')'';'TYPE OF NODE OF STATEMENT1Keyword-forall: forall'(' -Keyword in -'.''('')'')' -'{''.' -'=' -';''}'ForallStmt created -0 -0 -0 -0 -0 - -'}'error val 0 -at 1 -FORALL par NAME1:6 -FORALL ParPar NAME2:2 - TO Set DEVICE BOOL - ON: DEV ASST -ANAME1:6 -ANAME2:18 -at 2 -Function count_nodes - { - Declaration - Declaration - Declaration - Declaration - Declaration - Assignment - Assignment - Procedure Call - For all - { - Assignment - } - } -Initializing 0x560b34f87a20 6 -Initializing 0x560b34f882d0 7 -Initializing 0x560b34f87bf0 7 -Initializing 0x560b34f87d70 7 -Initializing 0x560b34f87ef0 7 -Initializing 0x560b34f880f0 7 -Initializing 0x560b34f88600 8 -Initializing 0x560b34f88830 8 -Initializing 0x560b34f88f30 17 -Initializing 0x560b34f895f0 18 -Analysing 0x560b34f87a20 6 -Analysing 0x560b34f882d0 7 -Analysing 0x560b34f87bf0 7 -Analysing 0x560b34f87d70 7 -Analysing 0x560b34f87ef0 7 -Analysing 0x560b34f880f0 7 -Analysing 0x560b34f88600 8 -Analysing 0x560b34f88830 8 -Analysing 0x560b34f88f30 17 -Analysing 0x560b34f895f0 18 -Transfering 0x560b34f882d0 7 -Transfering 0x560b34f87bf0 7 -Transfering 0x560b34f87d70 7 -Transfering 0x560b34f87ef0 7 -Transfering 0x560b34f880f0 7 -Transfering 0x560b34f88600 8 -Transfering 0x560b34f88830 8 -Transfering 0x560b34f88f30 17 -Transfering 0x560b34f895f0 18 -{ - Declaration - Declaration - Declaration - Declaration - Declaration - Assignment - Assignment - Tranfer statement - prop CPU to GPU - Procedure Call - Tranfer statement - y CPU to GPU - For all - { - Assignment - } -} -fileName temp_algo -param :g -paramD:d_g -========== SET TRUE -param :g -paramD:d_g - ==VARSIZE:1 -varT:int -varN:x -varT:int -varN:y -varT:int -varN:z -varT:int -varN:w - ASST - ASST -varName:prop -STMT: For -isMainFile val 1 -Entered here for forall -INN OPTIMESED --------------- -_ -_ -start of kernel block - ASST - DEVICE ASST -finished successfully diff --git a/src/dump b/src/dump deleted file mode 100644 index 8d983f5a..00000000 --- a/src/dump +++ /dev/null @@ -1,114 +0,0 @@ -bool isRevMetaUsedStmt(statement* stmt); -bool isRevMetaUsedExpr(Expression* expr) -{ - if (expr->isUnary()) - { - if (expr->getOperatorType() == OPERATOR_NOT) - return isRevMetaUsedExpr(expr->getUnaryExpr()); - } - else if (expr->isLogical() || expr->isArithmetic() || expr->isRelational()) - { - return isRevMetaUsedExpr(expr->getLeft()) || isRevMetaUsedExpr(expr->getRight()); - } - else if (expr->isProcCallExpr()) - { - proc_callExpr* procCallExpr = (proc_callExpr *)expr; - if (procCallExpr->getMethodId()->getIdentifier() == "nodes_to") - return true; - else - { - list argList = procCallExpr->getArgList(); - for (argument* arg : argList) - { - if(isRevMetaUsedExpr(arg->getExpr()) || isRevMetaUsedStmt(arg->getAssignExpr())) - return true; - } - } - } -} - -bool isRevMetaUsedStmt(statement *stmt) -{ - switch(stmt->getTypeofNode()) - { - case NODE_BLOCKSTMT: - { - blockStatement* blockStmt = (blockStatement *)stmt; - list stmtList = blockStmt->returnStatements(); - for (statement* stmt : stmtList) - { - if(isRevMetaUsedStmt(stmt)) - return true; - } - break; - } - case NODE_ASSIGN: - { - assignment* assignStmt = (assignment *)stmt; - Expression* rightExpr = assignStmt->getExpr(); - return isRevMetaUsedExpr(rightExpr); - break; - } - case NODE_IFSTMT: - { - ifStmt* ifstmt = (ifStmt*) stmt; - Expression* condExpr = ifstmt->getCondition(); - if(isRevMetaUsedExpr(condExpr)) - return true; - if(isRevMetaUsedStmt(ifstmt->getIfBody())) - return true; - if(isRevMetaUsedStmt(ifstmt->getElseBody())) - return true; - break; - } - case NODE_WHILESTMT: - { - whileStmt* whilestmt = (whileStmt*) stmt; - Expression* condExpr = whilestmt->getCondition(); - if(isRevMetaUsedExpr(condExpr)) - return true; - if(isRevMetaUsedStmt(whilestmt->getBody())) - return true; - break; - } - case NODE_DOWHILESTMT: - { - dowhileStmt* dowhilestmt = (dowhileStmt*) stmt; - Expression* condExpr = dowhilestmt->getCondition(); - if(isRevMetaUsedExpr(condExpr)) - return true; - if(isRevMetaUsedStmt(dowhilestmt->getBody())) - return true; - break; - } - case NODE_FORALLSTMT: - { - forallStmt* forallstmt = (forallStmt*) stmt; - if(isRevMetaUsedStmt(forallstmt->getBody())) - return true; - if(forallstmt->hasFilterExpr()) { - Expression* filterExpr = forallstmt->getfilterExpr(); - if(isRevMetaUsedExpr(filterExpr)) - return true; - } - break; - } - case NODE_REDUCTIONCALLSTMT: - { - reductionCallStmt* redCallStmt = (reductionCallStmt*) stmt; - reductionCall* redCall = redCallStmt->getReducCall(); - - - if(redCallStmt->is_reducCall()) - { - for(argument* arg: redCall->getargList()){ - if(arg->isExpr()) - if(isRevMetaUsedExpr(arg->getExpr())) - return true; - } - } - } - default: - ; // added to fix warning! - } -} \ No newline at end of file From 711fcd559eb735ee7e10555cf7a1963d5cf74bd0 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Wed, 22 Feb 2023 11:15:52 +0530 Subject: [PATCH 32/38] updated gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index a4edcd2d..b6972366 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,7 @@ src/bin/ ../.history/* StarPlat StarPlat.exe - +debug.txt +dump +*.pdf +To_be_done.txt \ No newline at end of file From 058b599df8fcf4728be560a150f3802bd69bdb9d Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Sat, 25 Feb 2023 17:12:07 +0530 Subject: [PATCH 33/38] changed fp assoc id type from RD_WR to WR --- src/analyser/deviceVars/getUsedVars.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/analyser/deviceVars/getUsedVars.cpp b/src/analyser/deviceVars/getUsedVars.cpp index a9dcac5e..07444d73 100644 --- a/src/analyser/deviceVars/getUsedVars.cpp +++ b/src/analyser/deviceVars/getUsedVars.cpp @@ -244,8 +244,7 @@ usedVariables deviceVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) if(affectedId->getSymbolInfo()->getId()->get_fp_association()) { Identifier* fpId = affectedId->getSymbolInfo()->getId()->get_fpIdNode(); - cout << "fpId: " << fpId->getIdentifier() << endl; - currVars.addVariable(fpId, READ_WRITE); + currVars.addVariable(fpId, WRITE); } } getVarsReductionCall(stmt->getReducCall()); From 080aa920a963bcf34eb0648b4dc95a66b391d3f1 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Wed, 8 Mar 2023 16:15:01 +0530 Subject: [PATCH 34/38] removed unwanted memory usage --- src/ast/ASTNodeTypes.hpp | 10 ------- .../backend_cuda/dsl_cpp_generator.cpp | 27 ++++++++++--------- src/symbolutil/SymbolTableBuilder.cpp | 15 +++++------ 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 1cb21367..992823a5 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -418,8 +418,6 @@ class Function:public ASTNode bool hasReturn; int funcType ; - list doubleBufferVars; // the propnodes which need to be double buffered - bool isMetaUsed; // if d_meta is used in function bool isDataUsed; // if d_data is used in function bool isSrcUsed; // if d_src is used in function @@ -596,14 +594,6 @@ class Function:public ASTNode void setIsRevMetaUsed() { this->isRevMetaUsed = true; } - - void addDoubleBufferVar(Identifier* var) { - doubleBufferVars.push_back(var); - } - - list getDoubleBufferVars() { - return doubleBufferVars; - } }; diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index ce91ad1a..c4da7de9 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -2038,6 +2038,20 @@ void dsl_cpp_generator::generateVariableDecl(declaration* declStmt, /*placeholder for adding code for declarations that are initialized as * well*/ + + //~ /* decl with variable name as var_nxt is required for double buffering + //~ ex :- In case of fixedpoint */ + if(declStmt->getdeclId()->getSymbolInfo()->getId()->require_redecl()) + { + char strBuffer[1024]; + main.pushString(convertToCppType(innerType)); //convertToCppType need to be modified. + main.pushString("*"); + main.space(); + sprintf(strBuffer,"%s_nxt",declStmt->getdeclId()->getIdentifier()); + main.pushString(strBuffer); + main.pushstr_newL(";"); + generateCudaMalloc(type, strBuffer); + } } } @@ -3367,11 +3381,6 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { sprintf(strBuffer, "int* d_rev_meta;"); main.pushstr_newL(strBuffer); } - for(Identifier* id: currentFunc->getDoubleBufferVars()) { - Type* type = id->getSymbolInfo()->getType(); - sprintf(strBuffer, "%s d_%s_next;", convertToCppType(type), id->getIdentifier()); - main.pushstr_newL(strBuffer); - } main.NewLine(); if(currentFunc->getIsMetaUsed()) // checking if meta is used @@ -3384,14 +3393,6 @@ void dsl_cpp_generator::generateFuncBody(Function* proc, bool isMainFile) { generateCudaMallocStr("d_weight", "int", "(E)"); if(currentFunc->getIsRevMetaUsed()) // checking if rev_meta is used generateCudaMallocStr("d_rev_meta", "int", "(V+1)"); - for(Identifier* id: currentFunc->getDoubleBufferVars()) { // all double buffer mem allocation - Type* type = id->getSymbolInfo()->getType(); - sprintf(strBuffer, "d_%s_next", id->getIdentifier()); - if(type->isPropNodeType()) - generateCudaMallocStr(strBuffer, convertToCppType(type->getInnerTargetType()), "(V)"); - else if(type->isPropEdgeType()) - generateCudaMallocStr(strBuffer, convertToCppType(type->getInnerTargetType()), "(E)"); - } main.NewLine(); diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index 465f22d2..c1208456 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -270,7 +270,6 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } if(depId->getSymbolInfo()!=NULL) { - currentFunc->addDoubleBufferVar(depId); Identifier* tableId = depId->getSymbolInfo()->getId(); tableId->set_redecl(); //explained in the ASTNodeTypes tableId->set_fpassociation(); //explained in the ASTNodeTypes @@ -303,7 +302,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) another forall which is to be generated with omp parallel pragma, and then disable the parallel loop*/ - if( (backend.compare("omp")==0) || (backend.compare("cuda")==0) || (backend.compare("openACC")==0) || (backend.compare("mpi")==0) ) + if( (backend.compare("omp")==0) || (backend.compare("cuda")==0) || (backend.compare("acc")==0) || (backend.compare("mpi")==0) ) { if(parallelConstruct.size()>0 && (backend.compare("mpi")!=0)) { @@ -383,7 +382,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) buildForStatements(forAll->getBody()); //----------------------MERGE CONFLICT OCCURRED HERE (WORKING BRANCH <---- OPENACC)---------------------------------- - //~ if((backend.compare("omp")==0 || backend.compare("openACC")==0 ) && forAll->isForall()) + //~ if((backend.compare("omp")==0 || backend.compare("acc")==0 ) && forAll->isForall()) //~ { //~ parallelConstruct.pop_back(); //~ } @@ -391,7 +390,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) //~ delete_curr_SymbolTable(); - if((backend.compare("omp")==0 || backend.compare("cuda")==0 || backend.compare("openACC")==0 ) || (backend.compare("mpi")==0) &&forAll->isForall()) + if((backend.compare("omp")==0 || backend.compare("cuda")==0 || backend.compare("acc")==0 ) || (backend.compare("mpi")==0) &&forAll->isForall()) { if(forAll->isForall()) parallelConstruct.pop_back(); @@ -442,7 +441,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) count++; } - if(flag&&(backend.compare("omp")==0 || backend.compare("openACC")==0 )) + if(flag&&(backend.compare("omp")==0 || backend.compare("acc")==0 )) { iterateBFS* itrbFS=(iterateBFS*)(*itrIBFS); Identifier* id=Identifier::createIdNode("bfsDist"); @@ -511,7 +510,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) if(leftList.size() > 2) { string backend(backendTarget); - if(backend.compare("omp") == 0 || backend.compare("openACC") == 0 ) + if(backend.compare("omp") == 0 || backend.compare("acc") == 0 ) { currentFunc->setInitialLockDecl(); } @@ -550,7 +549,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) { iterateBFS* iBFS=(iterateBFS*)stmt; string backend(backendTarget); - if(backend.compare("omp")==0 || backend.compare("openACC") == 0 || backend.compare("mpi") == 0) + if(backend.compare("omp")==0 || backend.compare("acc") == 0 || backend.compare("mpi") == 0) { parallelConstruct.push_back(iBFS); @@ -565,7 +564,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) iRevBFS->addAccumulateAssignment(); buildForStatements(iRevBFS->getBody()); - if(backend.compare("omp")==0 || backend.compare("openACC") == 0 || backend.compare("mpi") == 0) + if(backend.compare("omp")==0 || backend.compare("acc") == 0 || backend.compare("mpi") == 0) { parallelConstruct.pop_back(); From de1073082ab84843958532cd79325ed28c87c0a6 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Fri, 10 Mar 2023 02:21:07 +0530 Subject: [PATCH 35/38] added new blockVarsAnalyser --- src/Makefile | 14 +- src/analyser/analyserUtil.cpp | 30 +- src/analyser/blockVars/blockVarsAnalyser.cpp | 150 ++++++++ src/analyser/blockVars/blockVarsAnalyser.h | 160 ++++++++ src/analyser/blockVars/blockVarsInit.cpp | 344 +++++++++++++++++ src/analyser/blockVars/getUsedVars.cpp | 359 ++++++++++++++++++ src/ast/ASTHelper.cpp | 5 + .../backend_cuda/dsl_cpp_generator.cpp | 8 +- .../backend_openACC/dsl_cpp_generator.cpp | 103 ++++- .../backend_openACC/dsl_cpp_generator.h | 1 + src/parser/lrparser.y | 6 + src/symbolutil/SymbolTableBuilder.cpp | 2 +- 12 files changed, 1169 insertions(+), 13 deletions(-) create mode 100644 src/analyser/blockVars/blockVarsAnalyser.cpp create mode 100644 src/analyser/blockVars/blockVarsAnalyser.h create mode 100644 src/analyser/blockVars/blockVarsInit.cpp create mode 100644 src/analyser/blockVars/getUsedVars.cpp diff --git a/src/Makefile b/src/Makefile index 71ff11e7..f799456c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,7 +4,7 @@ ANALYSER = bin/dataRaceAnalyser.o PROGRAMS = bin/MainContext.o bin/ASTHelper.o bin/SymbolTableBuilder.o bin/SymbolTableNew.o bin/y.tab.o bin/lex.yy.o bin/cu_dsl_cpp_generator.o bin/ac_dsl_cpp_generator.o bin/om_dsl_cpp_generator.o bin/mpi_dsl_cpp_generator.o #bin/ac_dsl_cpp_generator.o #bin/om_dsl_cpp_generator.o -A_PROGRAM = bin/attachPropAnalyser.o bin/dataRaceAnalyser.o bin/deviceVarsAnalyser.o bin/analyserUtil.o +A_PROGRAM = bin/attachPropAnalyser.o bin/dataRaceAnalyser.o bin/deviceVarsAnalyser.o bin/blockVarsAnalyser.o bin/analyserUtil.o CFLAGS = -g CC = g++ -std=c++11 #-Wall # -Wno-unused-variable #-fsanitize=address @@ -87,6 +87,18 @@ bin/dv4.o: analyser/deviceVars/deviceVarsTransfer.cpp analyser/deviceVars/device bin/dv5.o: analyser/deviceVars/getUsedVars.cpp analyser/deviceVars/deviceVarsAnalyser.h analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/deviceVars/getUsedVars.cpp -o bin/dv5.o +bin/blockVarsAnalyser.o: bin/bv1.o bin/bv2.o bin/bv3.o + ld -r bin/bv1.o bin/bv2.o bin/bv3.o -o bin/blockVarsAnalyser.o + +bin/bv1.o: analyser/blockVars/blockVarsAnalyser.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp + $(CC) $(CFLAGS) -c analyser/blockVars/blockVarsAnalyser.cpp -o bin/bv1.o + +bin/bv2.o: analyser/blockVars/blockVarsInit.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp + $(CC) $(CFLAGS) -c analyser/blockVars/blockVarsInit.cpp -o bin/bv2.o + +bin/bv3.o: analyser/blockVars/getUsedVars.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp + $(CC) $(CFLAGS) -c analyser/blockVars/getUsedVars.cpp -o bin/bv3.o + bin/analyserUtil.o: analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/analyserUtil.cpp -o bin/analyserUtil.o diff --git a/src/analyser/analyserUtil.cpp b/src/analyser/analyserUtil.cpp index b1cb98eb..475b856e 100644 --- a/src/analyser/analyserUtil.cpp +++ b/src/analyser/analyserUtil.cpp @@ -11,7 +11,10 @@ enum variable_type { READ = 1, WRITE, - READ_WRITE + READ_WRITE, + READ_ONLY, + WRITE_ONLY, + READ_AND_WRITE }; /* @@ -157,6 +160,31 @@ class usedVariables result.push_back(iden.second); } } + else if(type == READ_AND_WRITE) + { + for (pair iden: writeVars) + { + if(readVars.find(iden.first) != readVars.end()) + result.push_back(iden.second); + } + } + else if(type == READ_ONLY) + { + for (pair iden : readVars) + { + cout << iden.second->getIdentifier() << endl; + if(writeVars.find(iden.first) == writeVars.end()) + result.push_back(iden.second); + } + } + else if(type == WRITE_ONLY) + { + for (pair iden: writeVars) + { + if(readVars.find(iden.first) == readVars.end()) + result.push_back(iden.second); + } + } return result; } diff --git a/src/analyser/blockVars/blockVarsAnalyser.cpp b/src/analyser/blockVars/blockVarsAnalyser.cpp new file mode 100644 index 00000000..f3376772 --- /dev/null +++ b/src/analyser/blockVars/blockVarsAnalyser.cpp @@ -0,0 +1,150 @@ +#include "blockVarsAnalyser.h" + +void blockVarsAnalyser::toString(NODETYPE type) +{ + switch(type) + { + case NODE_ID: + cout << "NODE_ID"; + break; + case NODE_PROPACCESS: + cout << "NODE_PROPACCESS"; + break; + case NODE_FUNC: + cout << "NODE_FUNC"; + break; + case NODE_TYPE: + cout << "NODE_TYPE"; + break; + case NODE_FORMALPARAM: + cout << "NODE_FORMALPARAM"; + break; + case NODE_STATEMENT: + cout << "NODE_STATEMENT"; + break; + case NODE_BLOCKSTMT: + cout << "NODE_BLOCKSTMT"; + break; + case NODE_DECL: + cout << "NODE_DECL"; + break; + case NODE_ASSIGN: + cout << "NODE_ASSIGN"; + break; + case NODE_WHILESTMT: + cout << "NODE_WHILESTMT"; + break; + case NODE_DOWHILESTMT: + cout << "NODE_DOWHILESTMT"; + break; + case NODE_FIXEDPTSTMT: + cout << "NODE_FIXEDPTSTMT"; + break; + case NODE_IFSTMT: + cout << "NODE_IFSTMT"; + break; + case NODE_ITRBFS: + cout << "NODE_ITRBFS"; + break; + case NODE_ITRRBFS: + cout << "NODE_ITRRBFS"; + break; + case NODE_EXPR: + cout << "NODE_EXPR"; + break; + case NODE_PROCCALLEXPR: + cout << "NODE_PROCCALLEXPR"; + break; + case NODE_PROCCALLSTMT: + cout << "NODE_PROCCALLSTMT"; + break; + case NODE_FORALLSTMT: + cout << "NODE_FORALLSTMT"; + break; + case NODE_REDUCTIONCALL: + cout << "NODE_REDUCTIONCALL"; + break; + case NODE_REDUCTIONCALLSTMT: + cout << "NODE_REDUCTIONCALLSTMT"; + break; + case NODE_UNARYSTMT: + cout << "NODE_UNARYSTMT"; + break; + case NODE_RETURN: + cout << "NODE_RETURN"; + break; + case NODE_BATCHBLOCKSTMT: + cout << "NODE_BATCHBLOCKSTMT"; + break; + case NODE_ONADDBLOCK: + cout << "NODE_ONADDBLOCK"; + break; + case NODE_ONDELETEBLOCK: + cout << "NODE_ONDELETEBLOCK"; + break; + case NODE_TRANSFERSTMT: + cout << "NODE_TRANSFERSTMT"; + break; + default: + cout << "UNKNOWN"; + break; + }; +} + +void blockVarsAnalyser::printBlockNodes() +{ + int i = 0; + for (auto blockNode: blockNodes) + { + cout << "Block number " << ++i << ": "; + toString(blockNode->getNode()->getTypeofNode()); + cout << endl; + for (Identifier* id : blockNode->getDef()) + { + cout << "Def: " << id->getIdentifier() << endl; + } + for (Identifier* id : blockNode->getUse()) + { + cout << "Use: " << id->getIdentifier() << endl; + } + for (Identifier* id : blockNode->getIn()) + { + cout << "In: " << id->getIdentifier() << endl; + } + for (Identifier* id : blockNode->getOut()) + { + cout << "Out: " << id->getIdentifier() << endl; + } + for (ASTNodeBlock* succ : blockNode->getSucc()) + { + cout << "Succ: "; + toString(succ->getNode()->getTypeofNode()); + cout << endl; + } + } +} + +void blockVarsAnalyser::analyseFunc(ASTNode* proc) +{ + Function* func = (Function*)proc; + + cout << "Function Name: " << func->getIdentifier()->getIdentifier() << endl; + + ASTNodeBlock* blockNode = initBlockNode(func); + for (formalParam* param : func->getParamList()) + { + blockNode->addDef(param->getIdentifier()); + } + + blockNode->addSucc(initStatement(func->getBlockStatement(), NULL)); + addBlockNode(func, blockNode); + + printBlockNodes(); + // analyseBlockNodes(); +} + +void blockVarsAnalyser::analyse(list functions) +{ + for(Function* function : functions) + analyseFunc(function); +} \ No newline at end of file diff --git a/src/analyser/blockVars/blockVarsAnalyser.h b/src/analyser/blockVars/blockVarsAnalyser.h new file mode 100644 index 00000000..a204d1ab --- /dev/null +++ b/src/analyser/blockVars/blockVarsAnalyser.h @@ -0,0 +1,160 @@ +#ifndef BLOCK_VARS_ANALYSER_H +#define BLOCK_VARS_ANALYSER_H + + +#include "../analyserUtil.cpp" +#include "../../ast/ASTHelper.cpp" + +class ASTNodeBlock +{ + ASTNode* node; // the block node + + list use; // list of variables used in the block + list def; // list of variables defined in the block + list in; // list of variables needed to be sent to the block + list out; // list of variables needed to be sent from the block + + list succ; // list of successor blocks + + public: + + ASTNodeBlock(ASTNode* node) { + this->node = node; + use = list(); + def = list(); + in = list(); + out = list(); + succ = list(); + } + + ASTNode* getNode() { + return node; + } + + list getUse() { + return use; + } + + list getDef() { + return def; + } + + list getIn() { + return in; + } + + list getOut() { + return out; + } + + list getSucc() { + return succ; + } + + void addUse(Identifier* id) { + use.push_back(id); + } + + void addDef(Identifier* id) { + def.push_back(id); + } + + void addIn(Identifier* id) { + in.push_back(id); + } + + void addOut(Identifier* id) { + out.push_back(id); + } + + void addSucc(ASTNodeBlock* block) { + if(block != NULL) succ.push_back(block); + } + + void addVars(usedVariables usedVars) { + for(Identifier* id : usedVars.getVariables(READ)) + use.push_back(id); + + for(Identifier* id : usedVars.getVariables(WRITE)) + def.push_back(id); + } +}; + +class blockVarsAnalyser { + private: + ASTNodeBlock* initBlockNode(ASTNode* node) + { + ASTNodeBlock* blockNode = new ASTNodeBlock(node); + return blockNode; + } + + list blockNodes; + map blockNodeMap; + + public: + blockVarsAnalyser() {} + + void addBlockNode(ASTNode* node, ASTNodeBlock* blockNode) + { + blockNodes.push_back(blockNode); + blockNodeMap[node] = blockNode; + } + + void toString(NODETYPE); // Prints the type of the node verbose + void printBlockNodes(); // Prints the block nodes + + void analyse(list); + void analyseFunc(ASTNode* func); + void analyseBlockNodes(); + + void analyseStatement(statement*); + void analyseBlock(blockStatement*); + void analyseUnary(unary_stmt*); + void analyseIfElse(ifStmt*); + void analyseAssignment(assignment*); + void analyseDeclaration(declaration*); + void analyseForAll(forallStmt*); + void analyseWhile(whileStmt*); + void analyseDoWhile(dowhileStmt*); + void analyseFor(forallStmt*); + void analyseFixedPoint(fixedPointStmt*); + void analyseProcCall(proc_callStmt*); + void analyseReduction(reductionCallStmt*); + void analyseItrBFS(iterateBFS*); + + // Initialise the basic block node + ASTNodeBlock* initStatement(statement*, ASTNodeBlock*); + ASTNodeBlock* initBlock(blockStatement*, ASTNodeBlock*); + ASTNodeBlock* initUnary(unary_stmt*, ASTNodeBlock*); + ASTNodeBlock* initIfElse(ifStmt*, ASTNodeBlock*); + ASTNodeBlock* initAssignment(assignment*, ASTNodeBlock*); + ASTNodeBlock* initDeclaration(declaration*, ASTNodeBlock*); + ASTNodeBlock* initForAll(forallStmt*, ASTNodeBlock*); + ASTNodeBlock* initWhile(whileStmt*, ASTNodeBlock*); + ASTNodeBlock* initDoWhile(dowhileStmt*, ASTNodeBlock*); + ASTNodeBlock* initFor(forallStmt*, ASTNodeBlock*); + ASTNodeBlock* initFixedPoint(fixedPointStmt*, ASTNodeBlock*); + ASTNodeBlock* initProcCall(proc_callStmt*, ASTNodeBlock*); + ASTNodeBlock* initReduction(reductionCallStmt*, ASTNodeBlock*); + ASTNodeBlock* initItrBFS(iterateBFS*, ASTNodeBlock*); + ASTNodeBlock* initReturn(returnStmt*, ASTNodeBlock*); + + //Returns the used variables in each statment + usedVariables getVarsStatement(statement* stmt); + usedVariables getVarsBlock(blockStatement* stmt); + usedVariables getVarsForAll(forallStmt* stmt); + usedVariables getVarsUnary(unary_stmt* stmt); + usedVariables getVarsDeclaration(declaration* stmt); + usedVariables getVarsWhile(whileStmt* stmt); + usedVariables getVarsDoWhile(dowhileStmt* stmt); + usedVariables getVarsAssignment(assignment* stmt); + usedVariables getVarsIf(ifStmt* stmt); + usedVariables getVarsExpr(Expression* stmt); + usedVariables getVarsReduction(reductionCallStmt *stmt); + usedVariables getVarsFixedPoint(fixedPointStmt *stmt); + usedVariables getVarsBFS(iterateBFS *stmt); + usedVariables getVarsProcCall(proc_callStmt *stmt); + usedVariables getVarsExprProcCall(proc_callExpr *stmt); +}; + +#endif \ No newline at end of file diff --git a/src/analyser/blockVars/blockVarsInit.cpp b/src/analyser/blockVars/blockVarsInit.cpp new file mode 100644 index 00000000..a7a7894c --- /dev/null +++ b/src/analyser/blockVars/blockVarsInit.cpp @@ -0,0 +1,344 @@ +#include "blockVarsAnalyser.h" + +ASTNodeBlock* blockVarsAnalyser::initBlock(blockStatement* blockStmt, ASTNodeBlock* blockNode) +{ + // Reverse iterate over the statements in the block + list stmts = blockStmt->returnStatements(); + for(auto stmt = stmts.rbegin(); stmt != stmts.rend(); stmt++) + { + blockNode = initStatement(*stmt, blockNode); + } + + return blockNode; +} + +ASTNodeBlock* blockVarsAnalyser::initStatement(statement* stmt, ASTNodeBlock* blockNode) +{ + printf("Initializing %p ", stmt); + toString(stmt->getTypeofNode()); + printf("\n"); + + switch(stmt->getTypeofNode()) + { + case NODE_DECL: + return initDeclaration((declaration*)stmt, blockNode); + case NODE_ASSIGN: + return initAssignment((assignment*)stmt, blockNode); + case NODE_UNARYSTMT: + return initUnary((unary_stmt*)stmt, blockNode); + case NODE_FORALLSTMT: + { + forallStmt* forStmt = (forallStmt*)stmt; + if(forStmt->isForall()) + return initForAll((forallStmt*)stmt, blockNode); + else + return initFor((forallStmt*)stmt, blockNode); + } + case NODE_BLOCKSTMT: + return initBlock((blockStatement*)stmt, blockNode); + case NODE_IFSTMT: + return initIfElse((ifStmt*)stmt, blockNode); + case NODE_WHILESTMT: + return initWhile((whileStmt*)stmt, blockNode); + case NODE_DOWHILESTMT: + return initDoWhile((dowhileStmt*)stmt, blockNode); + case NODE_PROCCALLSTMT: + return initProcCall((proc_callStmt*)stmt, blockNode); + case NODE_FIXEDPTSTMT: + return initFixedPoint((fixedPointStmt*)stmt, blockNode); + case NODE_REDUCTIONCALLSTMT: + return initReduction((reductionCallStmt*)stmt, blockNode); + case NODE_ITRBFS: + return initItrBFS((iterateBFS*)stmt, blockNode); + case NODE_RETURN: + return initReturn((returnStmt*)stmt, blockNode); + } + return blockNode; +} + +ASTNodeBlock* blockVarsAnalyser::initDeclaration(declaration* declStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the declaration + ASTNodeBlock* declNode = new ASTNodeBlock(declStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsStatement(declStmt); + declNode->addVars(usedVars); + + // Add the passed block as succ of the new block + declNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(declStmt, declNode); + return declNode; +} + +ASTNodeBlock* blockVarsAnalyser::initAssignment(assignment* assignStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the assignment + ASTNodeBlock* assignNode = new ASTNodeBlock(assignStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsStatement(assignStmt); + assignNode->addVars(usedVars); + + // Add the passed block as succ of the new block + assignNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(assignStmt, assignNode); + return assignNode; +} + +ASTNodeBlock* blockVarsAnalyser::initUnary(unary_stmt* unaryStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the unary statement + ASTNodeBlock* unaryNode = new ASTNodeBlock(unaryStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsStatement(unaryStmt); + unaryNode->addVars(usedVars); + + // Add the passed block as succ of the new block + unaryNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(unaryStmt, unaryNode); + return unaryNode; +} + +ASTNodeBlock* blockVarsAnalyser::initForAll(forallStmt* forAllStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the forall statement + ASTNodeBlock* forAllCondNode = new ASTNodeBlock(forAllStmt); + + // Add the used and def variables to use set of the new block for cond + usedVariables usedVars; + if(forAllStmt->isSourceProcCall()) + { + proc_callExpr *expr = forAllStmt->getExtractElementFunc(); + usedVars.merge(getVarsExprProcCall(expr)); + } + else if(!forAllStmt->isSourceField()) + { + Identifier *iden = forAllStmt->getSource(); + usedVars.addVariable(iden, READ); + } + else + { + PropAccess *propId = forAllStmt->getPropSource(); + usedVars.addVariable(propId->getIdentifier1(), READ); + } + + if (forAllStmt->hasFilterExpr()) + usedVars.merge(getVarsExpr(forAllStmt->getfilterExpr())); + + forAllCondNode->addVars(usedVars); + + // Add the passed block as succ of the new block + forAllCondNode->addSucc(blockNode); + + // Add the forall statement as a succ of the new block + forAllCondNode->addSucc(initStatement(forAllStmt->getBody(), forAllCondNode)); + + // Add this node to the list of block nodes + addBlockNode(forAllStmt, forAllCondNode); + return forAllCondNode; +} + +ASTNodeBlock* blockVarsAnalyser::initFor(forallStmt* forStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the for statement + ASTNodeBlock* forCondNode = new ASTNodeBlock(forStmt); + + // Add the used and def variables to use set of the new block for cond + usedVariables usedVars; + if(forStmt->isSourceProcCall()) + { + proc_callExpr *expr = forStmt->getExtractElementFunc(); + usedVars.merge(getVarsExprProcCall(expr)); + } + else if(!forStmt->isSourceField()) + { + Identifier *iden = forStmt->getSource(); + usedVars.addVariable(iden, READ); + } + else + { + PropAccess *propId = forStmt->getPropSource(); + usedVars.addVariable(propId->getIdentifier1(), READ); + } + + if (forStmt->hasFilterExpr()) + usedVars.merge(getVarsExpr(forStmt->getfilterExpr())); + + forCondNode->addVars(usedVars); + + // Add the passed block as succ of the new block + forCondNode->addSucc(blockNode); + + // Add the for statement as a succ of the new block + forCondNode->addSucc(initStatement(forStmt->getBody(), forCondNode)); + + // Add this node to the list of block nodes + addBlockNode(forStmt, forCondNode); + return forCondNode; +} + +ASTNodeBlock* blockVarsAnalyser::initIfElse(ifStmt* ifStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the if statement + ASTNodeBlock* ifCondNode = new ASTNodeBlock(ifStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsExpr(ifStmt->getCondition()); + ifCondNode->addVars(usedVars); + + // Add the passed block as succ of the new block + ifCondNode->addSucc(blockNode); + + // Add the if statement as a succ of the new block + ifCondNode->addSucc(initStatement(ifStmt->getIfBody(), blockNode)); + + if(ifStmt->getElseBody() != NULL) + { + // Add the else statement as a succ of the new block + ifCondNode->addSucc(initStatement(ifStmt->getElseBody(), blockNode)); + } + + // Add this node to the list of block nodes + addBlockNode(ifStmt, ifCondNode); + return ifCondNode; +} + +ASTNodeBlock* blockVarsAnalyser::initWhile(whileStmt* whileStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the while statement + ASTNodeBlock* whileCondNode = new ASTNodeBlock(whileStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsExpr(whileStmt->getCondition()); + whileCondNode->addVars(usedVars); + + // Add the passed block as succ of the new block + whileCondNode->addSucc(blockNode); + + // Add the while statement as a succ of the new block + whileCondNode->addSucc(initStatement(whileStmt->getBody(), whileCondNode)); + + // Add this node to the list of block nodes + addBlockNode(whileStmt, whileCondNode); + return whileCondNode; +} + +ASTNodeBlock* blockVarsAnalyser::initDoWhile(dowhileStmt* doWhileStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the do-while statement + ASTNodeBlock* doWhileCondNode = new ASTNodeBlock(doWhileStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsExpr(doWhileStmt->getCondition()); + doWhileCondNode->addVars(usedVars); + + // Add the passed block as succ of the new block + doWhileCondNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(doWhileStmt, doWhileCondNode); + + // Add the do-while statement as a succ of the new block + doWhileCondNode->addSucc(initStatement(doWhileStmt->getBody(), doWhileCondNode)); + + return doWhileCondNode; +} + +ASTNodeBlock* blockVarsAnalyser::initProcCall(proc_callStmt* procCallStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the procedure call statement + ASTNodeBlock* procCallNode = new ASTNodeBlock(procCallStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsStatement(procCallStmt); + procCallNode->addVars(usedVars); + + // Add the passed block as succ of the new block + procCallNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(procCallStmt, procCallNode); + return procCallNode; +} + +ASTNodeBlock* blockVarsAnalyser::initFixedPoint(fixedPointStmt* fixedPointStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the fixed point statement + ASTNodeBlock* fixedPointCondNode = new ASTNodeBlock(fixedPointStmt); + + // Add the used and def variables to use set of the new block + fixedPointCondNode->addUse(fixedPointStmt->getFixedPointId()); + + // Add the passed block as succ of the new block + fixedPointCondNode->addSucc(blockNode); + + // Add the fixed point statement as a succ of the new block + fixedPointCondNode->addSucc(initStatement(fixedPointStmt->getBody(), fixedPointCondNode)); + + // Add this node to the list of block nodes + addBlockNode(fixedPointStmt, fixedPointCondNode); + return fixedPointCondNode; +} + +ASTNodeBlock* blockVarsAnalyser::initReduction(reductionCallStmt* reductionCallStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the reduction statement + ASTNodeBlock* reductionNode = new ASTNodeBlock(reductionCallStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsStatement(reductionCallStmt); + reductionNode->addVars(usedVars); + + // Add the passed block as succ of the new block + reductionNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(reductionCallStmt, reductionNode); + return reductionNode; +} + +/* TODO: This function is not properly implemented */ +ASTNodeBlock* blockVarsAnalyser::initItrBFS(iterateBFS* iterateBFS, ASTNodeBlock* blockNode) +{ + // Create a new block node for the iterateBFS statement + ASTNodeBlock* iterateBFSNode = new ASTNodeBlock(iterateBFS); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsStatement(iterateBFS); + iterateBFSNode->addVars(usedVars); + + // Add the passed block as succ of the new block + iterateBFSNode->addSucc(blockNode); + + // Add the iterateBFS statement as a succ of the new block + iterateBFSNode->addSucc(initStatement(iterateBFS->getBody(), blockNode)); + + // Add this node to the list of block nodes + addBlockNode(iterateBFS, iterateBFSNode); + return iterateBFSNode; +} + +ASTNodeBlock* blockVarsAnalyser::initReturn(returnStmt* returnStmt, ASTNodeBlock* blockNode) +{ + // Create a new block node for the return statement + ASTNodeBlock* returnNode = new ASTNodeBlock(returnStmt); + + // Add the used and def variables to use set of the new block + usedVariables usedVars = getVarsExpr(returnStmt->getReturnExpression()); + returnNode->addVars(usedVars); + + // Add the passed block as succ of the new block + returnNode->addSucc(blockNode); + + // Add this node to the list of block nodes + addBlockNode(returnStmt, returnNode); + return returnNode; +} \ No newline at end of file diff --git a/src/analyser/blockVars/getUsedVars.cpp b/src/analyser/blockVars/getUsedVars.cpp new file mode 100644 index 00000000..d3dd84f8 --- /dev/null +++ b/src/analyser/blockVars/getUsedVars.cpp @@ -0,0 +1,359 @@ +#include "blockVarsAnalyser.h" + +usedVariables blockVarsAnalyser::getVarsExpr(Expression *expr) +{ + usedVariables result; + + if (expr->isIdentifierExpr()) + { + Identifier *iden = expr->getId(); + result.addVariable(iden, READ); + } + else if (expr->isPropIdExpr()) + { + PropAccess *propExpr = expr->getPropId(); + result.addVariable(propExpr->getIdentifier1(), READ); + result.addVariable(propExpr->getIdentifier2(), READ); + } + else if (expr->isUnary()) + { + if (expr->getOperatorType() == OPERATOR_NOT) + result = getVarsExpr(expr->getUnaryExpr()); + else if ((expr->getOperatorType() == OPERATOR_INC) || (expr->getOperatorType() == OPERATOR_DEC)) + { + Expression *uExpr = expr->getUnaryExpr(); + if (uExpr->isIdentifierExpr()) + result.addVariable(uExpr->getId(), READ_WRITE); + else if (uExpr->isPropIdExpr()) + { + PropAccess* propId = uExpr->getPropId(); + result.addVariable(propId->getIdentifier1(), READ); + result.addVariable(propId->getIdentifier2(), READ_WRITE); + } + } + } + else if (expr->isLogical() || expr->isArithmetic() || expr->isRelational()) + { + result = getVarsExpr(expr->getLeft()); + result.merge(getVarsExpr(expr->getRight())); + } + else if (expr->isProcCallExpr()) { + result = getVarsExprProcCall((proc_callExpr*) expr); + } + return result; +} + + +usedVariables blockVarsAnalyser::getVarsWhile(whileStmt *stmt) +{ + usedVariables currVars = getVarsExpr(stmt->getCondition()); + currVars.merge(getVarsStatement(stmt->getBody())); + + return currVars; +} + + +usedVariables blockVarsAnalyser::getVarsDoWhile(dowhileStmt *stmt) +{ + usedVariables currVars = getVarsExpr(stmt->getCondition()); + currVars.merge(getVarsStatement(stmt->getBody())); + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsDeclaration(declaration *stmt) +{ + usedVariables currVars; + currVars.addVariable(stmt->getdeclId(), WRITE); + + if(stmt->isInitialized()) + { + usedVariables exprVars = getVarsExpr(stmt->getExpressionAssigned()); + currVars.merge(exprVars); + } + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsAssignment(assignment *stmt) +{ + usedVariables currVars; + if (stmt->lhs_isProp()) + { + PropAccess *propId = stmt->getPropId(); + currVars.addVariable(propId->getIdentifier1(), READ); + currVars.addVariable(propId->getIdentifier2(), WRITE); + } + else if (stmt->lhs_isIdentifier()) + currVars.addVariable(stmt->getId(), WRITE); + + usedVariables exprVars = getVarsExpr(stmt->getExpr()); + currVars.merge(exprVars); + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsIf(ifStmt *stmt) +{ + usedVariables currVars = getVarsExpr(stmt->getCondition()); + currVars.merge(getVarsStatement(stmt->getIfBody())); + if (stmt->getElseBody() != NULL) + currVars.merge(getVarsStatement(stmt->getElseBody())); + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsFixedPoint(fixedPointStmt *stmt) +{ + usedVariables currVars = getVarsExpr(stmt->getDependentProp()); + currVars.addVariable(stmt->getFixedPointId(), READ_WRITE); + currVars.merge(getVarsStatement(stmt->getBody())); + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsUnary(unary_stmt *stmt) +{ + Expression *unaryExpr = stmt->getUnaryExpr(); + Expression *varExpr = unaryExpr->getUnaryExpr(); + + usedVariables currUsed; + if (varExpr->isIdentifierExpr()) + currUsed.addVariable(varExpr->getId(), READ_WRITE); + else if (varExpr->isPropIdExpr()) + { + currUsed.addVariable(varExpr->getPropId()->getIdentifier1(), READ); + currUsed.addVariable(varExpr->getPropId()->getIdentifier2(), WRITE); + } + + return currUsed; +} + +usedVariables blockVarsAnalyser::getVarsBFS(iterateBFS *stmt) +{ + usedVariables currVars = getVarsStatement(stmt->getBody()); + if (stmt->getRBFS() != nullptr) + { + iterateReverseBFS *RBFSstmt = stmt->getRBFS(); + if (RBFSstmt->getBFSFilter() != nullptr) + currVars.merge(getVarsExpr(RBFSstmt->getBFSFilter())); + currVars.merge(getVarsStatement(RBFSstmt->getBody())); + } + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsForAll(forallStmt *stmt) +{ + usedVariables currVars = getVarsStatement(stmt->getBody()); + currVars.removeVariable(stmt->getIterator(), READ_WRITE); + + if(stmt->isSourceProcCall()) + { + proc_callExpr *expr = stmt->getExtractElementFunc(); + for(argument* arg: expr->getArgList()){ + if(arg->getExpr() != nullptr) + currVars.merge(getVarsExpr(arg->getExpr())); + } + } + else if(!stmt->isSourceField()) + { + Identifier *iden = stmt->getSource(); + currVars.addVariable(iden, READ); + } + else + { + PropAccess *propId = stmt->getPropSource(); + currVars.addVariable(propId->getIdentifier1(), READ); + } + + if (stmt->hasFilterExpr()) + currVars.merge(getVarsExpr(stmt->getfilterExpr())); + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsBlock(blockStatement *blockStmt) +{ + list stmtList = blockStmt->returnStatements(); + list declVars; + + usedVariables currVars; + for (statement *stmt : stmtList) + { + if (stmt->getTypeofNode() == NODE_DECL) + { + declaration *decl = (declaration *)stmt; + declVars.push_back(decl->getdeclId()); + + if (decl->isInitialized()) + { + usedVariables exprVars = getVarsExpr(decl->getExpressionAssigned()); + for (Identifier *dVars : declVars) + exprVars.removeVariable(dVars, READ_WRITE); + + currVars.merge(exprVars); + } + } + else + { + usedVariables stmtVars = getVarsStatement(stmt); + for (Identifier *dVars : declVars) + stmtVars.removeVariable(dVars, READ_WRITE); + + currVars.merge(stmtVars); + } + } + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) +{ + usedVariables currVars; + + auto getVarsReductionCall = [this, &currVars](reductionCall* callExpr) -> void + { + for(argument* arg: callExpr->getargList()){ + if(arg->isExpr()) + currVars.merge(getVarsExpr(arg->getExpr())); + } + }; + + if(stmt->is_reducCall()) + { + if(stmt->getLhsType() == 1) + { + currVars.addVariable(stmt->getLeftId(), WRITE); + getVarsReductionCall(stmt->getReducCall()); + } + else if(stmt->getLhsType() == 2) + { + PropAccess* propId = stmt->getPropAccess(); + currVars.addVariable(propId->getIdentifier1(), READ); + currVars.addVariable(propId->getIdentifier2(), WRITE); + + getVarsReductionCall(stmt->getReducCall()); + } + else if(stmt->getLhsType() == 3) + { + for(ASTNode* node: stmt->getLeftList()) + { + Identifier* affectedId = NULL; + if(node->getTypeofNode() == NODE_ID) + { + Identifier* iden = (Identifier*)node; + currVars.addVariable(iden, WRITE); + affectedId = iden; + } + else if(node->getTypeofNode() == NODE_PROPACCESS) + { + PropAccess* propId = (PropAccess*)node; + currVars.addVariable(propId->getIdentifier1(), READ); + currVars.addVariable(propId->getIdentifier2(), WRITE); + affectedId = propId->getIdentifier2(); + } + + if(affectedId->getSymbolInfo()->getId()->get_fp_association()) { + Identifier* fpId = affectedId->getSymbolInfo()->getId()->get_fpIdNode(); + currVars.addVariable(fpId, WRITE); + } + } + getVarsReductionCall(stmt->getReducCall()); + + for(ASTNode* node: stmt->getRightList()) + { + if(node->getTypeofNode() == NODE_ID) + { + Identifier* iden = (Identifier*)node; + currVars.addVariable(iden, WRITE); + } + else if(node->getTypeofNode() == NODE_PROPACCESS) + { + PropAccess* propId = (PropAccess*)node; + currVars.addVariable(propId->getIdentifier1(), READ); + currVars.addVariable(propId->getIdentifier2(), WRITE); + } + } + } + } + else + { + if(stmt->isLeftIdentifier()) + { + currVars.addVariable(stmt->getLeftId(), READ_WRITE); + currVars.merge(getVarsExpr(stmt->getRightSide())); + } + else + { + PropAccess* propId = stmt->getPropAccess(); + currVars.addVariable(propId->getIdentifier1(), READ); + currVars.addVariable(propId->getIdentifier2(), READ_WRITE); + + currVars.merge(getVarsExpr(stmt->getRightSide())); + } + } + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsProcCall(proc_callStmt *procCall) +{ + proc_callExpr *callExpr = procCall->getProcCallExpr(); + return getVarsExprProcCall(callExpr); +} + +usedVariables blockVarsAnalyser::getVarsExprProcCall(proc_callExpr *procCall) +{ + usedVariables currVars; + if(procCall->getId1() != NULL) + currVars.addVariable(procCall->getId1(), READ); + for (argument *arg : procCall->getArgList()) + { + if (arg->isExpr()) + currVars.merge(getVarsExpr(arg->getExpr())); + } + + return currVars; +} + +usedVariables blockVarsAnalyser::getVarsStatement(statement *stmt) +{ + switch (stmt->getTypeofNode()) + { + case NODE_BLOCKSTMT: + return getVarsBlock((blockStatement *)stmt); + + case NODE_DECL: + return getVarsDeclaration((declaration *)stmt); + + case NODE_ASSIGN: + return getVarsAssignment((assignment *)stmt); + + case NODE_UNARYSTMT: + return getVarsUnary((unary_stmt *)stmt); + + case NODE_IFSTMT: + return getVarsIf((ifStmt *)stmt); + + case NODE_WHILESTMT: + return getVarsWhile((whileStmt *)stmt); + + case NODE_DOWHILESTMT: + return getVarsDoWhile((dowhileStmt *)stmt); + + case NODE_FORALLSTMT: + return getVarsForAll((forallStmt *) stmt); + + case NODE_REDUCTIONCALLSTMT: + return getVarsReduction((reductionCallStmt *)stmt); + + // case NODE_ITRBFS: + // return getVarsBFS((iterateBFS *)stmt); + + case NODE_FIXEDPTSTMT: + return getVarsFixedPoint((fixedPointStmt *)stmt); + + case NODE_PROCCALLSTMT: + return getVarsProcCall((proc_callStmt *)stmt); + } + + return usedVariables(); +} \ No newline at end of file diff --git a/src/ast/ASTHelper.cpp b/src/ast/ASTHelper.cpp index 3e834c2e..5d48d7e8 100644 --- a/src/ast/ASTHelper.cpp +++ b/src/ast/ASTHelper.cpp @@ -1,3 +1,6 @@ +#ifndef AST_HELPER_H +#define AST_HELPER_H + #include "../maincontext/MainContext.hpp" #include "ASTNode.hpp" #include "../maincontext/enum_def.hpp" @@ -542,3 +545,5 @@ static ASTNode* createIterateInBFSNode(ASTNode* iterator,ASTNode* graphId,ASTNod return iterateBFSNode; } }; + +#endif \ No newline at end of file diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index c4da7de9..257dc949 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -264,7 +264,7 @@ void dsl_cpp_generator::generatePropParams(list paramList, bool is void dsl_cpp_generator::addCudaRevBFSIterKernel(list& statementList) { //~ var v //~ var w - //~ __global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, double* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished, double* d_bc) { + //~ __global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, double* d_delta, float* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished, double* d_bc) { //~ unsigned v = blockIdx.x * blockDim.x + threadIdx.x; //~ if(v >= n) return; @@ -285,7 +285,7 @@ void dsl_cpp_generator::addCudaRevBFSIterKernel(list& statementList) //~ assert(body->getTypeofNode() == NODE_BLOCKSTMT); //~ blockStatement* block = (blockStatement*)body; //~ list statementList = block->returnStatements(); - sprintf(strBuffer, "__global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished"); + sprintf(strBuffer, "__global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, float* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished"); header.pushString(strBuffer); generatePropParams(getCurrentFunc()->getParamList(), true, false); // true: typeneed false:inMainfile @@ -314,7 +314,7 @@ void dsl_cpp_generator::addCudaRevBFSIterKernel(list& statementList) void dsl_cpp_generator::addCudaBFSIterKernel(iterateBFS* bfsAbstraction) { //~ var v //~ var w - //~ __global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, double* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished, double* d_bc) { + //~ __global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, double* d_delta, float* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished, double* d_bc) { //~ unsigned v = blockIdx.x * blockDim.x + threadIdx.x; //~ if(v >= n) return; //~ if(d_level[v] == *d_hops_from_source) { @@ -339,7 +339,7 @@ void dsl_cpp_generator::addCudaBFSIterKernel(iterateBFS* bfsAbstraction) { blockStatement* block = (blockStatement*)body; list statementList = block->returnStatements(); - header.pushString("__global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, double* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished"); + header.pushString("__global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, float* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished"); generatePropParams(getCurrentFunc()->getParamList(), true, false); // true: typeneed false:inMainfile diff --git a/src/backends/backend_openACC/dsl_cpp_generator.cpp b/src/backends/backend_openACC/dsl_cpp_generator.cpp index 3f03ae09..7f20bacb 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.cpp +++ b/src/backends/backend_openACC/dsl_cpp_generator.cpp @@ -3,6 +3,7 @@ #include #include +extern usedVariables getVarsStatement(statement* stmt); //~ using namespace spacc; namespace spacc{ @@ -1256,22 +1257,112 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti main.pushstr_newL(strBuffer1); main.pushstr_newL("{"); //--------------------------------------------- //main.pushString("#pragma acc data copyin(g)"); main.NewLine(); - sprintf(strBuffer1, "#pragma acc data copyin( %s.indexofNodes[:%s.num_nodes()+1], %s.edgeList[0:%s.num_edges()] )", graph_name, graph_name, graph_name, graph_name ); + // sprintf(strBuffer1, "#pragma acc data copyin( %s.indexofNodes[:%s.num_nodes()+1], %s.edgeList[0:%s.num_edges()] )", graph_name, graph_name, graph_name, graph_name ); + // main.pushString(strBuffer1); + // main.space(); + sprintf(strBuffer1, "#pragma acc data copyin("); main.pushString(strBuffer1); main.space(); + + bool isFirstVar = true; + if(forAll->getIsMetaUsed()) { + if(!isFirstVar) main.push(','); + sprintf(strBuffer1, "%s.indexOfNodes[:%s.num_nodes()+1]", graph_name, graph_name); + main.pushString(strBuffer1); + main.space(); + isFirstVar = false; + } + if(forAll->getIsRevMetaUsed()) { + if(!isFirstVar) main.push(','); + sprintf(strBuffer1, "%s.rev_indexOfNodes[:%s.num_nodes()+1]", graph_name, graph_name); + main.pushString(strBuffer1); + main.space(); + isFirstVar = false; + } + if(forAll->getIsDataUsed()) { + if(!isFirstVar) main.push(','); + sprintf(strBuffer1, "%s.edgeList[:%s.num_edges()+1]", graph_name, graph_name); + main.pushString(strBuffer1); + main.space(); + isFirstVar = false; + } + if(forAll->getIsSrcUsed()) { + if(!isFirstVar) main.push(','); + sprintf(strBuffer1, "%s.srcList[:%s.num_edges()+1]", graph_name, graph_name); + main.pushString(strBuffer1); + main.space(); + isFirstVar = false; + } + if(forAll->getIsWeightUsed()) { + if(!isFirstVar) main.push(','); + sprintf(strBuffer1, "%s.edgeLen[:%s.num_edges()+1]", graph_name, graph_name); + main.pushString(strBuffer1); + main.space(); + isFirstVar = false; + } + main.push(')'); + main.space(); + //main.pushstr_newL("{"); + usedVariables usedVars = getVarsStatement(forAll->getBody()); + usedVars.removeVariable(forAll->getIterator(), READ_WRITE); + for(Identifier* id: usedVars.getVariables(READ_ONLY)) { + cout << "read only " << id->getIdentifier() << endl; + Type* type = id->getSymbolInfo()->getType(); + if(type->isPropType()) { + sprintf(strBuffer1, "copyin( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); + main.pushString(strBuffer1); + main.space(); + } + else if(type->isPrimitiveType()) { + sprintf(strBuffer1, "copyin( %s )", id->getIdentifier() ); + main.pushString(strBuffer1); + main.space(); + } + } + for(Identifier* id: usedVars.getVariables(WRITE_ONLY)) { + cout << "write only " << id->getIdentifier() << endl; + Type* type = id->getSymbolInfo()->getType(); + if(type->isPropType()) { + sprintf(strBuffer1, "copyout( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); + main.pushString(strBuffer1); + main.space(); + } + else if(type->isPrimitiveType()) { + sprintf(strBuffer1, "copyout( %s )", id->getIdentifier() ); + main.pushString(strBuffer1); + main.space(); + } + } + for(Identifier* id: usedVars.getVariables(READ_AND_WRITE)) { + cout << "read and write" << id->getIdentifier() << endl; + Type* type = id->getSymbolInfo()->getType(); + if(type->isPropType()) { + sprintf(strBuffer1, "copy( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); + main.pushString(strBuffer1); + main.space(); + } + else if(type->isPrimitiveType()) { + sprintf(strBuffer1, "copy( %s )", id->getIdentifier() ); + main.pushString(strBuffer1); + main.space(); + } + } + + main.pushstr_newL(""); + //------- Generate---- copy(reduce_key1, reduce_key2....) if required.. NOTE: #pragma acc data copyin() for each respective algorithm is already generated above. Only "copy(reduce_keys)" to be generated. - set reduce_Keys=forAll->get_reduceKeys(); + /*set reduce_Keys=forAll->get_reduceKeys(); assert(reduce_Keys.size()==1); - //char strBuffer1[1024]; + // char strBuffer1[1024]; set::iterator it; it=reduce_Keys.begin(); list op_List=forAll->get_reduceIds(*it); list::iterator list_itr; main.space(); - //sprintf(strBuffer,"reduction(%s : ",getOperatorString(*it)); - //sprintf(strBuffer1,"#pragma acc data copy("); + // sprintf(strBuffer,"reduction(%s : ",getOperatorString(*it)); + // sprintf(strBuffer1,"#pragma acc data copy("); sprintf(strBuffer1,"copy("); main.pushString(strBuffer1); for(list_itr=op_List.begin();list_itr!=op_List.end();list_itr++) @@ -1281,7 +1372,7 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti if(std::next(list_itr)!=op_List.end()) main.pushString(","); } - main.pushstr_newL(")"); + main.pushstr_newL(")");*/ //--------------------generate parallel pragma---------------------- main.pushstr_newL("{"); diff --git a/src/backends/backend_openACC/dsl_cpp_generator.h b/src/backends/backend_openACC/dsl_cpp_generator.h index 6a6283ec..2a13355f 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.h +++ b/src/backends/backend_openACC/dsl_cpp_generator.h @@ -6,6 +6,7 @@ #include "../../ast/ASTNodeTypes.hpp" //~ #include "../../parser/includeHeader.hpp" #include "../dslCodePad.h" +#include "../../analyser/analyserUtil.cpp" namespace spacc { class dsl_cpp_generator { diff --git a/src/parser/lrparser.y b/src/parser/lrparser.y index 2e573011..f6ef5f29 100644 --- a/src/parser/lrparser.y +++ b/src/parser/lrparser.y @@ -7,6 +7,7 @@ #include "../analyser/attachProp/attachPropAnalyser.h" #include "../analyser/dataRace/dataRaceAnalyser.h" #include "../analyser/deviceVars/deviceVarsAnalyser.h" + #include "../analyser/blockVars/blockVarsAnalyser.h" #include //#include "../symbolutil/SymbolTableBuilder.cpp" @@ -592,6 +593,11 @@ int main(int argc,char **argv) else if (strcmp(backendTarget, "acc") == 0) { spacc::dsl_cpp_generator cpp_backend; cpp_backend.setFileName(fileName); + if(optimize) { + cpp_backend.setOptimized(); + blockVarsAnalyser bvAnalyser; + bvAnalyser.analyse(frontEndContext.getFuncList()); + } cpp_backend.generate(); } else diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index c1208456..c62d034d 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -355,7 +355,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } else { // if for all statement has a proc call proc_callExpr* extractElemFunc = forAll->getExtractElementFunc(); - if(extractElemFunc != NULL) { + if(extractElemFunc != NULL && forAll->isForall()) { Identifier* iteratorMethodId = extractElemFunc->getMethodId(); string iteratorMethodString(iteratorMethodId->getIdentifier()); if(iteratorMethodString.compare("nodes_to") == 0) { // if the proc call is nodes_to, d_rev_meta is needed From 62a4266d3767e3611597134efb8c892cb386a402 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Wed, 15 Mar 2023 02:34:19 +0530 Subject: [PATCH 36/38] added NodeBlockData --- .gitignore | 3 +- src/Makefile | 7 +- src/analyser/analyserUtil.cpp | 2 + src/analyser/blockVars/NodeBlockData.cpp | 188 ++++++ src/analyser/blockVars/blockVarsAnalyser.cpp | 85 ++- src/analyser/blockVars/blockVarsAnalyser.h | 136 ++-- src/analyser/blockVars/blockVarsInit.cpp | 133 ++-- src/analyser/blockVars/getUsedVars.cpp | 2 + src/ast/ASTNodeTypes.hpp | 167 +++-- .../backend_openACC/dsl_cpp_generator.cpp | 11 +- .../backend_openACC/dsl_cpp_generator.h | 2 +- src/parser/y.tab.c | 598 +++++++++--------- src/symbolutil/SymbolTableBuilder.cpp | 2 +- 13 files changed, 837 insertions(+), 499 deletions(-) create mode 100644 src/analyser/blockVars/NodeBlockData.cpp diff --git a/.gitignore b/.gitignore index b6972366..71ce4b20 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ StarPlat.exe debug.txt dump *.pdf -To_be_done.txt \ No newline at end of file +To_be_done.txt +.github/ \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index f799456c..b37ec8e5 100644 --- a/src/Makefile +++ b/src/Makefile @@ -87,8 +87,8 @@ bin/dv4.o: analyser/deviceVars/deviceVarsTransfer.cpp analyser/deviceVars/device bin/dv5.o: analyser/deviceVars/getUsedVars.cpp analyser/deviceVars/deviceVarsAnalyser.h analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/deviceVars/getUsedVars.cpp -o bin/dv5.o -bin/blockVarsAnalyser.o: bin/bv1.o bin/bv2.o bin/bv3.o - ld -r bin/bv1.o bin/bv2.o bin/bv3.o -o bin/blockVarsAnalyser.o +bin/blockVarsAnalyser.o: bin/bv1.o bin/bv2.o bin/bv3.o bin/bv4.o + ld -r bin/bv1.o bin/bv2.o bin/bv3.o bin/bv4.o -o bin/blockVarsAnalyser.o bin/bv1.o: analyser/blockVars/blockVarsAnalyser.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/blockVars/blockVarsAnalyser.cpp -o bin/bv1.o @@ -99,6 +99,9 @@ bin/bv2.o: analyser/blockVars/blockVarsInit.cpp analyser/blockVars/blockVarsAnal bin/bv3.o: analyser/blockVars/getUsedVars.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/blockVars/getUsedVars.cpp -o bin/bv3.o +bin/bv4.o: analyser/blockVars/NodeBlockData.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp + $(CC) $(CFLAGS) -c analyser/blockVars/NodeBlockData.cpp -o bin/bv4.o + bin/analyserUtil.o: analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/analyserUtil.cpp -o bin/analyserUtil.o diff --git a/src/analyser/analyserUtil.cpp b/src/analyser/analyserUtil.cpp index 475b856e..4eeb8d87 100644 --- a/src/analyser/analyserUtil.cpp +++ b/src/analyser/analyserUtil.cpp @@ -75,6 +75,8 @@ class usedVariables void addVariable(Identifier *iden, int type) { + if (iden->getSymbolInfo() == NULL) // To not include the iterators in the list + return; if (type & 1) readVars.insert({iden->getSymbolInfo(), iden}); if (type & 2) diff --git a/src/analyser/blockVars/NodeBlockData.cpp b/src/analyser/blockVars/NodeBlockData.cpp new file mode 100644 index 00000000..807b90d0 --- /dev/null +++ b/src/analyser/blockVars/NodeBlockData.cpp @@ -0,0 +1,188 @@ +#include "blockVarsAnalyser.h" + +NodeBlockData::NodeBlockData() { + this->node = NULL; + this->block = NULL; + this->startBlock = NULL; + this->endBlock = NULL; +} + +NodeBlockData::NodeBlockData(ASTNode* node) { + this->node = node; + setNodeDataBlock(); + this->block = NULL; + this->startBlock = NULL; + this->endBlock = NULL; +} + +NodeBlockData::NodeBlockData(ASTNode* node, ASTNodeBlock* Block) { + this->node = node; + setNodeDataBlock(); + this->block = Block; + this->startBlock = NULL; + this->endBlock = NULL; +} + +NodeBlockData::NodeBlockData(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock) { + this->node = node; + setNodeDataBlock(); + this->block = NULL; + this->startBlock = startBlock; + this->endBlock = endBlock; +} + +NodeBlockData::NodeBlockData(ASTNode* node, ASTNodeBlock* Block, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock) { + this->node = node; + setNodeDataBlock(); + this->block = Block; + this->startBlock = startBlock; + this->endBlock = endBlock; +} + +void NodeBlockData::setNodeDataBlock() { + if (node == NULL) + return; + + switch (node->getTypeofNode()) + { + case NODE_DOWHILESTMT: + { + dowhileStmt* doWhile = (dowhileStmt*) node; + doWhile->setBlockData(this); + break; + } + case NODE_WHILESTMT: + { + whileStmt* whilestmt = (whileStmt*) node; + whilestmt->setBlockData(this); + } + default: + break; + } + return; +} + +ASTNode* NodeBlockData::getNode() { + return node; +} + +ASTNodeBlock* NodeBlockData::getBlock() { + return block; +} + +ASTNodeBlock* NodeBlockData::getStartBlock() { + return startBlock; +} + +ASTNodeBlock* NodeBlockData::getEndBlock() { + return endBlock; +} + +void NodeBlockData::setBlock(ASTNodeBlock* block) { + this->block = block; +} + +void NodeBlockData::setStartBlock(ASTNodeBlock* startBlock) { + this->startBlock = startBlock; +} + +void NodeBlockData::setEndBlock(ASTNodeBlock* endBlock) { + this->endBlock = endBlock; +} + +ASTNodeBlock::ASTNodeBlock() { + this->node = NULL; + use = set(); + def = set(); + in = set(); + out = set(); + succ = set(); +} + +ASTNodeBlock::ASTNodeBlock(ASTNode* node) { + this->node = node; + use = set(); + def = set(); + in = set(); + out = set(); + succ = set(); +} + +ASTNode* ASTNodeBlock::getNode() { + return node; +} + +set ASTNodeBlock::getUse() { + return use; +} + +set ASTNodeBlock::getDef() { + return def; +} + +set ASTNodeBlock::getIn() { + return in; +} + +set ASTNodeBlock::getOut() { + return out; +} + +set ASTNodeBlock::getSucc() { + return succ; +} + +void ASTNodeBlock::addUse(Identifier* id) { + use.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addDef(Identifier* id) { + def.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addIn(Identifier* id) { + in.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addIn(set ids) { + for(TableEntry* id : ids) + in.insert(id); +} + +void ASTNodeBlock::removeIn(Identifier* id) { + in.erase(id->getSymbolInfo()); +} + +void ASTNodeBlock::removeIn(set ids) { + for(TableEntry* id : ids) + in.erase(id); +} + +void ASTNodeBlock::addOut(Identifier* id) { + out.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addOut(set ids) { + for(TableEntry* id : ids) + out.insert(id); +} + +void ASTNodeBlock::removeOut(Identifier* id) { + out.erase(id->getSymbolInfo()); +} + +void ASTNodeBlock::removeOut(set ids) { + for(Identifier* id : ids) + out.erase(id->getSymbolInfo()); +} + +void ASTNodeBlock::addSucc(ASTNodeBlock* block) { + if(block != NULL) succ.insert(block); +} + +void ASTNodeBlock::addVars(usedVariables vars) { + for(Identifier* id : vars.getVariables(READ)) + addUse(id); + for(Identifier* id : vars.getVariables(WRITE)) + addDef(id); +} \ No newline at end of file diff --git a/src/analyser/blockVars/blockVarsAnalyser.cpp b/src/analyser/blockVars/blockVarsAnalyser.cpp index f3376772..3b11d887 100644 --- a/src/analyser/blockVars/blockVarsAnalyser.cpp +++ b/src/analyser/blockVars/blockVarsAnalyser.cpp @@ -1,5 +1,33 @@ #include "blockVarsAnalyser.h" +ASTNodeBlock* blockVarsAnalyser::initBlockNode() +{ + ASTNodeBlock* blockNode = new ASTNodeBlock(); + return blockNode; +} + +ASTNodeBlock* blockVarsAnalyser::initBlockNode(ASTNode* node) +{ + ASTNodeBlock* blockNode = new ASTNodeBlock(node); + return blockNode; +} + +void blockVarsAnalyser::addBlockNode(ASTNode* node, ASTNodeBlock* blockNode) +{ + blockNodes.push_back(blockNode); + blockNodeMap[node] = new NodeBlockData(node, blockNode); +} + +void blockVarsAnalyser::addBlockNode(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock) +{ + blockNodeMap[node] = new NodeBlockData(node, startBlock, endBlock); +} + +NodeBlockData* blockVarsAnalyser::getBlockData(ASTNode* node) +{ + return blockNodeMap[node]; +} + void blockVarsAnalyser::toString(NODETYPE type) { switch(type) @@ -97,38 +125,69 @@ void blockVarsAnalyser::printBlockNodes() for (auto blockNode: blockNodes) { cout << "Block number " << ++i << ": "; - toString(blockNode->getNode()->getTypeofNode()); + if (blockNode->getNode() == NULL) + cout << "NULL"; + else + toString(blockNode->getNode()->getTypeofNode()); cout << endl; - for (Identifier* id : blockNode->getDef()) + for (TableEntry* id : blockNode->getDef()) { - cout << "Def: " << id->getIdentifier() << endl; + cout << "Def: " << id->getId()->getIdentifier() << endl; } - for (Identifier* id : blockNode->getUse()) + for (TableEntry* id : blockNode->getUse()) { - cout << "Use: " << id->getIdentifier() << endl; + cout << "Use: " << id->getId()->getIdentifier() << endl; } - for (Identifier* id : blockNode->getIn()) + for (TableEntry* id : blockNode->getIn()) { - cout << "In: " << id->getIdentifier() << endl; + cout << "In: " << id->getId()->getIdentifier() << endl; } - for (Identifier* id : blockNode->getOut()) + for (TableEntry* id : blockNode->getOut()) { - cout << "Out: " << id->getIdentifier() << endl; + cout << "Out: " << id->getId()->getIdentifier() << endl; } for (ASTNodeBlock* succ : blockNode->getSucc()) { cout << "Succ: "; - toString(succ->getNode()->getTypeofNode()); + if (succ->getNode() == NULL) + cout << "NULL"; + else + toString(succ->getNode()->getTypeofNode()); cout << endl; } } } +void blockVarsAnalyser::analyseBlockNodes() +{ + bool changed = true; + do + { + changed = false; + for (ASTNodeBlock* blockNode: blockNodes) + { + set oldIn = blockNode->getIn(); + set oldOut = blockNode->getOut(); + for (ASTNodeBlock* succ: blockNode->getSucc()) + { + blockNode->addOut(succ->getIn()); + } + blockNode->addIn(blockNode->getOut()); + blockNode->removeIn(blockNode->getDef()); + blockNode->addIn(blockNode->getUse()); + + if (oldIn != blockNode->getIn() || oldOut != blockNode->getOut()) + changed = true; + } + } while (changed); +} + void blockVarsAnalyser::analyseFunc(ASTNode* proc) { Function* func = (Function*)proc; - cout << "Function Name: " << func->getIdentifier()->getIdentifier() << endl; + ASTNodeBlock* endBlock = new ASTNodeBlock(); + blockNodes.push_back(endBlock); ASTNodeBlock* blockNode = initBlockNode(func); for (formalParam* param : func->getParamList()) @@ -139,8 +198,10 @@ void blockVarsAnalyser::analyseFunc(ASTNode* proc) blockNode->addSucc(initStatement(func->getBlockStatement(), NULL)); addBlockNode(func, blockNode); + // printBlockNodes(); + analyseBlockNodes(); + printBlockNodes(); - // analyseBlockNodes(); } void blockVarsAnalyser::analyse(list functions) diff --git a/src/analyser/blockVars/blockVarsAnalyser.h b/src/analyser/blockVars/blockVarsAnalyser.h index a204d1ab..86077072 100644 --- a/src/analyser/blockVars/blockVarsAnalyser.h +++ b/src/analyser/blockVars/blockVarsAnalyser.h @@ -9,96 +9,78 @@ class ASTNodeBlock { ASTNode* node; // the block node - list use; // list of variables used in the block - list def; // list of variables defined in the block - list in; // list of variables needed to be sent to the block - list out; // list of variables needed to be sent from the block + set use; // set of variables used in the block + set def; // set of variables defined in the block + set in; // set of variables needed to be sent to the block + set out; // set of variables needed to be sent from the block - list succ; // list of successor blocks + set succ; // set of successor blocks public: - ASTNodeBlock(ASTNode* node) { - this->node = node; - use = list(); - def = list(); - in = list(); - out = list(); - succ = list(); - } - - ASTNode* getNode() { - return node; - } - - list getUse() { - return use; - } - - list getDef() { - return def; - } - - list getIn() { - return in; - } - - list getOut() { - return out; - } - - list getSucc() { - return succ; - } - - void addUse(Identifier* id) { - use.push_back(id); - } - - void addDef(Identifier* id) { - def.push_back(id); - } - - void addIn(Identifier* id) { - in.push_back(id); - } - - void addOut(Identifier* id) { - out.push_back(id); - } - - void addSucc(ASTNodeBlock* block) { - if(block != NULL) succ.push_back(block); - } - - void addVars(usedVariables usedVars) { - for(Identifier* id : usedVars.getVariables(READ)) - use.push_back(id); - - for(Identifier* id : usedVars.getVariables(WRITE)) - def.push_back(id); - } + ASTNodeBlock(); + ASTNodeBlock(ASTNode* node); + ASTNode* getNode(); + set getUse(); + set getDef(); + set getIn(); + set getOut(); + set getSucc(); + void addUse(Identifier* id); + void addDef(Identifier* id); + void addIn(Identifier* id); + void addIn(set ids); + void removeIn(Identifier* id); + void removeIn(set ids); + void addOut(Identifier* id); + void addOut(set ids); + void removeOut(Identifier* id); + void removeOut(set ids); + void addSucc(ASTNodeBlock* block); + void addVars(usedVariables vars); }; -class blockVarsAnalyser { +class NodeBlockData +{ + ASTNode* node; // the block node + ASTNodeBlock* block; // Index of the block + ASTNodeBlock* startBlock; // Index of the start block, Only for loops (for, while, do-while) + ASTNodeBlock* endBlock; // Index of the end block, Only for loops (for, while, do-while) + + public: + + NodeBlockData(); + NodeBlockData(ASTNode* node); + NodeBlockData(ASTNode* node, ASTNodeBlock* Block); + NodeBlockData(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock); + NodeBlockData(ASTNode* node, ASTNodeBlock* Block, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock); + void setNodeDataBlock(); + + ASTNode* getNode(); + ASTNodeBlock* getBlock(); + ASTNodeBlock* getStartBlock(); + ASTNodeBlock* getEndBlock(); + void setBlock(ASTNodeBlock* block); + void setStartBlock(ASTNodeBlock* startBlock); + void setEndBlock(ASTNodeBlock* endBlock); +}; + +class blockVarsAnalyser +{ private: - ASTNodeBlock* initBlockNode(ASTNode* node) - { - ASTNodeBlock* blockNode = new ASTNodeBlock(node); - return blockNode; - } + ASTNodeBlock* initBlockNode(); + ASTNodeBlock* initBlockNode(ASTNode* node); list blockNodes; - map blockNodeMap; + unordered_map blockNodeMap; public: blockVarsAnalyser() {} - void addBlockNode(ASTNode* node, ASTNodeBlock* blockNode) - { - blockNodes.push_back(blockNode); - blockNodeMap[node] = blockNode; - } + void addBlockNode(ASTNode* node, ASTNodeBlock* blockNode); + void addBlockNode(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock); + + NodeBlockData* getBlockData(ASTNode* node); void toString(NODETYPE); // Prints the type of the node verbose void printBlockNodes(); // Prints the block nodes diff --git a/src/analyser/blockVars/blockVarsInit.cpp b/src/analyser/blockVars/blockVarsInit.cpp index a7a7894c..edac6b93 100644 --- a/src/analyser/blockVars/blockVarsInit.cpp +++ b/src/analyser/blockVars/blockVarsInit.cpp @@ -27,13 +27,7 @@ ASTNodeBlock* blockVarsAnalyser::initStatement(statement* stmt, ASTNodeBlock* bl case NODE_UNARYSTMT: return initUnary((unary_stmt*)stmt, blockNode); case NODE_FORALLSTMT: - { - forallStmt* forStmt = (forallStmt*)stmt; - if(forStmt->isForall()) - return initForAll((forallStmt*)stmt, blockNode); - else - return initFor((forallStmt*)stmt, blockNode); - } + return initForAll((forallStmt*)stmt, blockNode); case NODE_BLOCKSTMT: return initBlock((blockStatement*)stmt, blockNode); case NODE_IFSTMT: @@ -116,6 +110,7 @@ ASTNodeBlock* blockVarsAnalyser::initForAll(forallStmt* forAllStmt, ASTNodeBlock usedVariables usedVars; if(forAllStmt->isSourceProcCall()) { + usedVars.addVariable(forAllStmt->getSourceGraph(), READ); proc_callExpr *expr = forAllStmt->getExtractElementFunc(); usedVars.merge(getVarsExprProcCall(expr)); } @@ -146,45 +141,6 @@ ASTNodeBlock* blockVarsAnalyser::initForAll(forallStmt* forAllStmt, ASTNodeBlock return forAllCondNode; } -ASTNodeBlock* blockVarsAnalyser::initFor(forallStmt* forStmt, ASTNodeBlock* blockNode) -{ - // Create a new block node for the for statement - ASTNodeBlock* forCondNode = new ASTNodeBlock(forStmt); - - // Add the used and def variables to use set of the new block for cond - usedVariables usedVars; - if(forStmt->isSourceProcCall()) - { - proc_callExpr *expr = forStmt->getExtractElementFunc(); - usedVars.merge(getVarsExprProcCall(expr)); - } - else if(!forStmt->isSourceField()) - { - Identifier *iden = forStmt->getSource(); - usedVars.addVariable(iden, READ); - } - else - { - PropAccess *propId = forStmt->getPropSource(); - usedVars.addVariable(propId->getIdentifier1(), READ); - } - - if (forStmt->hasFilterExpr()) - usedVars.merge(getVarsExpr(forStmt->getfilterExpr())); - - forCondNode->addVars(usedVars); - - // Add the passed block as succ of the new block - forCondNode->addSucc(blockNode); - - // Add the for statement as a succ of the new block - forCondNode->addSucc(initStatement(forStmt->getBody(), forCondNode)); - - // Add this node to the list of block nodes - addBlockNode(forStmt, forCondNode); - return forCondNode; -} - ASTNodeBlock* blockVarsAnalyser::initIfElse(ifStmt* ifStmt, ASTNodeBlock* blockNode) { // Create a new block node for the if statement @@ -213,43 +169,76 @@ ASTNodeBlock* blockVarsAnalyser::initIfElse(ifStmt* ifStmt, ASTNodeBlock* blockN ASTNodeBlock* blockVarsAnalyser::initWhile(whileStmt* whileStmt, ASTNodeBlock* blockNode) { + // Create a new block node for the do-while statement start and end block + ASTNodeBlock* whileStartNode = new ASTNodeBlock(); + ASTNodeBlock* whileEndNode = new ASTNodeBlock(); + // Create a new block node for the while statement - ASTNodeBlock* whileCondNode = new ASTNodeBlock(whileStmt); + ASTNodeBlock* whileCondNode = new ASTNodeBlock(whileStmt->getCondition()); // Add the used and def variables to use set of the new block usedVariables usedVars = getVarsExpr(whileStmt->getCondition()); whileCondNode->addVars(usedVars); - // Add the passed block as succ of the new block - whileCondNode->addSucc(blockNode); + // Add the end block as succ of the new block + whileCondNode->addSucc(whileEndNode); + + // Add the passed block as succ of the end block + whileEndNode->addSucc(blockNode); + blockNodes.push_back(whileEndNode); + + // Add the while statement to the list of block nodes + addBlockNode(whileStmt->getCondition(), whileCondNode); // Add the while statement as a succ of the new block - whileCondNode->addSucc(initStatement(whileStmt->getBody(), whileCondNode)); + ASTNodeBlock* whileBodyStartNode = initStatement(whileStmt->getBody(), whileCondNode); + whileCondNode->addSucc(whileBodyStartNode); - // Add this node to the list of block nodes - addBlockNode(whileStmt, whileCondNode); - return whileCondNode; + // Add the cond block as a succ of the while statement start block + whileStartNode->addSucc(whileCondNode); + blockNodes.push_back(whileStartNode); + + // Map the while statement's start and end block + addBlockNode(whileStmt, whileStartNode, whileEndNode); + + return whileStartNode; } ASTNodeBlock* blockVarsAnalyser::initDoWhile(dowhileStmt* doWhileStmt, ASTNodeBlock* blockNode) { - // Create a new block node for the do-while statement - ASTNodeBlock* doWhileCondNode = new ASTNodeBlock(doWhileStmt); + // Create a new block node for the do-while statement start and end block + ASTNodeBlock* doWhileStartNode = new ASTNodeBlock(); + ASTNodeBlock* doWhileEndNode = new ASTNodeBlock(); + + // Create a new block node for the do-while condition statement + ASTNodeBlock* doWhileCondNode = new ASTNodeBlock(doWhileStmt->getCondition()); // Add the used and def variables to use set of the new block usedVariables usedVars = getVarsExpr(doWhileStmt->getCondition()); doWhileCondNode->addVars(usedVars); - // Add the passed block as succ of the new block - doWhileCondNode->addSucc(blockNode); + // Add the end block as succ of the new block + doWhileCondNode->addSucc(doWhileEndNode); + + // Add the passed block as succ of the end block + doWhileEndNode->addSucc(blockNode); + blockNodes.push_back(doWhileEndNode); // Add this node to the list of block nodes - addBlockNode(doWhileStmt, doWhileCondNode); + addBlockNode(doWhileStmt->getCondition(), doWhileCondNode); // Add the do-while statement as a succ of the new block - doWhileCondNode->addSucc(initStatement(doWhileStmt->getBody(), doWhileCondNode)); + ASTNodeBlock* doWhileBodyStartNode = initStatement(doWhileStmt->getBody(), doWhileCondNode); + doWhileCondNode->addSucc(doWhileBodyStartNode); - return doWhileCondNode; + // Add the do-while body start as a succ of the start block + doWhileStartNode->addSucc(doWhileBodyStartNode); + blockNodes.push_back(doWhileStartNode); + + // Map the do-while statement's start and end block + addBlockNode(doWhileStmt, doWhileStartNode, doWhileEndNode); + + return doWhileStartNode; } ASTNodeBlock* blockVarsAnalyser::initProcCall(proc_callStmt* procCallStmt, ASTNodeBlock* blockNode) @@ -271,21 +260,35 @@ ASTNodeBlock* blockVarsAnalyser::initProcCall(proc_callStmt* procCallStmt, ASTNo ASTNodeBlock* blockVarsAnalyser::initFixedPoint(fixedPointStmt* fixedPointStmt, ASTNodeBlock* blockNode) { + // Create a new block node for start and end block of the fixed point statement + ASTNodeBlock* fixedPointStartNode = new ASTNodeBlock(); + ASTNodeBlock* fixedPointEndNode = new ASTNodeBlock(); + // Create a new block node for the fixed point statement - ASTNodeBlock* fixedPointCondNode = new ASTNodeBlock(fixedPointStmt); + ASTNodeBlock* fixedPointCondNode = new ASTNodeBlock(fixedPointStmt->getFixedPointId()); // Add the used and def variables to use set of the new block fixedPointCondNode->addUse(fixedPointStmt->getFixedPointId()); // Add the passed block as succ of the new block - fixedPointCondNode->addSucc(blockNode); + fixedPointCondNode->addSucc(fixedPointEndNode); + + // Add the end block to the list of block nodes + fixedPointEndNode->addSucc(blockNode); + blockNodes.push_back(fixedPointEndNode); // Add the fixed point statement as a succ of the new block fixedPointCondNode->addSucc(initStatement(fixedPointStmt->getBody(), fixedPointCondNode)); + addBlockNode(fixedPointStmt->getFixedPointId(), fixedPointCondNode); - // Add this node to the list of block nodes - addBlockNode(fixedPointStmt, fixedPointCondNode); - return fixedPointCondNode; + // Add the fixed point statement as a succ of the start block + fixedPointStartNode->addSucc(fixedPointCondNode); + blockNodes.push_back(fixedPointStartNode); + + // Map the fixed point statement's start and end block + addBlockNode(fixedPointStmt, fixedPointStartNode, fixedPointEndNode); + + return fixedPointStartNode; } ASTNodeBlock* blockVarsAnalyser::initReduction(reductionCallStmt* reductionCallStmt, ASTNodeBlock* blockNode) diff --git a/src/analyser/blockVars/getUsedVars.cpp b/src/analyser/blockVars/getUsedVars.cpp index d3dd84f8..9fbc2580 100644 --- a/src/analyser/blockVars/getUsedVars.cpp +++ b/src/analyser/blockVars/getUsedVars.cpp @@ -309,6 +309,8 @@ usedVariables blockVarsAnalyser::getVarsExprProcCall(proc_callExpr *procCall) { if (arg->isExpr()) currVars.merge(getVarsExpr(arg->getExpr())); + else if (arg->isAssignExpr()) + currVars.merge(getVarsAssignment(arg->getAssignExpr())); } return currVars; diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 992823a5..cfe5d643 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -29,6 +29,80 @@ extern vector>> graphId; where the graphId vector is separated across different function type*/ class varTransferStmt; +class NodeBlockData; + +class MetaDataUsed +{ + public: + bool isMetaUsed; // if d_meta is used in the ASTNode + bool isRevMetaUsed; // if d_rev_meta is used in the ASTNode + bool isDataUsed; // if d_data is used in the ASTNode + bool isSrcUsed; // if d_src is used in the ASTNode + bool isWeightUsed; // if d_weight is used in the ASTNode + + MetaDataUsed() + { + isMetaUsed = false; + isRevMetaUsed = false; + isDataUsed = false; + isSrcUsed = false; + isWeightUsed = false; + } + + operator bool() const + { + return isMetaUsed || isRevMetaUsed || isDataUsed || isSrcUsed || isWeightUsed; + } + + MetaDataUsed& operator|= (const MetaDataUsed& rhs) + { + isMetaUsed = isMetaUsed || rhs.isMetaUsed; + isRevMetaUsed = isRevMetaUsed || rhs.isRevMetaUsed; + isDataUsed = isDataUsed || rhs.isDataUsed; + isSrcUsed = isSrcUsed || rhs.isSrcUsed; + isWeightUsed = isWeightUsed || rhs.isWeightUsed; + return *this; + } + + MetaDataUsed& operator&= (const MetaDataUsed& rhs) + { + isMetaUsed = isMetaUsed && rhs.isMetaUsed; + isRevMetaUsed = isRevMetaUsed && rhs.isRevMetaUsed; + isDataUsed = isDataUsed && rhs.isDataUsed; + isSrcUsed = isSrcUsed && rhs.isSrcUsed; + isWeightUsed = isWeightUsed && rhs.isWeightUsed; + return *this; + } + + MetaDataUsed& operator^= (const MetaDataUsed& rhs) + { + isMetaUsed = isMetaUsed ^ rhs.isMetaUsed; + isRevMetaUsed = isRevMetaUsed ^ rhs.isRevMetaUsed; + isDataUsed = isDataUsed ^ rhs.isDataUsed; + isSrcUsed = isSrcUsed ^ rhs.isSrcUsed; + isWeightUsed = isWeightUsed ^ rhs.isWeightUsed; + return *this; + } + + MetaDataUsed& operator= (const MetaDataUsed& rhs) + { + isMetaUsed = rhs.isMetaUsed; + isRevMetaUsed = rhs.isRevMetaUsed; + isDataUsed = rhs.isDataUsed; + isSrcUsed = rhs.isSrcUsed; + isWeightUsed = rhs.isWeightUsed; + return *this; + } + + void print() + { + cout << "isMetaUsed: " << isMetaUsed << endl; + cout << "isRevMetaUsed: " << isRevMetaUsed << endl; + cout << "isDataUsed: " << isDataUsed << endl; + cout << "isSrcUsed: " << isSrcUsed << endl; + cout << "isWeightUsed: " << isWeightUsed << endl; + } +}; class argument { @@ -418,11 +492,7 @@ class Function:public ASTNode bool hasReturn; int funcType ; - bool isMetaUsed; // if d_meta is used in function - bool isDataUsed; // if d_data is used in function - bool isSrcUsed; // if d_src is used in function - bool isWeightUsed; // if d_weight is used in function - bool isRevMetaUsed; // if d_rev_meta is used in function + MetaDataUsed metadata; public: Function() { @@ -431,11 +501,7 @@ class Function:public ASTNode funcType = 0; initialLockDecl = false; createSymbTab(); - isMetaUsed = false; - isDataUsed = false; - isSrcUsed = false; - isWeightUsed = false; - isRevMetaUsed = false; + metadata = MetaDataUsed(); } static Function* createFunctionNode(Identifier* funcId,list paramList) @@ -556,45 +622,48 @@ class Function:public ASTNode bool getIsMetaUsed() { - return isMetaUsed; + return metadata.isMetaUsed; } void setIsMetaUsed() { - this->isMetaUsed = true; + metadata.isMetaUsed = true; } bool getIsDataUsed() { - return isDataUsed; + return metadata.isDataUsed; } void setIsDataUsed() { - this->isDataUsed = true; + metadata.isDataUsed = true; } bool getIsSrcUsed() { - return isSrcUsed; + return metadata.isSrcUsed; } void setIsSrcUsed() { - this->isSrcUsed = true; + metadata.isSrcUsed = true; } bool getIsWeightUsed() { - return isWeightUsed; + return metadata.isWeightUsed; } void setIsWeightUsed() { - this->isWeightUsed = true; + metadata.isWeightUsed = true; } bool getIsRevMetaUsed() { - return isRevMetaUsed; + return metadata.isRevMetaUsed; } void setIsRevMetaUsed() { - this->isRevMetaUsed = true; + metadata.isRevMetaUsed = true; + } + + MetaDataUsed getMetaDataUsed() { + return metadata; } - }; class Type:public ASTNode @@ -1372,6 +1441,7 @@ class whileStmt:public statement private: Expression* iterCondition; blockStatement* body; + NodeBlockData* blockData; public: @@ -1407,12 +1477,23 @@ class whileStmt:public statement { body=bodySent; } + + void setBlockData(NodeBlockData* bd) + { + this->blockData = bd; + } + + NodeBlockData* getBlockData() + { + return blockData; + } }; class dowhileStmt:public statement { private: Expression* iterCondition; blockStatement* body; + NodeBlockData* blockdata; public: @@ -1448,6 +1529,14 @@ class whileStmt:public statement { body=bodySent; } + + NodeBlockData* getBlockData(){ + return blockdata; + } + + void setBlockData(NodeBlockData* blockdataSent){ + blockdata = blockdataSent; + } }; @@ -1952,11 +2041,7 @@ class fixedPointStmt:public statement list usedVars; list doubleBufferVars; // the propnodes which need to be double buffered - bool isMetaUsed; // if d_meta is used in forall - bool isDataUsed; // if d_data is used in forall - bool isSrcUsed; // if d_src is used in forall - bool isWeightUsed; // if d_weight is used in forall - bool isRevMetaUsed; // if d_rev_meta is used in forall + MetaDataUsed metadata; public: forallStmt() { @@ -1971,11 +2056,7 @@ class fixedPointStmt:public statement isSourceId=false; createSymbTab(); filterExprAssoc = false; - isMetaUsed = false; - isDataUsed = false; - isSrcUsed = false; - isWeightUsed = false; - isRevMetaUsed = false; + metadata = MetaDataUsed(); } static forallStmt* createforallStmt(Identifier* iterator,Identifier* sourceGraph,proc_callExpr* extractElemFunc,statement* body,Expression* filterExpr,bool isforall) @@ -2168,43 +2249,43 @@ class fixedPointStmt:public statement } bool getIsMetaUsed() { - return isMetaUsed; + return metadata.isMetaUsed; } void setIsMetaUsed() { - this->isMetaUsed = true; + metadata.isMetaUsed = true; } bool getIsDataUsed() { - return isDataUsed; + return metadata.isDataUsed; } void setIsDataUsed() { - this->isDataUsed = true; + metadata.isDataUsed = true; } bool getIsSrcUsed() { - return isSrcUsed; + return metadata.isSrcUsed; } void setIsSrcUsed() { - this->isSrcUsed = true; + metadata.isSrcUsed = true; } bool getIsWeightUsed() { - return isWeightUsed; + return metadata.isWeightUsed; } void setIsWeightUsed() { - this->isWeightUsed = true; + metadata.isWeightUsed = true; } bool getIsRevMetaUsed() { - return isRevMetaUsed; + return metadata.isRevMetaUsed; } void setIsRevMetaUsed() { - this->isRevMetaUsed = true; + metadata.isRevMetaUsed = true; } void addDoubleBufferVar(Identifier* var) { @@ -2214,6 +2295,10 @@ class fixedPointStmt:public statement list getDoubleBufferVars() { return doubleBufferVars; } + + MetaDataUsed getMetaDataUsed() { + return metadata; + } }; class reductionCall:public ASTNode diff --git a/src/backends/backend_openACC/dsl_cpp_generator.cpp b/src/backends/backend_openACC/dsl_cpp_generator.cpp index 7f20bacb..22dcbb7a 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.cpp +++ b/src/backends/backend_openACC/dsl_cpp_generator.cpp @@ -3,6 +3,8 @@ #include #include +#include "getMetaDataUsed.cpp" + extern usedVariables getVarsStatement(statement* stmt); //~ using namespace spacc; @@ -743,6 +745,9 @@ void dsl_cpp_generator::generateDoWhileStmt(dowhileStmt* doWhile) main.pushstr_newL("{"); //Start of inner openAcc data body //------------------------------------------------------------------- + MetaDataUsed md = getMetaDataUsedDoWhile(doWhile); + md.print(); + main.pushstr_newL("do"); generateStatement(doWhile->getBody()); main.pushString("while("); @@ -1308,7 +1313,7 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti usedVariables usedVars = getVarsStatement(forAll->getBody()); usedVars.removeVariable(forAll->getIterator(), READ_WRITE); for(Identifier* id: usedVars.getVariables(READ_ONLY)) { - cout << "read only " << id->getIdentifier() << endl; + // cout << "read only " << id->getIdentifier() << endl; Type* type = id->getSymbolInfo()->getType(); if(type->isPropType()) { sprintf(strBuffer1, "copyin( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); @@ -1322,7 +1327,7 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti } } for(Identifier* id: usedVars.getVariables(WRITE_ONLY)) { - cout << "write only " << id->getIdentifier() << endl; + // cout << "write only " << id->getIdentifier() << endl; Type* type = id->getSymbolInfo()->getType(); if(type->isPropType()) { sprintf(strBuffer1, "copyout( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); @@ -1336,7 +1341,7 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti } } for(Identifier* id: usedVars.getVariables(READ_AND_WRITE)) { - cout << "read and write" << id->getIdentifier() << endl; + // cout << "read and write" << id->getIdentifier() << endl; Type* type = id->getSymbolInfo()->getType(); if(type->isPropType()) { sprintf(strBuffer1, "copy( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); diff --git a/src/backends/backend_openACC/dsl_cpp_generator.h b/src/backends/backend_openACC/dsl_cpp_generator.h index 2a13355f..d5a1e992 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.h +++ b/src/backends/backend_openACC/dsl_cpp_generator.h @@ -6,7 +6,7 @@ #include "../../ast/ASTNodeTypes.hpp" //~ #include "../../parser/includeHeader.hpp" #include "../dslCodePad.h" -#include "../../analyser/analyserUtil.cpp" +#include "../../analyser/blockVars/blockVarsAnalyser.h" namespace spacc { class dsl_cpp_generator { diff --git a/src/parser/y.tab.c b/src/parser/y.tab.c index 18822071..db0480e3 100644 --- a/src/parser/y.tab.c +++ b/src/parser/y.tab.c @@ -77,6 +77,7 @@ #include "../analyser/attachProp/attachPropAnalyser.h" #include "../analyser/dataRace/dataRaceAnalyser.h" #include "../analyser/deviceVars/deviceVarsAnalyser.h" + #include "../analyser/blockVars/blockVarsAnalyser.h" #include //#include "../symbolutil/SymbolTableBuilder.cpp" @@ -96,7 +97,7 @@ //symbTab=new SymbolTable(); //symbolTableList.push_back(new SymbolTable()); -#line 100 "y.tab.c" +#line 101 "y.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -297,7 +298,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 33 "lrparser.y" +#line 34 "lrparser.y" int info; long ival; @@ -312,7 +313,7 @@ union YYSTYPE tempNode* temporary; -#line 316 "y.tab.c" +#line 317 "y.tab.c" }; typedef union YYSTYPE YYSTYPE; @@ -864,21 +865,21 @@ static const yytype_int8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 98, 98, 99, 101, 108, 114, 120, 126, 132, - 138, 139, 142, 153, 157, 166, 169, 170, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 186, 188, 190, 192, 194, 196, 198, 201, 209, 212, - 215, 219, 220, 221, 224, 225, 226, 227, 228, 230, - 231, 233, 234, 236, 238, 241, 242, 243, 245, 246, - 247, 248, 250, 252, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 271, - 272, 273, 275, 276, 278, 283, 287, 296, 297, 298, - 299, 300, 301, 304, 305, 307, 308, 309, 310, 312, - 313, 314, 316, 317, 319, 321, 322, 325, 326, 328, - 331, 332, 333, 334, 335, 337, 339, 341, 342, 344, - 345, 354, 356, 357, 358, 359, 360, 362, 363, 364, - 366, 370, 387, 394, 399, 407, 408, 413, 414, 417, - 422, 426 + 0, 99, 99, 100, 102, 109, 115, 121, 127, 133, + 139, 140, 143, 154, 158, 167, 170, 171, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 187, 189, 191, 193, 195, 197, 199, 202, 210, 213, + 216, 220, 221, 222, 225, 226, 227, 228, 229, 231, + 232, 234, 235, 237, 239, 242, 243, 244, 246, 247, + 248, 249, 251, 253, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 272, + 273, 274, 276, 277, 279, 284, 288, 297, 298, 299, + 300, 301, 302, 305, 306, 308, 309, 310, 311, 313, + 314, 315, 317, 318, 320, 322, 323, 326, 327, 329, + 332, 333, 334, 335, 336, 338, 340, 342, 343, 345, + 346, 355, 357, 358, 359, 360, 361, 363, 364, 365, + 367, 371, 388, 395, 400, 408, 409, 414, 415, 418, + 423, 427 }; #endif @@ -1711,91 +1712,91 @@ yyparse (void) switch (yyn) { case 3: /* program: program function_def */ -#line 99 "lrparser.y" +#line 100 "lrparser.y" {/* printf("LIST SIZE %d",frontEndContext.getFuncList().size()) ;*/ } -#line 1717 "y.tab.c" +#line 1718 "y.tab.c" break; case 4: /* function_def: function_data function_body */ -#line 101 "lrparser.y" +#line 102 "lrparser.y" { Function* func=(Function*)(yyvsp[-1].node); blockStatement* block=(blockStatement*)(yyvsp[0].node); func->setBlockStatement(block); Util::addFuncToList(func); } -#line 1728 "y.tab.c" +#line 1729 "y.tab.c" break; case 5: /* function_data: T_FUNC id '(' paramList ')' */ -#line 108 "lrparser.y" +#line 109 "lrparser.y" { (yyval.node)=Util::createFuncNode((yyvsp[-3].node),(yyvsp[-1].pList)->PList); Util::setCurrentFuncType(GEN_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1739 "y.tab.c" +#line 1740 "y.tab.c" break; case 6: /* function_data: T_STATIC id '(' paramList ')' */ -#line 114 "lrparser.y" +#line 115 "lrparser.y" { (yyval.node)=Util::createStaticFuncNode((yyvsp[-3].node),(yyvsp[-1].pList)->PList); Util::setCurrentFuncType(STATIC_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1750 "y.tab.c" +#line 1751 "y.tab.c" break; case 7: /* function_data: T_INCREMENTAL '(' paramList ')' */ -#line 120 "lrparser.y" +#line 121 "lrparser.y" { (yyval.node)=Util::createIncrementalNode((yyvsp[-1].pList)->PList); Util::setCurrentFuncType(INCREMENTAL_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1761 "y.tab.c" +#line 1762 "y.tab.c" break; case 8: /* function_data: T_DECREMENTAL '(' paramList ')' */ -#line 126 "lrparser.y" +#line 127 "lrparser.y" { (yyval.node)=Util::createDecrementalNode((yyvsp[-1].pList)->PList); Util::setCurrentFuncType(DECREMENTAL_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1772 "y.tab.c" +#line 1773 "y.tab.c" break; case 9: /* function_data: T_DYNAMIC id '(' paramList ')' */ -#line 132 "lrparser.y" +#line 133 "lrparser.y" { (yyval.node)=Util::createDynamicFuncNode((yyvsp[-3].node),(yyvsp[-1].pList)->PList); Util::setCurrentFuncType(DYNAMIC_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1782 "y.tab.c" +#line 1783 "y.tab.c" break; case 10: /* paramList: param */ -#line 138 "lrparser.y" +#line 139 "lrparser.y" {(yyval.pList)=Util::createPList((yyvsp[0].node));} -#line 1788 "y.tab.c" +#line 1789 "y.tab.c" break; case 11: /* paramList: param ',' paramList */ -#line 139 "lrparser.y" +#line 140 "lrparser.y" {(yyval.pList)=Util::addToPList((yyvsp[0].pList),(yyvsp[-2].node)); } -#line 1795 "y.tab.c" +#line 1796 "y.tab.c" break; case 12: /* param: type1 id */ -#line 142 "lrparser.y" +#line 143 "lrparser.y" { //Identifier* id=(Identifier*)Util::createIdentifierNode($2); Type* type=(Type*)(yyvsp[-1].node); Identifier* id=(Identifier*)(yyvsp[0].node); @@ -1807,20 +1808,20 @@ yyparse (void) } printf("\n"); (yyval.node)=Util::createParamNode((yyvsp[-1].node),(yyvsp[0].node)); } -#line 1811 "y.tab.c" +#line 1812 "y.tab.c" break; case 13: /* param: type2 id */ -#line 153 "lrparser.y" +#line 154 "lrparser.y" { // Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createParamNode((yyvsp[-1].node),(yyvsp[0].node));} -#line 1820 "y.tab.c" +#line 1821 "y.tab.c" break; case 14: /* param: type2 id '(' id ')' */ -#line 157 "lrparser.y" +#line 158 "lrparser.y" { // Identifier* id1=(Identifier*)Util::createIdentifierNode($4); //Identifier* id=(Identifier*)Util::createIdentifierNode($2); Type* tempType=(Type*)(yyvsp[-4].node); @@ -1828,137 +1829,137 @@ yyparse (void) tempType->addSourceGraph((yyvsp[-1].node)); (yyval.node)=Util::createParamNode(tempType,(yyvsp[-3].node)); } -#line 1832 "y.tab.c" +#line 1833 "y.tab.c" break; case 15: /* function_body: blockstatements */ -#line 166 "lrparser.y" +#line 167 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 1838 "y.tab.c" +#line 1839 "y.tab.c" break; case 16: /* statements: %empty */ -#line 169 "lrparser.y" +#line 170 "lrparser.y" {} -#line 1844 "y.tab.c" +#line 1845 "y.tab.c" break; case 17: /* statements: statements statement */ -#line 170 "lrparser.y" +#line 171 "lrparser.y" { Util::addToBlock((yyvsp[0].node)); } -#line 1850 "y.tab.c" +#line 1851 "y.tab.c" break; case 18: /* statement: declaration ';' */ -#line 172 "lrparser.y" +#line 173 "lrparser.y" {(yyval.node)=(yyvsp[-1].node);} -#line 1856 "y.tab.c" +#line 1857 "y.tab.c" break; case 19: /* statement: assignment ';' */ -#line 173 "lrparser.y" +#line 174 "lrparser.y" {(yyval.node)=(yyvsp[-1].node);} -#line 1862 "y.tab.c" +#line 1863 "y.tab.c" break; case 20: /* statement: proc_call ';' */ -#line 174 "lrparser.y" +#line 175 "lrparser.y" {(yyval.node)=Util::createNodeForProcCallStmt((yyvsp[-1].node));} -#line 1868 "y.tab.c" +#line 1869 "y.tab.c" break; case 21: /* statement: control_flow */ -#line 175 "lrparser.y" +#line 176 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 1874 "y.tab.c" +#line 1875 "y.tab.c" break; case 22: /* statement: reduction ';' */ -#line 176 "lrparser.y" +#line 177 "lrparser.y" {(yyval.node)=(yyvsp[-1].node);} -#line 1880 "y.tab.c" +#line 1881 "y.tab.c" break; case 23: /* statement: bfs_abstraction */ -#line 177 "lrparser.y" +#line 178 "lrparser.y" {(yyval.node)=(yyvsp[0].node); } -#line 1886 "y.tab.c" +#line 1887 "y.tab.c" break; case 24: /* statement: blockstatements */ -#line 178 "lrparser.y" +#line 179 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 1892 "y.tab.c" +#line 1893 "y.tab.c" break; case 25: /* statement: unary_expr ';' */ -#line 179 "lrparser.y" +#line 180 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryStatements((yyvsp[-1].node));} -#line 1898 "y.tab.c" +#line 1899 "y.tab.c" break; case 26: /* statement: return_stmt ';' */ -#line 180 "lrparser.y" +#line 181 "lrparser.y" {(yyval.node) = (yyvsp[-1].node) ;} -#line 1904 "y.tab.c" +#line 1905 "y.tab.c" break; case 27: /* statement: batch_blockstmt */ -#line 181 "lrparser.y" +#line 182 "lrparser.y" {(yyval.node) = (yyvsp[0].node);} -#line 1910 "y.tab.c" +#line 1911 "y.tab.c" break; case 28: /* statement: on_add_blockstmt */ -#line 182 "lrparser.y" +#line 183 "lrparser.y" {(yyval.node) = (yyvsp[0].node);} -#line 1916 "y.tab.c" +#line 1917 "y.tab.c" break; case 29: /* statement: on_delete_blockstmt */ -#line 183 "lrparser.y" +#line 184 "lrparser.y" {(yyval.node) = (yyvsp[0].node);} -#line 1922 "y.tab.c" +#line 1923 "y.tab.c" break; case 30: /* blockstatements: block_begin statements block_end */ -#line 186 "lrparser.y" +#line 187 "lrparser.y" { (yyval.node)=Util::finishBlock();} -#line 1928 "y.tab.c" +#line 1929 "y.tab.c" break; case 31: /* batch_blockstmt: T_BATCH '(' id ':' expression ')' blockstatements */ -#line 188 "lrparser.y" +#line 189 "lrparser.y" {(yyval.node) = Util::createBatchBlockStmt((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node));} -#line 1934 "y.tab.c" +#line 1935 "y.tab.c" break; case 32: /* on_add_blockstmt: T_ONADD '(' id T_IN id '.' proc_call ')' ':' blockstatements */ -#line 190 "lrparser.y" +#line 191 "lrparser.y" {(yyval.node) = Util::createOnAddBlock((yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node));} -#line 1940 "y.tab.c" +#line 1941 "y.tab.c" break; case 33: /* on_delete_blockstmt: T_ONDELETE '(' id T_IN id '.' proc_call ')' ':' blockstatements */ -#line 192 "lrparser.y" +#line 193 "lrparser.y" {(yyval.node) = Util::createOnDeleteBlock((yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node));} -#line 1946 "y.tab.c" +#line 1947 "y.tab.c" break; case 34: /* block_begin: '{' */ -#line 194 "lrparser.y" +#line 195 "lrparser.y" { Util::createNewBlock(); } -#line 1952 "y.tab.c" +#line 1953 "y.tab.c" break; case 36: /* return_stmt: T_RETURN expression */ -#line 198 "lrparser.y" +#line 199 "lrparser.y" {(yyval.node) = Util::createReturnStatementNode((yyvsp[0].node));} -#line 1958 "y.tab.c" +#line 1959 "y.tab.c" break; case 37: /* declaration: type1 id */ -#line 201 "lrparser.y" +#line 202 "lrparser.y" { Type* type=(Type*)(yyvsp[-1].node); Identifier* id=(Identifier*)(yyvsp[0].node); @@ -1967,596 +1968,596 @@ yyparse (void) Util::storeGraphId(id); (yyval.node)=Util::createNormalDeclNode((yyvsp[-1].node),(yyvsp[0].node));} -#line 1971 "y.tab.c" +#line 1972 "y.tab.c" break; case 38: /* declaration: type1 id '=' rhs */ -#line 209 "lrparser.y" +#line 210 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createAssignedDeclNode((yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node));} -#line 1979 "y.tab.c" +#line 1980 "y.tab.c" break; case 39: /* declaration: type2 id */ -#line 212 "lrparser.y" +#line 213 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createNormalDeclNode((yyvsp[-1].node),(yyvsp[0].node)); } -#line 1987 "y.tab.c" +#line 1988 "y.tab.c" break; case 40: /* declaration: type2 id '=' rhs */ -#line 215 "lrparser.y" +#line 216 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createAssignedDeclNode((yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node));} -#line 1995 "y.tab.c" +#line 1996 "y.tab.c" break; case 41: /* type1: primitive */ -#line 219 "lrparser.y" +#line 220 "lrparser.y" {(yyval.node)=(yyvsp[0].node); } -#line 2001 "y.tab.c" +#line 2002 "y.tab.c" break; case 42: /* type1: graph */ -#line 220 "lrparser.y" +#line 221 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2007 "y.tab.c" +#line 2008 "y.tab.c" break; case 43: /* type1: collections */ -#line 221 "lrparser.y" +#line 222 "lrparser.y" { (yyval.node)=(yyvsp[0].node);} -#line 2013 "y.tab.c" +#line 2014 "y.tab.c" break; case 44: /* primitive: T_INT */ -#line 224 "lrparser.y" +#line 225 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_INT);} -#line 2019 "y.tab.c" +#line 2020 "y.tab.c" break; case 45: /* primitive: T_FLOAT */ -#line 225 "lrparser.y" +#line 226 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_FLOAT);} -#line 2025 "y.tab.c" +#line 2026 "y.tab.c" break; case 46: /* primitive: T_BOOL */ -#line 226 "lrparser.y" +#line 227 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_BOOL);} -#line 2031 "y.tab.c" +#line 2032 "y.tab.c" break; case 47: /* primitive: T_DOUBLE */ -#line 227 "lrparser.y" +#line 228 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_DOUBLE); } -#line 2037 "y.tab.c" +#line 2038 "y.tab.c" break; case 48: /* primitive: T_LONG */ -#line 228 "lrparser.y" +#line 229 "lrparser.y" {(yyval.node)=(yyval.node)=Util::createPrimitiveTypeNode(TYPE_LONG);} -#line 2043 "y.tab.c" +#line 2044 "y.tab.c" break; case 49: /* graph: T_GRAPH */ -#line 230 "lrparser.y" +#line 231 "lrparser.y" { (yyval.node)=Util::createGraphTypeNode(TYPE_GRAPH,NULL);} -#line 2049 "y.tab.c" +#line 2050 "y.tab.c" break; case 50: /* graph: T_DIR_GRAPH */ -#line 231 "lrparser.y" +#line 232 "lrparser.y" {(yyval.node)=Util::createGraphTypeNode(TYPE_DIRGRAPH,NULL);} -#line 2055 "y.tab.c" +#line 2056 "y.tab.c" break; case 51: /* collections: T_LIST */ -#line 233 "lrparser.y" +#line 234 "lrparser.y" { (yyval.node)=Util::createCollectionTypeNode(TYPE_LIST,NULL);} -#line 2061 "y.tab.c" +#line 2062 "y.tab.c" break; case 52: /* collections: T_SET_NODES '<' id '>' */ -#line 234 "lrparser.y" +#line 235 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($3); (yyval.node)=Util::createCollectionTypeNode(TYPE_SETN,(yyvsp[-1].node));} -#line 2068 "y.tab.c" +#line 2069 "y.tab.c" break; case 53: /* collections: T_SET_EDGES '<' id '>' */ -#line 236 "lrparser.y" +#line 237 "lrparser.y" {// Identifier* id=(Identifier*)Util::createIdentifierNode($3); (yyval.node)=Util::createCollectionTypeNode(TYPE_SETE,(yyvsp[-1].node));} -#line 2075 "y.tab.c" +#line 2076 "y.tab.c" break; case 54: /* collections: T_UPDATES '<' id '>' */ -#line 238 "lrparser.y" +#line 239 "lrparser.y" { (yyval.node)=Util::createCollectionTypeNode(TYPE_UPDATES,(yyvsp[-1].node));} -#line 2081 "y.tab.c" +#line 2082 "y.tab.c" break; case 55: /* type2: T_NODE */ -#line 241 "lrparser.y" +#line 242 "lrparser.y" {(yyval.node)=Util::createNodeEdgeTypeNode(TYPE_NODE) ;} -#line 2087 "y.tab.c" +#line 2088 "y.tab.c" break; case 56: /* type2: T_EDGE */ -#line 242 "lrparser.y" +#line 243 "lrparser.y" {(yyval.node)=Util::createNodeEdgeTypeNode(TYPE_EDGE);} -#line 2093 "y.tab.c" +#line 2094 "y.tab.c" break; case 57: /* type2: property */ -#line 243 "lrparser.y" +#line 244 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2099 "y.tab.c" +#line 2100 "y.tab.c" break; case 58: /* property: T_NP '<' primitive '>' */ -#line 245 "lrparser.y" +#line 246 "lrparser.y" { (yyval.node)=Util::createPropertyTypeNode(TYPE_PROPNODE,(yyvsp[-1].node)); } -#line 2105 "y.tab.c" +#line 2106 "y.tab.c" break; case 59: /* property: T_EP '<' primitive '>' */ -#line 246 "lrparser.y" +#line 247 "lrparser.y" { (yyval.node)=Util::createPropertyTypeNode(TYPE_PROPEDGE,(yyvsp[-1].node)); } -#line 2111 "y.tab.c" +#line 2112 "y.tab.c" break; case 60: /* property: T_NP '<' collections '>' */ -#line 247 "lrparser.y" +#line 248 "lrparser.y" { (yyval.node)=Util::createPropertyTypeNode(TYPE_PROPNODE,(yyvsp[-1].node)); } -#line 2117 "y.tab.c" +#line 2118 "y.tab.c" break; case 61: /* property: T_EP '<' collections '>' */ -#line 248 "lrparser.y" +#line 249 "lrparser.y" {(yyval.node)=Util::createPropertyTypeNode(TYPE_PROPEDGE,(yyvsp[-1].node));} -#line 2123 "y.tab.c" +#line 2124 "y.tab.c" break; case 62: /* assignment: leftSide '=' rhs */ -#line 250 "lrparser.y" +#line 251 "lrparser.y" { (yyval.node)=Util::createAssignmentNode((yyvsp[-2].node),(yyvsp[0].node));} -#line 2129 "y.tab.c" +#line 2130 "y.tab.c" break; case 63: /* rhs: expression */ -#line 252 "lrparser.y" +#line 253 "lrparser.y" { (yyval.node)=(yyvsp[0].node);} -#line 2135 "y.tab.c" +#line 2136 "y.tab.c" break; case 64: /* expression: proc_call */ -#line 254 "lrparser.y" +#line 255 "lrparser.y" { (yyval.node)=(yyvsp[0].node);} -#line 2141 "y.tab.c" +#line 2142 "y.tab.c" break; case 65: /* expression: expression '+' expression */ -#line 255 "lrparser.y" +#line 256 "lrparser.y" { (yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_ADD);} -#line 2147 "y.tab.c" +#line 2148 "y.tab.c" break; case 66: /* expression: expression '-' expression */ -#line 256 "lrparser.y" +#line 257 "lrparser.y" { (yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_SUB);} -#line 2153 "y.tab.c" +#line 2154 "y.tab.c" break; case 67: /* expression: expression '*' expression */ -#line 257 "lrparser.y" +#line 258 "lrparser.y" {(yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_MUL);} -#line 2159 "y.tab.c" +#line 2160 "y.tab.c" break; case 68: /* expression: expression '/' expression */ -#line 258 "lrparser.y" +#line 259 "lrparser.y" {(yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_DIV);} -#line 2165 "y.tab.c" +#line 2166 "y.tab.c" break; case 69: /* expression: expression T_AND_OP expression */ -#line 259 "lrparser.y" +#line 260 "lrparser.y" {(yyval.node)=Util::createNodeForLogicalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_AND);} -#line 2171 "y.tab.c" +#line 2172 "y.tab.c" break; case 70: /* expression: expression T_OR_OP expression */ -#line 260 "lrparser.y" +#line 261 "lrparser.y" {(yyval.node)=Util::createNodeForLogicalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_OR);} -#line 2177 "y.tab.c" +#line 2178 "y.tab.c" break; case 71: /* expression: expression T_LE_OP expression */ -#line 261 "lrparser.y" +#line 262 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_LE);} -#line 2183 "y.tab.c" +#line 2184 "y.tab.c" break; case 72: /* expression: expression T_GE_OP expression */ -#line 262 "lrparser.y" +#line 263 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_GE);} -#line 2189 "y.tab.c" +#line 2190 "y.tab.c" break; case 73: /* expression: expression '<' expression */ -#line 263 "lrparser.y" +#line 264 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_LT);} -#line 2195 "y.tab.c" +#line 2196 "y.tab.c" break; case 74: /* expression: expression '>' expression */ -#line 264 "lrparser.y" +#line 265 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_GT);} -#line 2201 "y.tab.c" +#line 2202 "y.tab.c" break; case 75: /* expression: expression T_EQ_OP expression */ -#line 265 "lrparser.y" +#line 266 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_EQ);} -#line 2207 "y.tab.c" +#line 2208 "y.tab.c" break; case 76: /* expression: expression T_NE_OP expression */ -#line 266 "lrparser.y" +#line 267 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_NE);} -#line 2213 "y.tab.c" +#line 2214 "y.tab.c" break; case 77: /* expression: '!' expression */ -#line 267 "lrparser.y" +#line 268 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryExpr((yyvsp[0].node),OPERATOR_NOT);} -#line 2219 "y.tab.c" +#line 2220 "y.tab.c" break; case 78: /* expression: '(' expression ')' */ -#line 268 "lrparser.y" +#line 269 "lrparser.y" { Expression* expr=(Expression*)(yyvsp[-1].node); expr->setEnclosedBrackets(); (yyval.node)=expr;} -#line 2227 "y.tab.c" +#line 2228 "y.tab.c" break; case 79: /* expression: val */ -#line 271 "lrparser.y" +#line 272 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2233 "y.tab.c" +#line 2234 "y.tab.c" break; case 80: /* expression: leftSide */ -#line 272 "lrparser.y" +#line 273 "lrparser.y" { (yyval.node)=Util::createNodeForId((yyvsp[0].node));} -#line 2239 "y.tab.c" +#line 2240 "y.tab.c" break; case 81: /* expression: unary_expr */ -#line 273 "lrparser.y" +#line 274 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2245 "y.tab.c" +#line 2246 "y.tab.c" break; case 82: /* unary_expr: expression T_INC_OP */ -#line 275 "lrparser.y" +#line 276 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryExpr((yyvsp[-1].node),OPERATOR_INC);} -#line 2251 "y.tab.c" +#line 2252 "y.tab.c" break; case 83: /* unary_expr: expression T_DEC_OP */ -#line 276 "lrparser.y" +#line 277 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryExpr((yyvsp[-1].node),OPERATOR_DEC);} -#line 2257 "y.tab.c" +#line 2258 "y.tab.c" break; case 84: /* proc_call: leftSide '(' arg_list ')' */ -#line 278 "lrparser.y" +#line 279 "lrparser.y" { (yyval.node) = Util::createNodeForProcCall((yyvsp[-3].node),(yyvsp[-1].aList)->AList); } -#line 2267 "y.tab.c" +#line 2268 "y.tab.c" break; case 85: /* proc_call: T_INCREMENTAL '(' arg_list ')' */ -#line 283 "lrparser.y" +#line 284 "lrparser.y" { ASTNode* id = Util::createIdentifierNode("Incremental"); (yyval.node) = Util::createNodeForProcCall(id, (yyvsp[-1].aList)->AList); } -#line 2276 "y.tab.c" +#line 2277 "y.tab.c" break; case 86: /* proc_call: T_DECREMENTAL '(' arg_list ')' */ -#line 287 "lrparser.y" +#line 288 "lrparser.y" { ASTNode* id = Util::createIdentifierNode("Decremental"); (yyval.node) = Util::createNodeForProcCall(id, (yyvsp[-1].aList)->AList); } -#line 2285 "y.tab.c" +#line 2286 "y.tab.c" break; case 87: /* val: INT_NUM */ -#line 296 "lrparser.y" +#line 297 "lrparser.y" { (yyval.node) = Util::createNodeForIval((yyvsp[0].ival)); } -#line 2291 "y.tab.c" +#line 2292 "y.tab.c" break; case 88: /* val: FLOAT_NUM */ -#line 297 "lrparser.y" +#line 298 "lrparser.y" {(yyval.node) = Util::createNodeForFval((yyvsp[0].fval));} -#line 2297 "y.tab.c" +#line 2298 "y.tab.c" break; case 89: /* val: BOOL_VAL */ -#line 298 "lrparser.y" +#line 299 "lrparser.y" { (yyval.node) = Util::createNodeForBval((yyvsp[0].bval));} -#line 2303 "y.tab.c" +#line 2304 "y.tab.c" break; case 90: /* val: T_INF */ -#line 299 "lrparser.y" +#line 300 "lrparser.y" {(yyval.node)=Util::createNodeForINF(true);} -#line 2309 "y.tab.c" +#line 2310 "y.tab.c" break; case 91: /* val: T_P_INF */ -#line 300 "lrparser.y" +#line 301 "lrparser.y" {(yyval.node)=Util::createNodeForINF(true);} -#line 2315 "y.tab.c" +#line 2316 "y.tab.c" break; case 92: /* val: T_N_INF */ -#line 301 "lrparser.y" +#line 302 "lrparser.y" {(yyval.node)=Util::createNodeForINF(false);} -#line 2321 "y.tab.c" +#line 2322 "y.tab.c" break; case 93: /* control_flow: selection_cf */ -#line 304 "lrparser.y" +#line 305 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2327 "y.tab.c" +#line 2328 "y.tab.c" break; case 94: /* control_flow: iteration_cf */ -#line 305 "lrparser.y" +#line 306 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2333 "y.tab.c" +#line 2334 "y.tab.c" break; case 95: /* iteration_cf: T_FIXEDPOINT T_UNTIL '(' id ':' expression ')' blockstatements */ -#line 307 "lrparser.y" +#line 308 "lrparser.y" { (yyval.node)=Util::createNodeForFixedPointStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node));} -#line 2339 "y.tab.c" +#line 2340 "y.tab.c" break; case 96: /* iteration_cf: T_WHILE '(' boolean_expr ')' blockstatements */ -#line 308 "lrparser.y" +#line 309 "lrparser.y" {(yyval.node)=Util::createNodeForWhileStmt((yyvsp[-2].node),(yyvsp[0].node)); } -#line 2345 "y.tab.c" +#line 2346 "y.tab.c" break; case 97: /* iteration_cf: T_DO blockstatements T_WHILE '(' boolean_expr ')' ';' */ -#line 309 "lrparser.y" +#line 310 "lrparser.y" {(yyval.node)=Util::createNodeForDoWhileStmt((yyvsp[-2].node),(yyvsp[-5].node)); } -#line 2351 "y.tab.c" +#line 2352 "y.tab.c" break; case 98: /* iteration_cf: T_FORALL '(' id T_IN id '.' proc_call filterExpr ')' blockstatements */ -#line 310 "lrparser.y" +#line 311 "lrparser.y" { (yyval.node)=Util::createNodeForForAllStmt((yyvsp[-7].node),(yyvsp[-5].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node),true);} -#line 2358 "y.tab.c" +#line 2359 "y.tab.c" break; case 99: /* iteration_cf: T_FORALL '(' id T_IN leftSide ')' blockstatements */ -#line 312 "lrparser.y" +#line 313 "lrparser.y" { (yyval.node)=Util::createNodeForForStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node),true);} -#line 2364 "y.tab.c" +#line 2365 "y.tab.c" break; case 100: /* iteration_cf: T_FOR '(' id T_IN leftSide ')' blockstatements */ -#line 313 "lrparser.y" +#line 314 "lrparser.y" { (yyval.node)=Util::createNodeForForStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node),false);} -#line 2370 "y.tab.c" +#line 2371 "y.tab.c" break; case 101: /* iteration_cf: T_FOR '(' id T_IN id '.' proc_call filterExpr ')' blockstatements */ -#line 314 "lrparser.y" +#line 315 "lrparser.y" {(yyval.node)=Util::createNodeForForAllStmt((yyvsp[-7].node),(yyvsp[-5].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node),false);} -#line 2376 "y.tab.c" +#line 2377 "y.tab.c" break; case 102: /* filterExpr: %empty */ -#line 316 "lrparser.y" +#line 317 "lrparser.y" { (yyval.node)=NULL;} -#line 2382 "y.tab.c" +#line 2383 "y.tab.c" break; case 103: /* filterExpr: '.' T_FILTER '(' boolean_expr ')' */ -#line 317 "lrparser.y" +#line 318 "lrparser.y" { (yyval.node)=(yyvsp[-1].node);} -#line 2388 "y.tab.c" +#line 2389 "y.tab.c" break; case 104: /* boolean_expr: expression */ -#line 319 "lrparser.y" +#line 320 "lrparser.y" { (yyval.node)=(yyvsp[0].node) ;} -#line 2394 "y.tab.c" +#line 2395 "y.tab.c" break; case 105: /* selection_cf: T_IF '(' boolean_expr ')' statement */ -#line 321 "lrparser.y" +#line 322 "lrparser.y" { (yyval.node)=Util::createNodeForIfStmt((yyvsp[-2].node),(yyvsp[0].node),NULL); } -#line 2400 "y.tab.c" +#line 2401 "y.tab.c" break; case 106: /* selection_cf: T_IF '(' boolean_expr ')' statement T_ELSE statement */ -#line 322 "lrparser.y" +#line 323 "lrparser.y" {(yyval.node)=Util::createNodeForIfStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node)); } -#line 2406 "y.tab.c" +#line 2407 "y.tab.c" break; case 107: /* reduction: leftSide '=' reductionCall */ -#line 325 "lrparser.y" +#line 326 "lrparser.y" { (yyval.node)=Util::createNodeForReductionStmt((yyvsp[-2].node),(yyvsp[0].node)) ;} -#line 2412 "y.tab.c" +#line 2413 "y.tab.c" break; case 108: /* reduction: '<' leftList '>' '=' '<' reductionCall ',' rightList '>' */ -#line 326 "lrparser.y" +#line 327 "lrparser.y" { reductionCall* reduc=(reductionCall*)(yyvsp[-3].node); (yyval.node)=Util::createNodeForReductionStmtList((yyvsp[-7].nodeList)->ASTNList,reduc,(yyvsp[-1].nodeList)->ASTNList);} -#line 2419 "y.tab.c" +#line 2420 "y.tab.c" break; case 109: /* reduction: leftSide reduce_op expression */ -#line 328 "lrparser.y" +#line 329 "lrparser.y" {(yyval.node)=Util::createNodeForReductionOpStmt((yyvsp[-2].node),(yyvsp[-1].ival),(yyvsp[0].node));} -#line 2425 "y.tab.c" +#line 2426 "y.tab.c" break; case 110: /* reduce_op: T_ADD_ASSIGN */ -#line 331 "lrparser.y" +#line 332 "lrparser.y" {(yyval.ival)=OPERATOR_ADDASSIGN;} -#line 2431 "y.tab.c" +#line 2432 "y.tab.c" break; case 111: /* reduce_op: T_MUL_ASSIGN */ -#line 332 "lrparser.y" +#line 333 "lrparser.y" {(yyval.ival)=OPERATOR_MULASSIGN;} -#line 2437 "y.tab.c" +#line 2438 "y.tab.c" break; case 112: /* reduce_op: T_OR_ASSIGN */ -#line 333 "lrparser.y" +#line 334 "lrparser.y" {(yyval.ival)=OPERATOR_ORASSIGN;} -#line 2443 "y.tab.c" +#line 2444 "y.tab.c" break; case 113: /* reduce_op: T_AND_ASSIGN */ -#line 334 "lrparser.y" +#line 335 "lrparser.y" {(yyval.ival)=OPERATOR_ANDASSIGN;} -#line 2449 "y.tab.c" +#line 2450 "y.tab.c" break; case 114: /* reduce_op: T_SUB_ASSIGN */ -#line 335 "lrparser.y" +#line 336 "lrparser.y" {(yyval.ival)=OPERATOR_SUBASSIGN;} -#line 2455 "y.tab.c" +#line 2456 "y.tab.c" break; case 115: /* leftList: leftSide ',' leftList */ -#line 337 "lrparser.y" +#line 338 "lrparser.y" { (yyval.nodeList)=Util::addToNList((yyvsp[0].nodeList),(yyvsp[-2].node)); } -#line 2462 "y.tab.c" +#line 2463 "y.tab.c" break; case 116: /* leftList: leftSide */ -#line 339 "lrparser.y" +#line 340 "lrparser.y" { (yyval.nodeList)=Util::createNList((yyvsp[0].node));} -#line 2468 "y.tab.c" +#line 2469 "y.tab.c" break; case 117: /* rightList: val ',' rightList */ -#line 341 "lrparser.y" +#line 342 "lrparser.y" { (yyval.nodeList)=Util::addToNList((yyvsp[0].nodeList),(yyvsp[-2].node));} -#line 2474 "y.tab.c" +#line 2475 "y.tab.c" break; case 118: /* rightList: leftSide ',' rightList */ -#line 342 "lrparser.y" +#line 343 "lrparser.y" { ASTNode* node = Util::createNodeForId((yyvsp[-2].node)); (yyval.nodeList)=Util::addToNList((yyvsp[0].nodeList),node);} -#line 2481 "y.tab.c" +#line 2482 "y.tab.c" break; case 119: /* rightList: val */ -#line 344 "lrparser.y" +#line 345 "lrparser.y" { (yyval.nodeList)=Util::createNList((yyvsp[0].node));} -#line 2487 "y.tab.c" +#line 2488 "y.tab.c" break; case 120: /* rightList: leftSide */ -#line 345 "lrparser.y" +#line 346 "lrparser.y" { ASTNode* node = Util::createNodeForId((yyvsp[0].node)); (yyval.nodeList)=Util::createNList(node);} -#line 2494 "y.tab.c" +#line 2495 "y.tab.c" break; case 121: /* reductionCall: reduction_calls '(' arg_list ')' */ -#line 354 "lrparser.y" +#line 355 "lrparser.y" {(yyval.node)=Util::createNodeforReductionCall((yyvsp[-3].ival),(yyvsp[-1].aList)->AList);} -#line 2500 "y.tab.c" +#line 2501 "y.tab.c" break; case 122: /* reduction_calls: T_SUM */ -#line 356 "lrparser.y" +#line 357 "lrparser.y" { (yyval.ival)=REDUCE_SUM;} -#line 2506 "y.tab.c" +#line 2507 "y.tab.c" break; case 123: /* reduction_calls: T_COUNT */ -#line 357 "lrparser.y" +#line 358 "lrparser.y" {(yyval.ival)=REDUCE_COUNT;} -#line 2512 "y.tab.c" +#line 2513 "y.tab.c" break; case 124: /* reduction_calls: T_PRODUCT */ -#line 358 "lrparser.y" +#line 359 "lrparser.y" {(yyval.ival)=REDUCE_PRODUCT;} -#line 2518 "y.tab.c" +#line 2519 "y.tab.c" break; case 125: /* reduction_calls: T_MAX */ -#line 359 "lrparser.y" +#line 360 "lrparser.y" {(yyval.ival)=REDUCE_MAX;} -#line 2524 "y.tab.c" +#line 2525 "y.tab.c" break; case 126: /* reduction_calls: T_MIN */ -#line 360 "lrparser.y" +#line 361 "lrparser.y" {(yyval.ival)=REDUCE_MIN;} -#line 2530 "y.tab.c" +#line 2531 "y.tab.c" break; case 127: /* leftSide: id */ -#line 362 "lrparser.y" +#line 363 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2536 "y.tab.c" +#line 2537 "y.tab.c" break; case 128: /* leftSide: oid */ -#line 363 "lrparser.y" +#line 364 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2542 "y.tab.c" +#line 2543 "y.tab.c" break; case 129: /* leftSide: tid */ -#line 364 "lrparser.y" +#line 365 "lrparser.y" {(yyval.node) = (yyvsp[0].node); } -#line 2548 "y.tab.c" +#line 2549 "y.tab.c" break; case 130: /* arg_list: %empty */ -#line 366 "lrparser.y" +#line 367 "lrparser.y" { argList* aList=new argList(); (yyval.aList)=aList; } -#line 2556 "y.tab.c" +#line 2557 "y.tab.c" break; case 131: /* arg_list: assignment ',' arg_list */ -#line 370 "lrparser.y" +#line 371 "lrparser.y" {argument* a1=new argument(); assignment* assign=(assignment*)(yyvsp[-2].node); a1->setAssign(assign); @@ -2572,11 +2573,11 @@ yyparse (void) */ } -#line 2576 "y.tab.c" +#line 2577 "y.tab.c" break; case 132: /* arg_list: expression ',' arg_list */ -#line 387 "lrparser.y" +#line 388 "lrparser.y" {argument* a1=new argument(); Expression* expr=(Expression*)(yyvsp[-2].node); a1->setExpression(expr); @@ -2584,85 +2585,85 @@ yyparse (void) // a1->expressionflag=true; (yyval.aList)=Util::addToAList((yyvsp[0].aList),a1); } -#line 2588 "y.tab.c" +#line 2589 "y.tab.c" break; case 133: /* arg_list: expression */ -#line 394 "lrparser.y" +#line 395 "lrparser.y" {argument* a1=new argument(); Expression* expr=(Expression*)(yyvsp[0].node); a1->setExpression(expr); a1->setExpressionFlag(); (yyval.aList)=Util::createAList(a1); } -#line 2598 "y.tab.c" +#line 2599 "y.tab.c" break; case 134: /* arg_list: assignment */ -#line 399 "lrparser.y" +#line 400 "lrparser.y" { argument* a1=new argument(); assignment* assign=(assignment*)(yyvsp[0].node); a1->setAssign(assign); a1->setAssignFlag(); (yyval.aList)=Util::createAList(a1); } -#line 2609 "y.tab.c" +#line 2610 "y.tab.c" break; case 135: /* bfs_abstraction: T_BFS '(' id T_IN id '.' proc_call T_FROM id ')' filterExpr blockstatements reverse_abstraction */ -#line 407 "lrparser.y" +#line 408 "lrparser.y" {(yyval.node)=Util::createIterateInBFSNode((yyvsp[-10].node),(yyvsp[-8].node),(yyvsp[-6].node),(yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)) ;} -#line 2615 "y.tab.c" +#line 2616 "y.tab.c" break; case 136: /* bfs_abstraction: T_BFS '(' id T_IN id '.' proc_call T_FROM id ')' filterExpr blockstatements */ -#line 408 "lrparser.y" +#line 409 "lrparser.y" {//$$=Util::createIterateInBFSNode($3,$6,$8,$9,$10) ; } -#line 2622 "y.tab.c" +#line 2623 "y.tab.c" break; case 137: /* reverse_abstraction: T_REVERSE blockstatements */ -#line 413 "lrparser.y" +#line 414 "lrparser.y" {(yyval.node)=Util::createIterateInReverseBFSNode(NULL,(yyvsp[0].node));} -#line 2628 "y.tab.c" +#line 2629 "y.tab.c" break; case 138: /* reverse_abstraction: T_REVERSE '(' boolean_expr ')' blockstatements */ -#line 414 "lrparser.y" +#line 415 "lrparser.y" {(yyval.node)=Util::createIterateInReverseBFSNode((yyvsp[-2].node),(yyvsp[0].node));} -#line 2634 "y.tab.c" +#line 2635 "y.tab.c" break; case 139: /* oid: id '.' id */ -#line 417 "lrparser.y" +#line 418 "lrparser.y" { //Identifier* id1=(Identifier*)Util::createIdentifierNode($1); // Identifier* id2=(Identifier*)Util::createIdentifierNode($1); (yyval.node)=Util::createPropIdNode((yyvsp[-2].node),(yyvsp[0].node)); } -#line 2643 "y.tab.c" +#line 2644 "y.tab.c" break; case 140: /* tid: id '.' id '.' id */ -#line 422 "lrparser.y" +#line 423 "lrparser.y" {// Identifier* id1=(Identifier*)Util::createIdentifierNode($1); // Identifier* id2=(Identifier*)Util::createIdentifierNode($1); (yyval.node)=Util::createPropIdNode((yyvsp[-4].node),(yyvsp[-2].node)); } -#line 2652 "y.tab.c" +#line 2653 "y.tab.c" break; case 141: /* id: ID */ -#line 426 "lrparser.y" +#line 427 "lrparser.y" { (yyval.node)=Util::createIdentifierNode((yyvsp[0].text)); } -#line 2662 "y.tab.c" +#line 2663 "y.tab.c" break; -#line 2666 "y.tab.c" +#line 2667 "y.tab.c" default: break; } @@ -2855,7 +2856,7 @@ yyparse (void) return yyresult; } -#line 434 "lrparser.y" +#line 435 "lrparser.y" @@ -3017,6 +3018,11 @@ int main(int argc,char **argv) else if (strcmp(backendTarget, "acc") == 0) { spacc::dsl_cpp_generator cpp_backend; cpp_backend.setFileName(fileName); + if(optimize) { + cpp_backend.setOptimized(); + blockVarsAnalyser bvAnalyser; + bvAnalyser.analyse(frontEndContext.getFuncList()); + } cpp_backend.generate(); } else diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index c62d034d..6afd9249 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -355,7 +355,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } else { // if for all statement has a proc call proc_callExpr* extractElemFunc = forAll->getExtractElementFunc(); - if(extractElemFunc != NULL && forAll->isForall()) { + if(extractElemFunc != NULL && parallelConstruct.size() > 0) { Identifier* iteratorMethodId = extractElemFunc->getMethodId(); string iteratorMethodString(iteratorMethodId->getIdentifier()); if(iteratorMethodString.compare("nodes_to") == 0) { // if the proc call is nodes_to, d_rev_meta is needed From b10416a63302feb309b0adca208c950e2180ec57 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Sun, 23 Apr 2023 15:15:43 +0530 Subject: [PATCH 37/38] git add . --- .gitignore | 3 +- src/Makefile | 23 +- src/analyser/analyserUtil.cpp | 3 +- src/analyser/blockVars/NodeBlockData.cpp | 198 ++++++ src/analyser/blockVars/analyserUtil.cpp | 164 +++++ src/analyser/blockVars/analyserUtil.h | 44 ++ src/analyser/blockVars/blockVarsAnalyser.cpp | 222 +++--- src/analyser/blockVars/blockVarsAnalyser.h | 176 +++-- src/analyser/blockVars/blockVarsInit.cpp | 185 ++--- src/analyser/blockVars/getUsedVars.cpp | 150 ++-- src/analyser/blockVars/setVarsInParallel.cpp | 78 ++ .../deviceVars/deviceVarsAnalyser.cpp | 3 + src/analyser/deviceVars/deviceVarsInit.cpp | 8 +- src/analyser/deviceVars/getUsedVars.cpp | 4 + src/analyser/getUsedVars/getUsedVars.cpp | 2 +- src/ast/ASTNode.hpp | 11 + src/ast/ASTNodeTypes.hpp | 74 +- src/ast/MetaDataUsed.hpp | 111 +++ .../backend_cuda/dsl_cpp_generator.cpp | 12 +- .../backend_openACC/dsl_cpp_generator.cpp | 665 ++++++++++++++---- .../backend_openACC/dsl_cpp_generator.h | 11 +- src/parser/y.tab.c | 598 ++++++++-------- src/symbolutil/SymbolTable.h | 15 +- src/symbolutil/SymbolTableBuilder.cpp | 3 +- 24 files changed, 1894 insertions(+), 869 deletions(-) create mode 100644 src/analyser/blockVars/NodeBlockData.cpp create mode 100644 src/analyser/blockVars/analyserUtil.cpp create mode 100644 src/analyser/blockVars/analyserUtil.h create mode 100644 src/analyser/blockVars/setVarsInParallel.cpp create mode 100644 src/ast/MetaDataUsed.hpp diff --git a/.gitignore b/.gitignore index b6972366..71ce4b20 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ StarPlat.exe debug.txt dump *.pdf -To_be_done.txt \ No newline at end of file +To_be_done.txt +.github/ \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index f799456c..d3d91456 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,5 @@ -EXPENDABLES_WINDOWS = bin/MainContext.o bin/ASTHelper.o bin/SymbolTableBuilder.o bin/SymbolTableNew.o bin/y.tab.o bin/lex.yy.o parser/y.tab.c parser/lex.yy.c bin/deviceVarsAnalyser.o bin/analyserUtil.o bin/dv*.o -EXPENDABLES = bin/MainContext.o bin/ASTHelper.o bin/SymbolTableBuilder.o bin/SymbolTableNew.o bin/y.tab.o bin/lex.yy.o parser/y.tab.c parser/lex.yy.c bin/deviceVarsAnalyser.o +EXPENDABLES_WINDOWS = bin/MainContext.o bin/ASTHelper.o bin/SymbolTableBuilder.o bin/SymbolTableNew.o bin/y.tab.o bin/lex.yy.o parser/y.tab.c parser/lex.yy.c bin/deviceVarsAnalyser.o bin/analyserUtil.o bin/dv*.o bin/bv*.o +EXPENDABLES = bin/MainContext.o bin/ASTHelper.o bin/SymbolTableBuilder.o bin/SymbolTableNew.o bin/y.tab.o bin/lex.yy.o parser/y.tab.c parser/lex.yy.c bin/deviceVarsAnalyser.o bin/blockVarsAnalyser.o ANALYSER = bin/dataRaceAnalyser.o PROGRAMS = bin/MainContext.o bin/ASTHelper.o bin/SymbolTableBuilder.o bin/SymbolTableNew.o bin/y.tab.o bin/lex.yy.o bin/cu_dsl_cpp_generator.o bin/ac_dsl_cpp_generator.o bin/om_dsl_cpp_generator.o bin/mpi_dsl_cpp_generator.o #bin/ac_dsl_cpp_generator.o @@ -87,18 +87,27 @@ bin/dv4.o: analyser/deviceVars/deviceVarsTransfer.cpp analyser/deviceVars/device bin/dv5.o: analyser/deviceVars/getUsedVars.cpp analyser/deviceVars/deviceVarsAnalyser.h analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/deviceVars/getUsedVars.cpp -o bin/dv5.o -bin/blockVarsAnalyser.o: bin/bv1.o bin/bv2.o bin/bv3.o - ld -r bin/bv1.o bin/bv2.o bin/bv3.o -o bin/blockVarsAnalyser.o +bin/blockVarsAnalyser.o: bin/bv1.o bin/bv2.o bin/bv3.o bin/bv4.o bin/bv5.o bin/bv6.o.o + ld -r bin/bv1.o bin/bv2.o bin/bv3.o bin/bv4.o bin/bv5.o bin/bv6.o.o -o bin/blockVarsAnalyser.o -bin/bv1.o: analyser/blockVars/blockVarsAnalyser.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp +bin/bv1.o: analyser/blockVars/blockVarsAnalyser.cpp analyser/blockVars/blockVarsAnalyser.h $(CC) $(CFLAGS) -c analyser/blockVars/blockVarsAnalyser.cpp -o bin/bv1.o -bin/bv2.o: analyser/blockVars/blockVarsInit.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp +bin/bv2.o: analyser/blockVars/blockVarsInit.cpp analyser/blockVars/blockVarsAnalyser.h $(CC) $(CFLAGS) -c analyser/blockVars/blockVarsInit.cpp -o bin/bv2.o -bin/bv3.o: analyser/blockVars/getUsedVars.cpp analyser/blockVars/blockVarsAnalyser.h analyser/analyserUtil.cpp +bin/bv3.o: analyser/blockVars/getUsedVars.cpp analyser/blockVars/blockVarsAnalyser.h $(CC) $(CFLAGS) -c analyser/blockVars/getUsedVars.cpp -o bin/bv3.o +bin/bv4.o: analyser/blockVars/NodeBlockData.cpp analyser/blockVars/blockVarsAnalyser.h + $(CC) $(CFLAGS) -c analyser/blockVars/NodeBlockData.cpp -o bin/bv4.o + +bin/bv5.o: analyser/blockVars/setVarsInParallel.cpp analyser/blockVars/blockVarsAnalyser.h + $(CC) $(CFLAGS) -c analyser/blockVars/setVarsInParallel.cpp -o bin/bv5.o + +bin/bv6.o.o: analyser/blockVars/analyserUtil.cpp analyser/blockVars/analyserUtil.h + $(CC) $(CFLAGS) -c analyser/blockVars/analyserUtil.cpp -o bin/bv6.o.o + bin/analyserUtil.o: analyser/analyserUtil.cpp $(CC) $(CFLAGS) -c analyser/analyserUtil.cpp -o bin/analyserUtil.o diff --git a/src/analyser/analyserUtil.cpp b/src/analyser/analyserUtil.cpp index 475b856e..bab60805 100644 --- a/src/analyser/analyserUtil.cpp +++ b/src/analyser/analyserUtil.cpp @@ -75,6 +75,8 @@ class usedVariables void addVariable(Identifier *iden, int type) { + if (iden->getSymbolInfo() == NULL) // To not include the iterators in the list + return; if (type & 1) readVars.insert({iden->getSymbolInfo(), iden}); if (type & 2) @@ -172,7 +174,6 @@ class usedVariables { for (pair iden : readVars) { - cout << iden.second->getIdentifier() << endl; if(writeVars.find(iden.first) == writeVars.end()) result.push_back(iden.second); } diff --git a/src/analyser/blockVars/NodeBlockData.cpp b/src/analyser/blockVars/NodeBlockData.cpp new file mode 100644 index 00000000..d5e7e000 --- /dev/null +++ b/src/analyser/blockVars/NodeBlockData.cpp @@ -0,0 +1,198 @@ +#include "blockVarsAnalyser.h" + +NodeBlockData::NodeBlockData() { + this->node = NULL; + this->block = NULL; + this->startBlock = NULL; + this->endBlock = NULL; +} + +NodeBlockData::NodeBlockData(ASTNode* node) { + this->node = node; + setNodeDataBlock(); + this->block = NULL; + this->startBlock = NULL; + this->endBlock = NULL; + node->setBlockData(this); +} + +NodeBlockData::NodeBlockData(ASTNode* node, ASTNodeBlock* Block) { + this->node = node; + setNodeDataBlock(); + this->block = Block; + this->startBlock = NULL; + this->endBlock = NULL; + node->setBlockData(this); +} + +NodeBlockData::NodeBlockData(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock) { + this->node = node; + setNodeDataBlock(); + this->block = NULL; + this->startBlock = startBlock; + this->endBlock = endBlock; + node->setBlockData(this); +} + +NodeBlockData::NodeBlockData(ASTNode* node, ASTNodeBlock* Block, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock) { + this->node = node; + setNodeDataBlock(); + this->block = Block; + this->startBlock = startBlock; + this->endBlock = endBlock; + node->setBlockData(this); +} + +void NodeBlockData::setNodeDataBlock() { + if (node == NULL) + return; + + node->setBlockData(this); + // switch (node->getTypeofNode()) + // { + // case NODE_DOWHILESTMT: + // { + // dowhileStmt* doWhile = (dowhileStmt*) node; + // doWhile->setBlockData(this); + // break; + // } + // case NODE_WHILESTMT: + // { + // whileStmt* whilestmt = (whileStmt*) node; + // whilestmt->setBlockData(this); + // } + // case NODE_FORALLSTMT: + // { + // forallStmt* forallstmt = (forallStmt*) node; + // forallstmt->setBlockData(this); + // } + // default: + // break; + // } + return; +} + +ASTNode* NodeBlockData::getNode() { + return node; +} + +ASTNodeBlock* NodeBlockData::getBlock() { + return block; +} + +ASTNodeBlock* NodeBlockData::getStartBlock() { + return startBlock; +} + +ASTNodeBlock* NodeBlockData::getEndBlock() { + return endBlock; +} + +void NodeBlockData::setBlock(ASTNodeBlock* block) { + this->block = block; +} + +void NodeBlockData::setStartBlock(ASTNodeBlock* startBlock) { + this->startBlock = startBlock; +} + +void NodeBlockData::setEndBlock(ASTNodeBlock* endBlock) { + this->endBlock = endBlock; +} + +ASTNodeBlock::ASTNodeBlock() { + this->node = NULL; + use = set(); + def = set(); + in = set(); + out = set(); + succ = set(); +} + +ASTNodeBlock::ASTNodeBlock(ASTNode* node) { + this->node = node; + use = set(); + def = set(); + in = set(); + out = set(); + succ = set(); +} + +ASTNode* ASTNodeBlock::getNode() { + return node; +} + +set ASTNodeBlock::getUse() { + return use; +} + +set ASTNodeBlock::getDef() { + return def; +} + +set ASTNodeBlock::getIn() { + return in; +} + +set ASTNodeBlock::getOut() { + return out; +} + +set ASTNodeBlock::getSucc() { + return succ; +} + +void ASTNodeBlock::addUse(Identifier* id) { + use.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addDef(Identifier* id) { + def.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addIn(Identifier* id) { + in.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addIn(set ids) { + for(TableEntry* id : ids) + in.insert(id); +} + +void ASTNodeBlock::removeIn(Identifier* id) { + in.erase(id->getSymbolInfo()); +} + +void ASTNodeBlock::removeIn(set ids) { + for(TableEntry* id : ids) + in.erase(id); +} + +void ASTNodeBlock::addOut(Identifier* id) { + out.insert(id->getSymbolInfo()); +} + +void ASTNodeBlock::addOut(set ids) { + for(TableEntry* id : ids) + out.insert(id); +} + +void ASTNodeBlock::removeOut(Identifier* id) { + out.erase(id->getSymbolInfo()); +} + +void ASTNodeBlock::removeOut(set ids) { + for(Identifier* id : ids) + out.erase(id->getSymbolInfo()); +} + +void ASTNodeBlock::addSucc(ASTNodeBlock* block) { + if(block != NULL) succ.insert(block); +} + +void ASTNodeBlock::addVars(usedVariables_t vars) { + for(Identifier* id : vars.getVariables(USED)) + addUse(id); + for(Identifier* id : vars.getVariables(DEFINED)) + addDef(id); +} \ No newline at end of file diff --git a/src/analyser/blockVars/analyserUtil.cpp b/src/analyser/blockVars/analyserUtil.cpp new file mode 100644 index 00000000..0c99041c --- /dev/null +++ b/src/analyser/blockVars/analyserUtil.cpp @@ -0,0 +1,164 @@ +#include "analyserUtil.h" + +template +size_t usedVariables_t::hash_pair::operator()(const pair &p) const +{ + auto hash1 = hash{}(p.first); + auto hash2 = hash{}(p.second); + return hash1 ^ hash2; +} + +usedVariables_t::usedVariables_t() {} + +void usedVariables_t::addVariable(Identifier *iden, int type) +{ + if (type & 1) + readVars.insert({iden->getSymbolInfo(), iden}); + if (type & 2) + writeVars.insert({iden->getSymbolInfo(), iden}); +} + +void usedVariables_t::addPropAccess(PropAccess *prop, int type) +{ + Identifier *iden1 = prop->getIdentifier1(); + Identifier *iden2 = prop->getIdentifier2(); + propKey prop_key = make_pair(iden1->getSymbolInfo(), iden2->getSymbolInfo()); + + if (type & 1) + readProp.insert({prop_key, prop}); + if (type & 2) + writeProp.insert({prop_key, prop}); +} + +void usedVariables_t::merge(usedVariables_t usedVars1) +{ + for (pair iden : usedVars1.readVars) + this->readVars.insert({iden.first, iden.second}); + + for (pair iden : usedVars1.writeVars) + this->writeVars.insert({iden.first, iden.second}); + + for (pair iden : usedVars1.readProp) + this->readProp.insert({iden.first, iden.second}); + + for (pair iden : usedVars1.writeProp) + this->writeProp.insert({iden.first, iden.second}); +} + +void usedVariables_t::removeVariable(Identifier *iden, int type) +{ + TableEntry *symbInfo = iden->getSymbolInfo(); + if (type & 1) + { + if (readVars.find(symbInfo) != readVars.end()) + readVars.erase(symbInfo); + } + + if (type & 2) + { + if (writeVars.find(symbInfo) != writeVars.end()) + writeVars.erase(symbInfo); + } +} + +bool usedVariables_t::isUsedVar(Identifier *iden, int type) +{ + TableEntry *symbInfo = iden->getSymbolInfo(); + if (!symbInfo->isInParallelSection()) + return false; + if (type == USED) + return (readVars.find(symbInfo) != readVars.end()); + else if (type == DEFINED) + return (writeVars.find(symbInfo) != writeVars.end()); + else + return ((readVars.find(symbInfo) != readVars.end()) || (writeVars.find(symbInfo) != writeVars.end())); +} + +list usedVariables_t::getVariables(int type, bool inParallel) +{ + list result; + if (type & 1) + { + for (pair iden : readVars) { + if (!inParallel || (iden.first && iden.first->isInParallelSection())) + result.push_back(iden.second); + } + } + if (type & 2) + { + for (pair iden : writeVars) { + if (!inParallel || (iden.first && iden.first->isInParallelSection())) + result.push_back(iden.second); + } + } + return result; +} + +bool usedVariables_t::hasVariables(int type) +{ + if (type == USED) + return (readVars.size() > 0); + else if (type == DEFINED) + return (writeVars.size() > 0); + else + return ((writeVars.size() > 0) || (readVars.size() > 0)); +} + +bool usedVariables_t::isUsedPropAcess(PropAccess *propId, int type) +{ + Identifier *iden1 = propId->getIdentifier1(); + Identifier *iden2 = propId->getIdentifier2(); + propKey prop_key = make_pair(iden1->getSymbolInfo(), iden2->getSymbolInfo()); + + if (type == USED) + return (readProp.find(prop_key) != readProp.end()); + else if (type == DEFINED) + return (writeProp.find(prop_key) != writeProp.end()); + else + return ((readProp.find(prop_key) != readProp.end()) || (writeProp.find(prop_key) != writeProp.end())); +} + +bool usedVariables_t::isUsedProp(PropAccess *propId, int type) +{ + Identifier *iden2 = propId->getIdentifier2(); + TableEntry *symbInfo = iden2->getSymbolInfo(); + + if (type & 1) + { + for (pair iden : readProp) + if (iden.first.second == symbInfo) + return true; + } + if (type & 2) + { + for (pair iden : writeProp) + if (iden.first.second == symbInfo) + return true; + } + return false; +} + +list usedVariables_t::getPropAcess(int type) +{ + list result; + if (type & 1) + { + for (pair iden : readProp) + result.push_back(iden.second); + } + if (type & 2) + { + for (pair iden : writeProp) + result.push_back(iden.second); + } + return result; +} + +void usedVariables_t::clear() +{ + readVars.clear(); + writeVars.clear(); + + readProp.clear(); + writeProp.clear(); +} \ No newline at end of file diff --git a/src/analyser/blockVars/analyserUtil.h b/src/analyser/blockVars/analyserUtil.h new file mode 100644 index 00000000..bf7f9272 --- /dev/null +++ b/src/analyser/blockVars/analyserUtil.h @@ -0,0 +1,44 @@ +#ifndef ANALYSER_UTILITY_BLOCK +#define ANALYSER_UTILITY_BLOCK + +#include "../../ast/ASTNodeTypes.hpp" +#include +#include "../../symbolutil/SymbolTable.h" + +#define propKey pair + +enum variable_type_t +{ + USED = 1, + DEFINED, + USED_DEFINED +}; + +class usedVariables_t +{ +private: + struct hash_pair + { + template + size_t operator()(const pair &p) const; + }; + + unordered_map readVars, writeVars; + unordered_map readProp, writeProp; + +public: + usedVariables_t(); + void addVariable(Identifier *iden, int type); + void addPropAccess(PropAccess *prop, int type); + void merge(usedVariables_t usedVars1); + void removeVariable(Identifier *iden, int type); + bool isUsedVar(Identifier *iden, int type = USED_DEFINED); + list getVariables(int type = USED_DEFINED, bool = false); + bool hasVariables(int type = USED_DEFINED); + bool isUsedPropAcess(PropAccess *propId, int type = USED_DEFINED); + bool isUsedProp(PropAccess *propId, int type = USED_DEFINED); + list getPropAcess(int type = USED_DEFINED); + void clear(); +}; + +#endif \ No newline at end of file diff --git a/src/analyser/blockVars/blockVarsAnalyser.cpp b/src/analyser/blockVars/blockVarsAnalyser.cpp index f3376772..01d51322 100644 --- a/src/analyser/blockVars/blockVarsAnalyser.cpp +++ b/src/analyser/blockVars/blockVarsAnalyser.cpp @@ -1,93 +1,71 @@ #include "blockVarsAnalyser.h" +blockVarsAnalyser::blockVarsAnalyser() +{ + blockNodes.clear(); + blockNodeMap.clear(); +} + +ASTNodeBlock* blockVarsAnalyser::initBlockNode() +{ + ASTNodeBlock* blockNode = new ASTNodeBlock(); + return blockNode; +} + +ASTNodeBlock* blockVarsAnalyser::initBlockNode(ASTNode* node) +{ + ASTNodeBlock* blockNode = new ASTNodeBlock(node); + return blockNode; +} + +void blockVarsAnalyser::addBlockNode(ASTNode* node, ASTNodeBlock* blockNode) +{ + blockNodes.push_back(blockNode); + blockNodeMap[node] = new NodeBlockData(node, blockNode); +} + +void blockVarsAnalyser::addBlockNode(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock) +{ + blockNodeMap[node] = new NodeBlockData(node, startBlock, endBlock); +} + +NodeBlockData* blockVarsAnalyser::getBlockData(ASTNode* node) +{ + return blockNodeMap[node]; +} + void blockVarsAnalyser::toString(NODETYPE type) { switch(type) { - case NODE_ID: - cout << "NODE_ID"; - break; - case NODE_PROPACCESS: - cout << "NODE_PROPACCESS"; - break; - case NODE_FUNC: - cout << "NODE_FUNC"; - break; - case NODE_TYPE: - cout << "NODE_TYPE"; - break; - case NODE_FORMALPARAM: - cout << "NODE_FORMALPARAM"; - break; - case NODE_STATEMENT: - cout << "NODE_STATEMENT"; - break; - case NODE_BLOCKSTMT: - cout << "NODE_BLOCKSTMT"; - break; - case NODE_DECL: - cout << "NODE_DECL"; - break; - case NODE_ASSIGN: - cout << "NODE_ASSIGN"; - break; - case NODE_WHILESTMT: - cout << "NODE_WHILESTMT"; - break; - case NODE_DOWHILESTMT: - cout << "NODE_DOWHILESTMT"; - break; - case NODE_FIXEDPTSTMT: - cout << "NODE_FIXEDPTSTMT"; - break; - case NODE_IFSTMT: - cout << "NODE_IFSTMT"; - break; - case NODE_ITRBFS: - cout << "NODE_ITRBFS"; - break; - case NODE_ITRRBFS: - cout << "NODE_ITRRBFS"; - break; - case NODE_EXPR: - cout << "NODE_EXPR"; - break; - case NODE_PROCCALLEXPR: - cout << "NODE_PROCCALLEXPR"; - break; - case NODE_PROCCALLSTMT: - cout << "NODE_PROCCALLSTMT"; - break; - case NODE_FORALLSTMT: - cout << "NODE_FORALLSTMT"; - break; - case NODE_REDUCTIONCALL: - cout << "NODE_REDUCTIONCALL"; - break; - case NODE_REDUCTIONCALLSTMT: - cout << "NODE_REDUCTIONCALLSTMT"; - break; - case NODE_UNARYSTMT: - cout << "NODE_UNARYSTMT"; - break; - case NODE_RETURN: - cout << "NODE_RETURN"; - break; - case NODE_BATCHBLOCKSTMT: - cout << "NODE_BATCHBLOCKSTMT"; - break; - case NODE_ONADDBLOCK: - cout << "NODE_ONADDBLOCK"; - break; - case NODE_ONDELETEBLOCK: - cout << "NODE_ONDELETEBLOCK"; - break; - case NODE_TRANSFERSTMT: - cout << "NODE_TRANSFERSTMT"; - break; - default: - cout << "UNKNOWN"; - break; + case NODE_ID: cout << "NODE_ID"; break; + case NODE_PROPACCESS: cout << "NODE_PROPACCESS"; break; + case NODE_FUNC: cout << "NODE_FUNC"; break; + case NODE_TYPE: cout << "NODE_TYPE"; break; + case NODE_FORMALPARAM: cout << "NODE_FORMALPARAM"; break; + case NODE_STATEMENT: cout << "NODE_STATEMENT"; break; + case NODE_BLOCKSTMT: cout << "NODE_BLOCKSTMT"; break; + case NODE_DECL: cout << "NODE_DECL"; break; + case NODE_ASSIGN: cout << "NODE_ASSIGN"; break; + case NODE_WHILESTMT: cout << "NODE_WHILESTMT"; break; + case NODE_DOWHILESTMT: cout << "NODE_DOWHILESTMT"; break; + case NODE_FIXEDPTSTMT: cout << "NODE_FIXEDPTSTMT"; break; + case NODE_IFSTMT: cout << "NODE_IFSTMT"; break; + case NODE_ITRBFS: cout << "NODE_ITRBFS"; break; + case NODE_ITRRBFS: cout << "NODE_ITRRBFS"; break; + case NODE_EXPR: cout << "NODE_EXPR"; break; + case NODE_PROCCALLEXPR: cout << "NODE_PROCCALLEXPR"; break; + case NODE_PROCCALLSTMT: cout << "NODE_PROCCALLSTMT"; break; + case NODE_FORALLSTMT: cout << "NODE_FORALLSTMT"; break; + case NODE_REDUCTIONCALL: cout << "NODE_REDUCTIONCALL"; break; + case NODE_REDUCTIONCALLSTMT: cout << "NODE_REDUCTIONCALLSTMT"; break; + case NODE_UNARYSTMT: cout << "NODE_UNARYSTMT"; break; + case NODE_RETURN: cout << "NODE_RETURN"; break; + case NODE_BATCHBLOCKSTMT: cout << "NODE_BATCHBLOCKSTMT"; break; + case NODE_ONADDBLOCK: cout << "NODE_ONADDBLOCK"; break; + case NODE_ONDELETEBLOCK: cout << "NODE_ONDELETEBLOCK"; break; + case NODE_TRANSFERSTMT: cout << "NODE_TRANSFERSTMT"; break; + default: cout << "UNKNOWN"; break; }; } @@ -97,50 +75,82 @@ void blockVarsAnalyser::printBlockNodes() for (auto blockNode: blockNodes) { cout << "Block number " << ++i << ": "; - toString(blockNode->getNode()->getTypeofNode()); + if (blockNode->getNode() == NULL) + cout << "NULL"; + else + toString(blockNode->getNode()->getTypeofNode()); cout << endl; - for (Identifier* id : blockNode->getDef()) - { - cout << "Def: " << id->getIdentifier() << endl; - } - for (Identifier* id : blockNode->getUse()) - { - cout << "Use: " << id->getIdentifier() << endl; - } - for (Identifier* id : blockNode->getIn()) - { - cout << "In: " << id->getIdentifier() << endl; - } - for (Identifier* id : blockNode->getOut()) - { - cout << "Out: " << id->getIdentifier() << endl; - } + for (TableEntry* id : blockNode->getDef()) + cout << "Def: " << id->getId()->getIdentifier() << endl; + for (TableEntry* id : blockNode->getUse()) + cout << "Use: " << id->getId()->getIdentifier() << endl; + for (TableEntry* id : blockNode->getIn()) + cout << "In: " << id->getId()->getIdentifier() << endl; + for (TableEntry* id : blockNode->getOut()) + cout << "Out: " << id->getId()->getIdentifier() << endl; for (ASTNodeBlock* succ : blockNode->getSucc()) { cout << "Succ: "; - toString(succ->getNode()->getTypeofNode()); + if (succ->getNode() == NULL) cout << "NULL"; + else toString(succ->getNode()->getTypeofNode()); cout << endl; } } } +void blockVarsAnalyser::analyseBlockNodes() +{ + bool changed = true; + do + { + // reset changed flag + changed = false; + + // iterate over all block nodes (in reverse order implicit*) + for (ASTNodeBlock* blockNode: blockNodes) + { + // get old in and out sets + set oldIn = blockNode->getIn(); + set oldOut = blockNode->getOut(); + + // update in and out sets + for (ASTNodeBlock* succ: blockNode->getSucc()) + blockNode->addOut(succ->getIn()); + blockNode->addIn(blockNode->getOut()); + blockNode->removeIn(blockNode->getDef()); + blockNode->addIn(blockNode->getUse()); + + // check if in or out sets have changed + if (oldIn != blockNode->getIn() || oldOut != blockNode->getOut()) + changed = true; + + } + + } while (changed); +} + void blockVarsAnalyser::analyseFunc(ASTNode* proc) { Function* func = (Function*)proc; - cout << "Function Name: " << func->getIdentifier()->getIdentifier() << endl; + // setting all variable present inside parallel region + setVarsInParallelStatment(func->getBlockStatement()); + // creating end block + ASTNodeBlock* endBlock = new ASTNodeBlock(); + blockNodes.push_back(endBlock); + + // creating start block ASTNodeBlock* blockNode = initBlockNode(func); for (formalParam* param : func->getParamList()) - { blockNode->addDef(param->getIdentifier()); - } blockNode->addSucc(initStatement(func->getBlockStatement(), NULL)); addBlockNode(func, blockNode); + analyseBlockNodes(); + printBlockNodes(); - // analyseBlockNodes(); } void blockVarsAnalyser::analyse(list functions) diff --git a/src/analyser/blockVars/blockVarsAnalyser.h b/src/analyser/blockVars/blockVarsAnalyser.h index a204d1ab..224a38c4 100644 --- a/src/analyser/blockVars/blockVarsAnalyser.h +++ b/src/analyser/blockVars/blockVarsAnalyser.h @@ -2,103 +2,85 @@ #define BLOCK_VARS_ANALYSER_H -#include "../analyserUtil.cpp" +#include "analyserUtil.h" #include "../../ast/ASTHelper.cpp" class ASTNodeBlock { ASTNode* node; // the block node - list use; // list of variables used in the block - list def; // list of variables defined in the block - list in; // list of variables needed to be sent to the block - list out; // list of variables needed to be sent from the block + set use; // set of variables used in the block + set def; // set of variables defined in the block + set in; // set of variables needed to be sent to the block + set out; // set of variables needed to be sent from the block - list succ; // list of successor blocks + set succ; // set of successor blocks public: - ASTNodeBlock(ASTNode* node) { - this->node = node; - use = list(); - def = list(); - in = list(); - out = list(); - succ = list(); - } - - ASTNode* getNode() { - return node; - } - - list getUse() { - return use; - } - - list getDef() { - return def; - } - - list getIn() { - return in; - } - - list getOut() { - return out; - } - - list getSucc() { - return succ; - } - - void addUse(Identifier* id) { - use.push_back(id); - } - - void addDef(Identifier* id) { - def.push_back(id); - } - - void addIn(Identifier* id) { - in.push_back(id); - } - - void addOut(Identifier* id) { - out.push_back(id); - } - - void addSucc(ASTNodeBlock* block) { - if(block != NULL) succ.push_back(block); - } - - void addVars(usedVariables usedVars) { - for(Identifier* id : usedVars.getVariables(READ)) - use.push_back(id); - - for(Identifier* id : usedVars.getVariables(WRITE)) - def.push_back(id); - } + ASTNodeBlock(); + ASTNodeBlock(ASTNode* node); + ASTNode* getNode(); + set getUse(); + set getDef(); + set getIn(); + set getOut(); + set getSucc(); + void addUse(Identifier* id); + void addDef(Identifier* id); + void addIn(Identifier* id); + void addIn(set ids); + void removeIn(Identifier* id); + void removeIn(set ids); + void addOut(Identifier* id); + void addOut(set ids); + void removeOut(Identifier* id); + void removeOut(set ids); + void addSucc(ASTNodeBlock* block); + void addVars(usedVariables_t vars); }; -class blockVarsAnalyser { +class NodeBlockData +{ + ASTNode* node; // the block node + ASTNodeBlock* block; // Index of the block + ASTNodeBlock* startBlock; // Index of the start block, Only for loops (for, while, do-while) + ASTNodeBlock* endBlock; // Index of the end block, Only for loops (for, while, do-while) + + public: + + NodeBlockData(); + NodeBlockData(ASTNode* node); + NodeBlockData(ASTNode* node, ASTNodeBlock* Block); + NodeBlockData(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock); + NodeBlockData(ASTNode* node, ASTNodeBlock* Block, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock); + void setNodeDataBlock(); + + ASTNode* getNode(); + ASTNodeBlock* getBlock(); + ASTNodeBlock* getStartBlock(); + ASTNodeBlock* getEndBlock(); + void setBlock(ASTNodeBlock* block); + void setStartBlock(ASTNodeBlock* startBlock); + void setEndBlock(ASTNodeBlock* endBlock); +}; + +class blockVarsAnalyser +{ private: - ASTNodeBlock* initBlockNode(ASTNode* node) - { - ASTNodeBlock* blockNode = new ASTNodeBlock(node); - return blockNode; - } + ASTNodeBlock* initBlockNode(); + ASTNodeBlock* initBlockNode(ASTNode* node); list blockNodes; - map blockNodeMap; + unordered_map blockNodeMap; public: - blockVarsAnalyser() {} + blockVarsAnalyser(); + + void addBlockNode(ASTNode* node, ASTNodeBlock* blockNode); + void addBlockNode(ASTNode* node, ASTNodeBlock* startBlock, ASTNodeBlock* endBlock); - void addBlockNode(ASTNode* node, ASTNodeBlock* blockNode) - { - blockNodes.push_back(blockNode); - blockNodeMap[node] = blockNode; - } + NodeBlockData* getBlockData(ASTNode* node); void toString(NODETYPE); // Prints the type of the node verbose void printBlockNodes(); // Prints the block nodes @@ -140,21 +122,27 @@ class blockVarsAnalyser { ASTNodeBlock* initReturn(returnStmt*, ASTNodeBlock*); //Returns the used variables in each statment - usedVariables getVarsStatement(statement* stmt); - usedVariables getVarsBlock(blockStatement* stmt); - usedVariables getVarsForAll(forallStmt* stmt); - usedVariables getVarsUnary(unary_stmt* stmt); - usedVariables getVarsDeclaration(declaration* stmt); - usedVariables getVarsWhile(whileStmt* stmt); - usedVariables getVarsDoWhile(dowhileStmt* stmt); - usedVariables getVarsAssignment(assignment* stmt); - usedVariables getVarsIf(ifStmt* stmt); - usedVariables getVarsExpr(Expression* stmt); - usedVariables getVarsReduction(reductionCallStmt *stmt); - usedVariables getVarsFixedPoint(fixedPointStmt *stmt); - usedVariables getVarsBFS(iterateBFS *stmt); - usedVariables getVarsProcCall(proc_callStmt *stmt); - usedVariables getVarsExprProcCall(proc_callExpr *stmt); + usedVariables_t getVarsStatement(statement*); + usedVariables_t getVarsBlock(blockStatement*); + usedVariables_t getVarsForAll(forallStmt*); + usedVariables_t getVarsUnary(unary_stmt*); + usedVariables_t getVarsDeclaration(declaration*); + usedVariables_t getVarsWhile(whileStmt*); + usedVariables_t getVarsDoWhile(dowhileStmt*); + usedVariables_t getVarsAssignment(assignment*); + usedVariables_t getVarsIf(ifStmt*); + usedVariables_t getVarsExpr(Expression*); + usedVariables_t getVarsReduction(reductionCallStmt*); + usedVariables_t getVarsFixedPoint(fixedPointStmt*); + usedVariables_t getVarsBFS(iterateBFS*); + usedVariables_t getVarsProcCall(proc_callStmt*); + usedVariables_t getVarsExprProcCall(proc_callExpr*); + + void setVarsInParallelStatment(statement*); // Sets the flag of tableentry of the variables in the parallel section in the statement + void setVarsInParallelBlock(blockStatement*); // Sets the flag of tableentry of the variables in the parallel section in the block + void setVarsInParallelForAll(forallStmt*); // Sets the flag of tableentry of the variables in the parallel section in the forall + void setVarsInParallelBFS(iterateBFS*); // Sets the flag of tableentry of the variables in the parallel section in the BFS + void setVarsInParallelAssign(assignment*); // Sets the flag of tableentry of the variables in the parallel section in the assignment }; #endif \ No newline at end of file diff --git a/src/analyser/blockVars/blockVarsInit.cpp b/src/analyser/blockVars/blockVarsInit.cpp index a7a7894c..4319b4d2 100644 --- a/src/analyser/blockVars/blockVarsInit.cpp +++ b/src/analyser/blockVars/blockVarsInit.cpp @@ -14,10 +14,6 @@ ASTNodeBlock* blockVarsAnalyser::initBlock(blockStatement* blockStmt, ASTNodeBlo ASTNodeBlock* blockVarsAnalyser::initStatement(statement* stmt, ASTNodeBlock* blockNode) { - printf("Initializing %p ", stmt); - toString(stmt->getTypeofNode()); - printf("\n"); - switch(stmt->getTypeofNode()) { case NODE_DECL: @@ -27,13 +23,7 @@ ASTNodeBlock* blockVarsAnalyser::initStatement(statement* stmt, ASTNodeBlock* bl case NODE_UNARYSTMT: return initUnary((unary_stmt*)stmt, blockNode); case NODE_FORALLSTMT: - { - forallStmt* forStmt = (forallStmt*)stmt; - if(forStmt->isForall()) - return initForAll((forallStmt*)stmt, blockNode); - else - return initFor((forallStmt*)stmt, blockNode); - } + return initForAll((forallStmt*)stmt, blockNode); case NODE_BLOCKSTMT: return initBlock((blockStatement*)stmt, blockNode); case NODE_IFSTMT: @@ -62,7 +52,7 @@ ASTNodeBlock* blockVarsAnalyser::initDeclaration(declaration* declStmt, ASTNodeB ASTNodeBlock* declNode = new ASTNodeBlock(declStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsStatement(declStmt); + usedVariables_t usedVars = getVarsStatement(declStmt); declNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -79,7 +69,7 @@ ASTNodeBlock* blockVarsAnalyser::initAssignment(assignment* assignStmt, ASTNodeB ASTNodeBlock* assignNode = new ASTNodeBlock(assignStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsStatement(assignStmt); + usedVariables_t usedVars = getVarsStatement(assignStmt); assignNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -96,7 +86,7 @@ ASTNodeBlock* blockVarsAnalyser::initUnary(unary_stmt* unaryStmt, ASTNodeBlock* ASTNodeBlock* unaryNode = new ASTNodeBlock(unaryStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsStatement(unaryStmt); + usedVariables_t usedVars = getVarsStatement(unaryStmt); unaryNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -109,25 +99,29 @@ ASTNodeBlock* blockVarsAnalyser::initUnary(unary_stmt* unaryStmt, ASTNodeBlock* ASTNodeBlock* blockVarsAnalyser::initForAll(forallStmt* forAllStmt, ASTNodeBlock* blockNode) { + // Create a new block node for the forall statement start and end block + ASTNodeBlock* forAllStartNode = new ASTNodeBlock(); + ASTNodeBlock* forAllEndNode = new ASTNodeBlock(); + // Create a new block node for the forall statement ASTNodeBlock* forAllCondNode = new ASTNodeBlock(forAllStmt); // Add the used and def variables to use set of the new block for cond - usedVariables usedVars; + usedVariables_t usedVars; if(forAllStmt->isSourceProcCall()) - { + { proc_callExpr *expr = forAllStmt->getExtractElementFunc(); usedVars.merge(getVarsExprProcCall(expr)); } else if(!forAllStmt->isSourceField()) { Identifier *iden = forAllStmt->getSource(); - usedVars.addVariable(iden, READ); + usedVars.addVariable(iden, USED); } else { PropAccess *propId = forAllStmt->getPropSource(); - usedVars.addVariable(propId->getIdentifier1(), READ); + usedVars.addVariable(propId->getIdentifier1(), USED); } if (forAllStmt->hasFilterExpr()) @@ -135,54 +129,30 @@ ASTNodeBlock* blockVarsAnalyser::initForAll(forallStmt* forAllStmt, ASTNodeBlock forAllCondNode->addVars(usedVars); - // Add the passed block as succ of the new block - forAllCondNode->addSucc(blockNode); + // Add the end block as succ of the new cond block + forAllCondNode->addSucc(forAllEndNode); - // Add the forall statement as a succ of the new block - forAllCondNode->addSucc(initStatement(forAllStmt->getBody(), forAllCondNode)); + // Add the passed block as succ of the end block + forAllEndNode->addSucc(blockNode); + blockNodes.push_back(forAllEndNode); // Add this node to the list of block nodes - addBlockNode(forAllStmt, forAllCondNode); - return forAllCondNode; -} + addBlockNode(forAllStmt->getBody(), forAllCondNode); -ASTNodeBlock* blockVarsAnalyser::initFor(forallStmt* forStmt, ASTNodeBlock* blockNode) -{ - // Create a new block node for the for statement - ASTNodeBlock* forCondNode = new ASTNodeBlock(forStmt); + // Add the forall statement as a succ of the new cond block + ASTNodeBlock* forAllBodyNode = initStatement(forAllStmt->getBody(), forAllEndNode); + forAllCondNode->addSucc(forAllBodyNode); - // Add the used and def variables to use set of the new block for cond - usedVariables usedVars; - if(forStmt->isSourceProcCall()) - { - proc_callExpr *expr = forStmt->getExtractElementFunc(); - usedVars.merge(getVarsExprProcCall(expr)); - } - else if(!forStmt->isSourceField()) - { - Identifier *iden = forStmt->getSource(); - usedVars.addVariable(iden, READ); - } - else - { - PropAccess *propId = forStmt->getPropSource(); - usedVars.addVariable(propId->getIdentifier1(), READ); - } - - if (forStmt->hasFilterExpr()) - usedVars.merge(getVarsExpr(forStmt->getfilterExpr())); + // Add the cond block as a succ for the forall statement start block + forAllStartNode->addSucc(forAllCondNode); + blockNodes.push_back(forAllStartNode); - forCondNode->addVars(usedVars); - - // Add the passed block as succ of the new block - forCondNode->addSucc(blockNode); - - // Add the for statement as a succ of the new block - forCondNode->addSucc(initStatement(forStmt->getBody(), forCondNode)); + // Add the forall statement as a succ of the new block + forAllCondNode->addSucc(initStatement(forAllStmt->getBody(), forAllCondNode)); - // Add this node to the list of block nodes - addBlockNode(forStmt, forCondNode); - return forCondNode; + // Map the forall statement's start and end block + addBlockNode(forAllStmt, forAllStartNode, forAllEndNode); + return forAllCondNode; } ASTNodeBlock* blockVarsAnalyser::initIfElse(ifStmt* ifStmt, ASTNodeBlock* blockNode) @@ -191,7 +161,7 @@ ASTNodeBlock* blockVarsAnalyser::initIfElse(ifStmt* ifStmt, ASTNodeBlock* blockN ASTNodeBlock* ifCondNode = new ASTNodeBlock(ifStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsExpr(ifStmt->getCondition()); + usedVariables_t usedVars = getVarsExpr(ifStmt->getCondition()); ifCondNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -213,43 +183,74 @@ ASTNodeBlock* blockVarsAnalyser::initIfElse(ifStmt* ifStmt, ASTNodeBlock* blockN ASTNodeBlock* blockVarsAnalyser::initWhile(whileStmt* whileStmt, ASTNodeBlock* blockNode) { + // Create a new block node for the do-while statement start and end block + ASTNodeBlock* whileStartNode = new ASTNodeBlock(); + ASTNodeBlock* whileEndNode = new ASTNodeBlock(); + // Create a new block node for the while statement - ASTNodeBlock* whileCondNode = new ASTNodeBlock(whileStmt); + ASTNodeBlock* whileCondNode = new ASTNodeBlock(whileStmt->getCondition()); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsExpr(whileStmt->getCondition()); + usedVariables_t usedVars = getVarsExpr(whileStmt->getCondition()); whileCondNode->addVars(usedVars); - // Add the passed block as succ of the new block - whileCondNode->addSucc(blockNode); + // Add the end block as succ of the new block + whileCondNode->addSucc(whileEndNode); + + // Add the passed block as succ of the end block + whileEndNode->addSucc(blockNode); + blockNodes.push_back(whileEndNode); + + // Add the while statement to the list of block nodes + addBlockNode(whileStmt->getCondition(), whileCondNode); // Add the while statement as a succ of the new block - whileCondNode->addSucc(initStatement(whileStmt->getBody(), whileCondNode)); + ASTNodeBlock* whileBodyNode = initStatement(whileStmt->getBody(), whileEndNode); + whileCondNode->addSucc(whileBodyNode); - // Add this node to the list of block nodes - addBlockNode(whileStmt, whileCondNode); - return whileCondNode; + // Add the cond block as a succ of the while statement start block + whileStartNode->addSucc(whileCondNode); + blockNodes.push_back(whileStartNode); + + // Map the while statement's start and end block + addBlockNode(whileStmt, whileStartNode, whileEndNode); + return whileStartNode; } ASTNodeBlock* blockVarsAnalyser::initDoWhile(dowhileStmt* doWhileStmt, ASTNodeBlock* blockNode) { - // Create a new block node for the do-while statement - ASTNodeBlock* doWhileCondNode = new ASTNodeBlock(doWhileStmt); + // Create a new block node for the do-while statement start and end block + ASTNodeBlock* doWhileStartNode = new ASTNodeBlock(); + ASTNodeBlock* doWhileEndNode = new ASTNodeBlock(); + + // Create a new block node for the do-while condition statement + ASTNodeBlock* doWhileCondNode = new ASTNodeBlock(doWhileStmt->getCondition()); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsExpr(doWhileStmt->getCondition()); + usedVariables_t usedVars = getVarsExpr(doWhileStmt->getCondition()); doWhileCondNode->addVars(usedVars); - // Add the passed block as succ of the new block - doWhileCondNode->addSucc(blockNode); + // Add the end block as succ of the new block + doWhileCondNode->addSucc(doWhileEndNode); + + // Add the passed block as succ of the end block + doWhileEndNode->addSucc(blockNode); + blockNodes.push_back(doWhileEndNode); // Add this node to the list of block nodes - addBlockNode(doWhileStmt, doWhileCondNode); + addBlockNode(doWhileStmt->getCondition(), doWhileCondNode); // Add the do-while statement as a succ of the new block - doWhileCondNode->addSucc(initStatement(doWhileStmt->getBody(), doWhileCondNode)); + ASTNodeBlock* doWhileBodyStartNode = initStatement(doWhileStmt->getBody(), doWhileCondNode); + doWhileCondNode->addSucc(doWhileBodyStartNode); + + // Add the do-while body start as a succ of the start block + doWhileStartNode->addSucc(doWhileBodyStartNode); + blockNodes.push_back(doWhileStartNode); - return doWhileCondNode; + // Map the do-while statement's start and end block + addBlockNode(doWhileStmt, doWhileStartNode, doWhileEndNode); + return doWhileStartNode; } ASTNodeBlock* blockVarsAnalyser::initProcCall(proc_callStmt* procCallStmt, ASTNodeBlock* blockNode) @@ -258,7 +259,7 @@ ASTNodeBlock* blockVarsAnalyser::initProcCall(proc_callStmt* procCallStmt, ASTNo ASTNodeBlock* procCallNode = new ASTNodeBlock(procCallStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsStatement(procCallStmt); + usedVariables_t usedVars = getVarsStatement(procCallStmt); procCallNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -271,21 +272,35 @@ ASTNodeBlock* blockVarsAnalyser::initProcCall(proc_callStmt* procCallStmt, ASTNo ASTNodeBlock* blockVarsAnalyser::initFixedPoint(fixedPointStmt* fixedPointStmt, ASTNodeBlock* blockNode) { + // Create a new block node for start and end block of the fixed point statement + ASTNodeBlock* fixedPointStartNode = new ASTNodeBlock(); + ASTNodeBlock* fixedPointEndNode = new ASTNodeBlock(); + // Create a new block node for the fixed point statement - ASTNodeBlock* fixedPointCondNode = new ASTNodeBlock(fixedPointStmt); + ASTNodeBlock* fixedPointCondNode = new ASTNodeBlock(fixedPointStmt->getFixedPointId()); // Add the used and def variables to use set of the new block fixedPointCondNode->addUse(fixedPointStmt->getFixedPointId()); // Add the passed block as succ of the new block - fixedPointCondNode->addSucc(blockNode); + fixedPointCondNode->addSucc(fixedPointEndNode); + + // Add the end block to the list of block nodes + fixedPointEndNode->addSucc(blockNode); + blockNodes.push_back(fixedPointEndNode); // Add the fixed point statement as a succ of the new block fixedPointCondNode->addSucc(initStatement(fixedPointStmt->getBody(), fixedPointCondNode)); + addBlockNode(fixedPointStmt->getFixedPointId(), fixedPointCondNode); - // Add this node to the list of block nodes - addBlockNode(fixedPointStmt, fixedPointCondNode); - return fixedPointCondNode; + // Add the fixed point statement as a succ of the start block + fixedPointStartNode->addSucc(fixedPointCondNode); + blockNodes.push_back(fixedPointStartNode); + + // Map the fixed point statement's start and end block + addBlockNode(fixedPointStmt, fixedPointStartNode, fixedPointEndNode); + + return fixedPointStartNode; } ASTNodeBlock* blockVarsAnalyser::initReduction(reductionCallStmt* reductionCallStmt, ASTNodeBlock* blockNode) @@ -294,7 +309,7 @@ ASTNodeBlock* blockVarsAnalyser::initReduction(reductionCallStmt* reductionCallS ASTNodeBlock* reductionNode = new ASTNodeBlock(reductionCallStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsStatement(reductionCallStmt); + usedVariables_t usedVars = getVarsStatement(reductionCallStmt); reductionNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -312,7 +327,7 @@ ASTNodeBlock* blockVarsAnalyser::initItrBFS(iterateBFS* iterateBFS, ASTNodeBlock ASTNodeBlock* iterateBFSNode = new ASTNodeBlock(iterateBFS); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsStatement(iterateBFS); + usedVariables_t usedVars = getVarsStatement(iterateBFS); iterateBFSNode->addVars(usedVars); // Add the passed block as succ of the new block @@ -332,7 +347,7 @@ ASTNodeBlock* blockVarsAnalyser::initReturn(returnStmt* returnStmt, ASTNodeBlock ASTNodeBlock* returnNode = new ASTNodeBlock(returnStmt); // Add the used and def variables to use set of the new block - usedVariables usedVars = getVarsExpr(returnStmt->getReturnExpression()); + usedVariables_t usedVars = getVarsExpr(returnStmt->getReturnExpression()); returnNode->addVars(usedVars); // Add the passed block as succ of the new block diff --git a/src/analyser/blockVars/getUsedVars.cpp b/src/analyser/blockVars/getUsedVars.cpp index d3dd84f8..cd5b1b8b 100644 --- a/src/analyser/blockVars/getUsedVars.cpp +++ b/src/analyser/blockVars/getUsedVars.cpp @@ -1,19 +1,19 @@ #include "blockVarsAnalyser.h" -usedVariables blockVarsAnalyser::getVarsExpr(Expression *expr) +usedVariables_t blockVarsAnalyser::getVarsExpr(Expression *expr) { - usedVariables result; + usedVariables_t result; if (expr->isIdentifierExpr()) { Identifier *iden = expr->getId(); - result.addVariable(iden, READ); + result.addVariable(iden, USED); } else if (expr->isPropIdExpr()) { PropAccess *propExpr = expr->getPropId(); - result.addVariable(propExpr->getIdentifier1(), READ); - result.addVariable(propExpr->getIdentifier2(), READ); + result.addVariable(propExpr->getIdentifier1(), USED); + result.addVariable(propExpr->getIdentifier2(), USED); } else if (expr->isUnary()) { @@ -23,12 +23,12 @@ usedVariables blockVarsAnalyser::getVarsExpr(Expression *expr) { Expression *uExpr = expr->getUnaryExpr(); if (uExpr->isIdentifierExpr()) - result.addVariable(uExpr->getId(), READ_WRITE); + result.addVariable(uExpr->getId(), USED_DEFINED); else if (uExpr->isPropIdExpr()) { PropAccess* propId = uExpr->getPropId(); - result.addVariable(propId->getIdentifier1(), READ); - result.addVariable(propId->getIdentifier2(), READ_WRITE); + result.addVariable(propId->getIdentifier1(), USED); + result.addVariable(propId->getIdentifier2(), USED_DEFINED); } } } @@ -43,58 +43,53 @@ usedVariables blockVarsAnalyser::getVarsExpr(Expression *expr) return result; } - -usedVariables blockVarsAnalyser::getVarsWhile(whileStmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsWhile(whileStmt *stmt) { - usedVariables currVars = getVarsExpr(stmt->getCondition()); + usedVariables_t currVars = getVarsExpr(stmt->getCondition()); currVars.merge(getVarsStatement(stmt->getBody())); - return currVars; } - -usedVariables blockVarsAnalyser::getVarsDoWhile(dowhileStmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsDoWhile(dowhileStmt *stmt) { - usedVariables currVars = getVarsExpr(stmt->getCondition()); + usedVariables_t currVars = getVarsExpr(stmt->getCondition()); currVars.merge(getVarsStatement(stmt->getBody())); - return currVars; } -usedVariables blockVarsAnalyser::getVarsDeclaration(declaration *stmt) +usedVariables_t blockVarsAnalyser::getVarsDeclaration(declaration *stmt) { - usedVariables currVars; - currVars.addVariable(stmt->getdeclId(), WRITE); - + usedVariables_t currVars; + currVars.addVariable(stmt->getdeclId(), DEFINED); if(stmt->isInitialized()) { - usedVariables exprVars = getVarsExpr(stmt->getExpressionAssigned()); + usedVariables_t exprVars = getVarsExpr(stmt->getExpressionAssigned()); currVars.merge(exprVars); } return currVars; } -usedVariables blockVarsAnalyser::getVarsAssignment(assignment *stmt) +usedVariables_t blockVarsAnalyser::getVarsAssignment(assignment *stmt) { - usedVariables currVars; + usedVariables_t currVars; if (stmt->lhs_isProp()) { PropAccess *propId = stmt->getPropId(); - currVars.addVariable(propId->getIdentifier1(), READ); - currVars.addVariable(propId->getIdentifier2(), WRITE); + currVars.addVariable(propId->getIdentifier1(), USED); + currVars.addVariable(propId->getIdentifier2(), DEFINED); } else if (stmt->lhs_isIdentifier()) - currVars.addVariable(stmt->getId(), WRITE); + currVars.addVariable(stmt->getId(), DEFINED); - usedVariables exprVars = getVarsExpr(stmt->getExpr()); + usedVariables_t exprVars = getVarsExpr(stmt->getExpr()); currVars.merge(exprVars); return currVars; } -usedVariables blockVarsAnalyser::getVarsIf(ifStmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsIf(ifStmt *stmt) { - usedVariables currVars = getVarsExpr(stmt->getCondition()); + usedVariables_t currVars = getVarsExpr(stmt->getCondition()); currVars.merge(getVarsStatement(stmt->getIfBody())); if (stmt->getElseBody() != NULL) currVars.merge(getVarsStatement(stmt->getElseBody())); @@ -102,34 +97,34 @@ usedVariables blockVarsAnalyser::getVarsIf(ifStmt *stmt) return currVars; } -usedVariables blockVarsAnalyser::getVarsFixedPoint(fixedPointStmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsFixedPoint(fixedPointStmt *stmt) { - usedVariables currVars = getVarsExpr(stmt->getDependentProp()); - currVars.addVariable(stmt->getFixedPointId(), READ_WRITE); + usedVariables_t currVars = getVarsExpr(stmt->getDependentProp()); + currVars.addVariable(stmt->getFixedPointId(), USED_DEFINED); currVars.merge(getVarsStatement(stmt->getBody())); return currVars; } -usedVariables blockVarsAnalyser::getVarsUnary(unary_stmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsUnary(unary_stmt *stmt) { Expression *unaryExpr = stmt->getUnaryExpr(); Expression *varExpr = unaryExpr->getUnaryExpr(); - usedVariables currUsed; + usedVariables_t currUsed; if (varExpr->isIdentifierExpr()) - currUsed.addVariable(varExpr->getId(), READ_WRITE); + currUsed.addVariable(varExpr->getId(), USED_DEFINED); else if (varExpr->isPropIdExpr()) { - currUsed.addVariable(varExpr->getPropId()->getIdentifier1(), READ); - currUsed.addVariable(varExpr->getPropId()->getIdentifier2(), WRITE); + currUsed.addVariable(varExpr->getPropId()->getIdentifier1(), USED); + currUsed.addVariable(varExpr->getPropId()->getIdentifier2(), DEFINED); } return currUsed; } -usedVariables blockVarsAnalyser::getVarsBFS(iterateBFS *stmt) +usedVariables_t blockVarsAnalyser::getVarsBFS(iterateBFS *stmt) { - usedVariables currVars = getVarsStatement(stmt->getBody()); + usedVariables_t currVars = getVarsStatement(stmt->getBody()); if (stmt->getRBFS() != nullptr) { iterateReverseBFS *RBFSstmt = stmt->getRBFS(); @@ -141,10 +136,10 @@ usedVariables blockVarsAnalyser::getVarsBFS(iterateBFS *stmt) return currVars; } -usedVariables blockVarsAnalyser::getVarsForAll(forallStmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsForAll(forallStmt *stmt) { - usedVariables currVars = getVarsStatement(stmt->getBody()); - currVars.removeVariable(stmt->getIterator(), READ_WRITE); + usedVariables_t currVars = getVarsStatement(stmt->getBody()); + currVars.removeVariable(stmt->getIterator(), USED_DEFINED); if(stmt->isSourceProcCall()) { @@ -157,12 +152,12 @@ usedVariables blockVarsAnalyser::getVarsForAll(forallStmt *stmt) else if(!stmt->isSourceField()) { Identifier *iden = stmt->getSource(); - currVars.addVariable(iden, READ); + currVars.addVariable(iden, USED); } else { PropAccess *propId = stmt->getPropSource(); - currVars.addVariable(propId->getIdentifier1(), READ); + currVars.addVariable(propId->getIdentifier1(), USED); } if (stmt->hasFilterExpr()) @@ -171,12 +166,12 @@ usedVariables blockVarsAnalyser::getVarsForAll(forallStmt *stmt) return currVars; } -usedVariables blockVarsAnalyser::getVarsBlock(blockStatement *blockStmt) +usedVariables_t blockVarsAnalyser::getVarsBlock(blockStatement *blockStmt) { list stmtList = blockStmt->returnStatements(); list declVars; - usedVariables currVars; + usedVariables_t currVars; for (statement *stmt : stmtList) { if (stmt->getTypeofNode() == NODE_DECL) @@ -186,29 +181,26 @@ usedVariables blockVarsAnalyser::getVarsBlock(blockStatement *blockStmt) if (decl->isInitialized()) { - usedVariables exprVars = getVarsExpr(decl->getExpressionAssigned()); - for (Identifier *dVars : declVars) - exprVars.removeVariable(dVars, READ_WRITE); - + usedVariables_t exprVars = getVarsExpr(decl->getExpressionAssigned()); currVars.merge(exprVars); } } else { - usedVariables stmtVars = getVarsStatement(stmt); - for (Identifier *dVars : declVars) - stmtVars.removeVariable(dVars, READ_WRITE); - + usedVariables_t stmtVars = getVarsStatement(stmt); currVars.merge(stmtVars); } } + for (Identifier *dVars : declVars) + currVars.removeVariable(dVars, USED_DEFINED); + return currVars; } -usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) +usedVariables_t blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) { - usedVariables currVars; + usedVariables_t currVars; auto getVarsReductionCall = [this, &currVars](reductionCall* callExpr) -> void { @@ -222,14 +214,14 @@ usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) { if(stmt->getLhsType() == 1) { - currVars.addVariable(stmt->getLeftId(), WRITE); + currVars.addVariable(stmt->getLeftId(), DEFINED); getVarsReductionCall(stmt->getReducCall()); } else if(stmt->getLhsType() == 2) { PropAccess* propId = stmt->getPropAccess(); - currVars.addVariable(propId->getIdentifier1(), READ); - currVars.addVariable(propId->getIdentifier2(), WRITE); + currVars.addVariable(propId->getIdentifier1(), USED); + currVars.addVariable(propId->getIdentifier2(), DEFINED); getVarsReductionCall(stmt->getReducCall()); } @@ -241,20 +233,20 @@ usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) if(node->getTypeofNode() == NODE_ID) { Identifier* iden = (Identifier*)node; - currVars.addVariable(iden, WRITE); + currVars.addVariable(iden, DEFINED); affectedId = iden; } else if(node->getTypeofNode() == NODE_PROPACCESS) { PropAccess* propId = (PropAccess*)node; - currVars.addVariable(propId->getIdentifier1(), READ); - currVars.addVariable(propId->getIdentifier2(), WRITE); + currVars.addVariable(propId->getIdentifier1(), USED); + currVars.addVariable(propId->getIdentifier2(), DEFINED); affectedId = propId->getIdentifier2(); } if(affectedId->getSymbolInfo()->getId()->get_fp_association()) { Identifier* fpId = affectedId->getSymbolInfo()->getId()->get_fpIdNode(); - currVars.addVariable(fpId, WRITE); + currVars.addVariable(fpId, DEFINED); } } getVarsReductionCall(stmt->getReducCall()); @@ -264,13 +256,13 @@ usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) if(node->getTypeofNode() == NODE_ID) { Identifier* iden = (Identifier*)node; - currVars.addVariable(iden, WRITE); + currVars.addVariable(iden, DEFINED); } else if(node->getTypeofNode() == NODE_PROPACCESS) { PropAccess* propId = (PropAccess*)node; - currVars.addVariable(propId->getIdentifier1(), READ); - currVars.addVariable(propId->getIdentifier2(), WRITE); + currVars.addVariable(propId->getIdentifier1(), USED); + currVars.addVariable(propId->getIdentifier2(), DEFINED); } } } @@ -279,14 +271,14 @@ usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) { if(stmt->isLeftIdentifier()) { - currVars.addVariable(stmt->getLeftId(), READ_WRITE); + currVars.addVariable(stmt->getLeftId(), USED_DEFINED); currVars.merge(getVarsExpr(stmt->getRightSide())); } else { PropAccess* propId = stmt->getPropAccess(); - currVars.addVariable(propId->getIdentifier1(), READ); - currVars.addVariable(propId->getIdentifier2(), READ_WRITE); + currVars.addVariable(propId->getIdentifier1(), USED); + currVars.addVariable(propId->getIdentifier2(), USED_DEFINED); currVars.merge(getVarsExpr(stmt->getRightSide())); } @@ -294,27 +286,29 @@ usedVariables blockVarsAnalyser::getVarsReduction(reductionCallStmt *stmt) return currVars; } -usedVariables blockVarsAnalyser::getVarsProcCall(proc_callStmt *procCall) +usedVariables_t blockVarsAnalyser::getVarsProcCall(proc_callStmt *procCall) { proc_callExpr *callExpr = procCall->getProcCallExpr(); return getVarsExprProcCall(callExpr); } -usedVariables blockVarsAnalyser::getVarsExprProcCall(proc_callExpr *procCall) +usedVariables_t blockVarsAnalyser::getVarsExprProcCall(proc_callExpr *procCall) { - usedVariables currVars; - if(procCall->getId1() != NULL) - currVars.addVariable(procCall->getId1(), READ); + usedVariables_t currVars; + // if(procCall->getId1() != NULL) + // currVars.addVariable(procCall->getId1(), USED); for (argument *arg : procCall->getArgList()) { if (arg->isExpr()) currVars.merge(getVarsExpr(arg->getExpr())); + else if (arg->isAssignExpr()) + currVars.merge(getVarsAssignment(arg->getAssignExpr())); } return currVars; } -usedVariables blockVarsAnalyser::getVarsStatement(statement *stmt) +usedVariables_t blockVarsAnalyser::getVarsStatement(statement *stmt) { switch (stmt->getTypeofNode()) { @@ -345,8 +339,8 @@ usedVariables blockVarsAnalyser::getVarsStatement(statement *stmt) case NODE_REDUCTIONCALLSTMT: return getVarsReduction((reductionCallStmt *)stmt); - // case NODE_ITRBFS: - // return getVarsBFS((iterateBFS *)stmt); + case NODE_ITRBFS: + return getVarsBFS((iterateBFS *)stmt); case NODE_FIXEDPTSTMT: return getVarsFixedPoint((fixedPointStmt *)stmt); @@ -355,5 +349,5 @@ usedVariables blockVarsAnalyser::getVarsStatement(statement *stmt) return getVarsProcCall((proc_callStmt *)stmt); } - return usedVariables(); + return usedVariables_t(); } \ No newline at end of file diff --git a/src/analyser/blockVars/setVarsInParallel.cpp b/src/analyser/blockVars/setVarsInParallel.cpp new file mode 100644 index 00000000..52c6e268 --- /dev/null +++ b/src/analyser/blockVars/setVarsInParallel.cpp @@ -0,0 +1,78 @@ +#include "blockVarsAnalyser.h" + +void blockVarsAnalyser::setVarsInParallelStatment(statement* stmt) +{ + switch (stmt->getTypeofNode()) + { + case NODE_BLOCKSTMT: + setVarsInParallelBlock((blockStatement*)stmt); break; + case NODE_ASSIGN: + setVarsInParallelAssign((assignment*)stmt); break; + case NODE_FORALLSTMT: + setVarsInParallelForAll((forallStmt*)stmt); break; + case NODE_ITRBFS: + setVarsInParallelBFS((iterateBFS*)stmt); break; + default: + break; + } +} + +void blockVarsAnalyser::setVarsInParallelBlock(blockStatement* block) +{ + // Iterate over all the statements in the block + list stmts = block->returnStatements(); + for (auto stmt: stmts) + { + setVarsInParallelStatment(stmt); + } +} + +void blockVarsAnalyser::setVarsInParallelAssign(assignment* assign) +{ + if(assign->lhs_isIdentifier()) + { + Identifier* lhs = assign->getId(); + // Check if it has a property copy + if (assign->hasPropCopy()) + { + // Set lhs and rhs identifiers as parallel + // assert(assign->lhs_isIdentifier() && assign->getExpr()->getExpressionFamily() == EXPR_ID); + Identifier* rhs = assign->getExpr()->getId(); + lhs->getSymbolInfo()->setInParallelSection(true); + rhs->getSymbolInfo()->setInParallelSection(true); + } + } +} + +void blockVarsAnalyser::setVarsInParallelForAll(forallStmt* forall) +{ + // Check if the statement is a forall + if (!forall->isForall()) + return; + + // get used variables in the forall body + usedVariables_t usedVars = getVarsStatement(forall->getBody()); + // Set the flag of the tableentry of the variables in the parallel section + for (auto var: usedVars.getVariables()) + var->getSymbolInfo()->setInParallelSection(true); +} + +void blockVarsAnalyser::setVarsInParallelBFS(iterateBFS* bfs) +{ + // get used variables in the BFS body + usedVariables_t usedVars = getVarsStatement(bfs->getBody()); + + // Check if bfs has a reverse bfs attached + if (bfs->getRBFS() != NULL) + { + iterateReverseBFS* rbfs = bfs->getRBFS(); + // get used variables in the reverse BFS body + usedVars.merge(getVarsStatement(rbfs->getBody())); + if (rbfs->getBFSFilter() != NULL) + usedVars.merge(getVarsExpr(rbfs->getBFSFilter())); + } + + // Set the flag of the tableentry of the variables in the parallel section + for (auto var: usedVars.getVariables()) + var->getSymbolInfo()->setInParallelSection(true); +} \ No newline at end of file diff --git a/src/analyser/deviceVars/deviceVarsAnalyser.cpp b/src/analyser/deviceVars/deviceVarsAnalyser.cpp index 9eff457b..b50e9537 100644 --- a/src/analyser/deviceVars/deviceVarsAnalyser.cpp +++ b/src/analyser/deviceVars/deviceVarsAnalyser.cpp @@ -434,6 +434,9 @@ void deviceVarsAnalyser::analyseFunc(ASTNode *proc) paramVars.push_back(fParam->getIdentifier()); } initStatement(func->getBlockStatement(), paramVars); + for (Identifier* id: gpuUsedVars.getVariables()) { + id->getSymbolInfo()->setInParallelSection(true); + } lattice inpLattice; for(Identifier* iden: paramVars){ diff --git a/src/analyser/deviceVars/deviceVarsInit.cpp b/src/analyser/deviceVars/deviceVarsInit.cpp index 19ac4fee..3017f49c 100644 --- a/src/analyser/deviceVars/deviceVarsInit.cpp +++ b/src/analyser/deviceVars/deviceVarsInit.cpp @@ -206,10 +206,12 @@ bool deviceVarsAnalyser::initItrBFS(iterateBFS *stmt, list &vars) for (Identifier *iden : vars) bVars.removeVariable(iden, READ_WRITE); - Identifier *itr = bVars.getVariables(READ_WRITE).front(); - revNode->usedVars = getVarsStatement(revStmt->getBody()); - revNode->usedVars.removeVariable(itr, READ_WRITE); + + if (bVars.getVariables().size() > 0) { + Identifier *itr = bVars.getVariables(READ_WRITE).front(); + revNode->usedVars.removeVariable(itr, READ_WRITE); + } revStmt->initUsedVariable(revNode->usedVars.getVariables()); gpuUsedVars.merge(revNode->usedVars); diff --git a/src/analyser/deviceVars/getUsedVars.cpp b/src/analyser/deviceVars/getUsedVars.cpp index 07444d73..41fba2cb 100644 --- a/src/analyser/deviceVars/getUsedVars.cpp +++ b/src/analyser/deviceVars/getUsedVars.cpp @@ -7,6 +7,10 @@ usedVariables deviceVarsAnalyser::getVarsExpr(Expression *expr) if (expr->isIdentifierExpr()) { Identifier *iden = expr->getId(); + if (iden) + cout << "Identifier: " << iden->getIdentifier() << endl; + else + cout << "Identifier is NULL" << endl; result.addVariable(iden, READ); } else if (expr->isPropIdExpr()) diff --git a/src/analyser/getUsedVars/getUsedVars.cpp b/src/analyser/getUsedVars/getUsedVars.cpp index e8ccd240..7a2ebb4a 100644 --- a/src/analyser/getUsedVars/getUsedVars.cpp +++ b/src/analyser/getUsedVars/getUsedVars.cpp @@ -1,4 +1,4 @@ -#include "analyserUtil.cpp" +w#include "analyserUtil.cpp" usedVariables getVarsExpr(Expression *expr) { diff --git a/src/ast/ASTNode.hpp b/src/ast/ASTNode.hpp index 8bdbba1a..ba913573 100644 --- a/src/ast/ASTNode.hpp +++ b/src/ast/ASTNode.hpp @@ -9,6 +9,8 @@ using namespace std; +class NodeBlockData; + class ASTNode { protected: @@ -17,6 +19,7 @@ class ASTNode NODETYPE typeofNode; SymbolTable* var_symbTab; SymbolTable* prop_symbTab; + NodeBlockData* blockData; public: ASTNode() { @@ -54,7 +57,15 @@ class ASTNode return prop_symbTab; } + void setBlockData(NodeBlockData* blockData) + { + this->blockData = blockData; + } + NodeBlockData* getBlockData() + { + return blockData; + } }; diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 992823a5..3f96fd66 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -11,6 +11,7 @@ #include #include #include "../maincontext/enum_def.hpp" +#include "MetaDataUsed.hpp" @@ -418,11 +419,7 @@ class Function:public ASTNode bool hasReturn; int funcType ; - bool isMetaUsed; // if d_meta is used in function - bool isDataUsed; // if d_data is used in function - bool isSrcUsed; // if d_src is used in function - bool isWeightUsed; // if d_weight is used in function - bool isRevMetaUsed; // if d_rev_meta is used in function + MetaDataUsed metadata; public: Function() { @@ -431,11 +428,7 @@ class Function:public ASTNode funcType = 0; initialLockDecl = false; createSymbTab(); - isMetaUsed = false; - isDataUsed = false; - isSrcUsed = false; - isWeightUsed = false; - isRevMetaUsed = false; + metadata = MetaDataUsed(); } static Function* createFunctionNode(Identifier* funcId,list paramList) @@ -556,45 +549,48 @@ class Function:public ASTNode bool getIsMetaUsed() { - return isMetaUsed; + return metadata.isMetaUsed; } void setIsMetaUsed() { - this->isMetaUsed = true; + metadata.isMetaUsed = true; } bool getIsDataUsed() { - return isDataUsed; + return metadata.isDataUsed; } void setIsDataUsed() { - this->isDataUsed = true; + metadata.isDataUsed = true; } bool getIsSrcUsed() { - return isSrcUsed; + return metadata.isSrcUsed; } void setIsSrcUsed() { - this->isSrcUsed = true; + metadata.isSrcUsed = true; } bool getIsWeightUsed() { - return isWeightUsed; + return metadata.isWeightUsed; } void setIsWeightUsed() { - this->isWeightUsed = true; + metadata.isWeightUsed = true; } bool getIsRevMetaUsed() { - return isRevMetaUsed; + return metadata.isRevMetaUsed; } void setIsRevMetaUsed() { - this->isRevMetaUsed = true; + metadata.isRevMetaUsed = true; + } + + MetaDataUsed getMetaDataUsed() { + return metadata; } - }; class Type:public ASTNode @@ -1952,11 +1948,7 @@ class fixedPointStmt:public statement list usedVars; list doubleBufferVars; // the propnodes which need to be double buffered - bool isMetaUsed; // if d_meta is used in forall - bool isDataUsed; // if d_data is used in forall - bool isSrcUsed; // if d_src is used in forall - bool isWeightUsed; // if d_weight is used in forall - bool isRevMetaUsed; // if d_rev_meta is used in forall + MetaDataUsed metadata; public: forallStmt() { @@ -1971,11 +1963,7 @@ class fixedPointStmt:public statement isSourceId=false; createSymbTab(); filterExprAssoc = false; - isMetaUsed = false; - isDataUsed = false; - isSrcUsed = false; - isWeightUsed = false; - isRevMetaUsed = false; + metadata = MetaDataUsed(); } static forallStmt* createforallStmt(Identifier* iterator,Identifier* sourceGraph,proc_callExpr* extractElemFunc,statement* body,Expression* filterExpr,bool isforall) @@ -2168,43 +2156,43 @@ class fixedPointStmt:public statement } bool getIsMetaUsed() { - return isMetaUsed; + return metadata.isMetaUsed; } void setIsMetaUsed() { - this->isMetaUsed = true; + metadata.isMetaUsed = true; } bool getIsDataUsed() { - return isDataUsed; + return metadata.isDataUsed; } void setIsDataUsed() { - this->isDataUsed = true; + metadata.isDataUsed = true; } bool getIsSrcUsed() { - return isSrcUsed; + return metadata.isSrcUsed; } void setIsSrcUsed() { - this->isSrcUsed = true; + metadata.isSrcUsed = true; } bool getIsWeightUsed() { - return isWeightUsed; + return metadata.isWeightUsed; } void setIsWeightUsed() { - this->isWeightUsed = true; + metadata.isWeightUsed = true; } bool getIsRevMetaUsed() { - return isRevMetaUsed; + return metadata.isRevMetaUsed; } void setIsRevMetaUsed() { - this->isRevMetaUsed = true; + metadata.isRevMetaUsed = true; } void addDoubleBufferVar(Identifier* var) { @@ -2214,6 +2202,10 @@ class fixedPointStmt:public statement list getDoubleBufferVars() { return doubleBufferVars; } + + MetaDataUsed getMetaDataUsed() { + return metadata; + } }; class reductionCall:public ASTNode diff --git a/src/ast/MetaDataUsed.hpp b/src/ast/MetaDataUsed.hpp new file mode 100644 index 00000000..0a0a8776 --- /dev/null +++ b/src/ast/MetaDataUsed.hpp @@ -0,0 +1,111 @@ +#ifndef METADATAUSED_HPP +#define METADATAUSED_HPP + +#include + +class MetaDataUsed +{ + public: + bool isMetaUsed; // if d_meta is used in the ASTNode + bool isRevMetaUsed; // if d_rev_meta is used in the ASTNode + bool isDataUsed; // if d_data is used in the ASTNode + bool isSrcUsed; // if d_src is used in the ASTNode + bool isWeightUsed; // if d_weight is used in the ASTNode + + MetaDataUsed() + { + isMetaUsed = false; + isRevMetaUsed = false; + isDataUsed = false; + isSrcUsed = false; + isWeightUsed = false; + } + + operator bool() const + { + return isMetaUsed || isRevMetaUsed || isDataUsed || isSrcUsed || isWeightUsed; + } + + MetaDataUsed& operator|= (const MetaDataUsed& rhs) + { + isMetaUsed = isMetaUsed || rhs.isMetaUsed; + isRevMetaUsed = isRevMetaUsed || rhs.isRevMetaUsed; + isDataUsed = isDataUsed || rhs.isDataUsed; + isSrcUsed = isSrcUsed || rhs.isSrcUsed; + isWeightUsed = isWeightUsed || rhs.isWeightUsed; + return *this; + } + + MetaDataUsed& operator&= (const MetaDataUsed& rhs) + { + isMetaUsed = isMetaUsed && rhs.isMetaUsed; + isRevMetaUsed = isRevMetaUsed && rhs.isRevMetaUsed; + isDataUsed = isDataUsed && rhs.isDataUsed; + isSrcUsed = isSrcUsed && rhs.isSrcUsed; + isWeightUsed = isWeightUsed && rhs.isWeightUsed; + return *this; + } + + MetaDataUsed& operator^= (const MetaDataUsed& rhs) + { + isMetaUsed = isMetaUsed ^ rhs.isMetaUsed; + isRevMetaUsed = isRevMetaUsed ^ rhs.isRevMetaUsed; + isDataUsed = isDataUsed ^ rhs.isDataUsed; + isSrcUsed = isSrcUsed ^ rhs.isSrcUsed; + isWeightUsed = isWeightUsed ^ rhs.isWeightUsed; + return *this; + } + + MetaDataUsed& operator= (const MetaDataUsed& rhs) + { + isMetaUsed = rhs.isMetaUsed; + isRevMetaUsed = rhs.isRevMetaUsed; + isDataUsed = rhs.isDataUsed; + isSrcUsed = rhs.isSrcUsed; + isWeightUsed = rhs.isWeightUsed; + return *this; + } + + MetaDataUsed operator| (const MetaDataUsed& rhs) const + { + MetaDataUsed result = *this; + result |= rhs; + return result; + } + + MetaDataUsed operator& (const MetaDataUsed& rhs) const + { + MetaDataUsed result = *this; + result &= rhs; + return result; + } + + MetaDataUsed operator^ (const MetaDataUsed& rhs) const + { + MetaDataUsed result = *this; + result ^= rhs; + return result; + } + + MetaDataUsed operator~ () const + { + MetaDataUsed result = *this; + result.isMetaUsed = !result.isMetaUsed; + result.isRevMetaUsed = !result.isRevMetaUsed; + result.isDataUsed = !result.isDataUsed; + result.isSrcUsed = !result.isSrcUsed; + result.isWeightUsed = !result.isWeightUsed; + return result; + } + + void print() + { + std::cout << "isMetaUsed: " << isMetaUsed << std::endl; + std::cout << "isRevMetaUsed: " << isRevMetaUsed << std::endl; + std::cout << "isDataUsed: " << isDataUsed << std::endl; + std::cout << "isSrcUsed: " << isSrcUsed << std::endl; + std::cout << "isWeightUsed: " << isWeightUsed << std::endl; + } +}; + +#endif \ No newline at end of file diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index 257dc949..f9c4b7a6 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -812,7 +812,11 @@ void dsl_cpp_generator::generateReductionOpStmt(reductionCallStmt* stmt, //~ if(strcmp("long",typVar)==0) //~ sprintf(strBuffer, "atomicAdd(& %s, (long %s int)",id->getIdentifier(), typVar); //~ else - sprintf(strBuffer, "atomicAdd(& %s, (%s)", id->getIdentifier(), typVar); + if (strcmp("long", typVar) == 0) { + sprintf(strBuffer, "atomicAdd((unsigned long long*)& %s, (unsigned long long)", id->getIdentifier()); + } else { + sprintf(strBuffer, "atomicAdd(& %s, (%s)", id->getIdentifier(), typVar); + } targetFile.pushString(strBuffer); generateExpr(stmt->getRightSide(), isMainFile); targetFile.pushstr_newL(");"); @@ -3171,8 +3175,9 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { if(func->getIsMetaUsed() || func->getIsRevMetaUsed()) { main.pushstr_newL("for(int i=0; i<= V; i++) {"); + main.pushstr_newL("int temp;"); if(func->getIsMetaUsed()) { - sprintf(strBuffer, "int temp = %s.indexofNodes[i];", gId); + sprintf(strBuffer, "temp = %s.indexofNodes[i];", gId); main.pushstr_newL(strBuffer); main.pushstr_newL("h_meta[i] = temp;"); } @@ -3187,8 +3192,9 @@ void dsl_cpp_generator::generateCSRArrays(const char* gId, Function* func) { if(func->getIsDataUsed() || func->getIsSrcUsed() || func->getIsWeightUsed()) { main.pushstr_newL("for(int i=0; i< E; i++) {"); + main.pushstr_newL("int temp;"); if(func->getIsDataUsed()) { - sprintf(strBuffer, "int temp = %s.edgeList[i];", gId); + sprintf(strBuffer, "temp = %s.edgeList[i];", gId); main.pushstr_newL(strBuffer); main.pushstr_newL("h_data[i] = temp;"); } diff --git a/src/backends/backend_openACC/dsl_cpp_generator.cpp b/src/backends/backend_openACC/dsl_cpp_generator.cpp index 7f20bacb..d9422c57 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.cpp +++ b/src/backends/backend_openACC/dsl_cpp_generator.cpp @@ -1,9 +1,25 @@ #include "dsl_cpp_generator.h" #include "../../ast/ASTHelper.cpp" -#include +#include #include -extern usedVariables getVarsStatement(statement* stmt); +#include "getMetaDataUsed.cpp" + +extern usedVariables getVarsStatement(statement*); +extern usedVariables getVarsExpr(Expression*); + +bool presentInSet(set currAccVars, TableEntry* var) { + return currAccVars.find(var) != currAccVars.end(); +} + +bool presentInOut(statement* stmt, Identifier* var) { + set out = stmt->getBlockData()->getBlock()->getOut(); + return out.find(var->getSymbolInfo()) != out.end(); +} + +void insertInSet(set& currAccVars, TableEntry* var) { + currAccVars.insert(var); +} //~ using namespace spacc; namespace spacc{ @@ -731,17 +747,28 @@ void dsl_cpp_generator::generateDoWhileStmt(dowhileStmt* doWhile) char strBuffer[1024]; vector graph_arr = graphId[curFuncType][curFuncCount()]; char* graph_name = graph_arr[0]->getIdentifier(); //Graph variable name identifier - + MetaDataUsed prevMetaDataUsed = currMetaAccVars; // to restore the previous metadata used + set prevAccVars = currAccVars; // to restore the previous acc vars used + //----------------------------These data copies are particularly for PR-------------- + // sprintf(strBuffer, "#pragma acc data copyin(%s)", graph_name); + // main.pushstr_newL(strBuffer); + // main.pushstr_newL("{"); //Start of outer openAcc data body + // sprintf(strBuffer, "#pragma acc data copyin( %s.srcList[0:%s.num_edges()+1], %s.indexofNodes[:%s.num_nodes()+1], %s.rev_indexofNodes[:%s.num_nodes()+1] )", graph_name, graph_name, graph_name, graph_name, graph_name, graph_name); + // main.pushstr_space(strBuffer); + // sprintf(strBuffer,"copy(pageRank[0 : %s.num_nodes()]) copyin(pageRank_nxt[0 : %s.num_nodes()])", graph_name, graph_name); //NOTE: pageRank can be taken from AST??? + // main.pushstr_newL(strBuffer); + // main.pushstr_newL("{"); //Start of inner openAcc data body + //------------------------------------------------------------------- + sprintf(strBuffer, "#pragma acc data copyin(%s)", graph_name); main.pushstr_newL(strBuffer); main.pushstr_newL("{"); //Start of outer openAcc data body - sprintf(strBuffer, "#pragma acc data copyin( %s.srcList[0:%s.num_edges()+1], %s.indexofNodes[:%s.num_nodes()+1], %s.rev_indexofNodes[:%s.num_nodes()+1] )", graph_name, graph_name, graph_name, graph_name, graph_name, graph_name); - main.pushstr_space(strBuffer); - sprintf(strBuffer,"copy(pageRank[0 : %s.num_nodes()]) copyin(pageRank_nxt[0 : %s.num_nodes()])", graph_name, graph_name); //NOTE: pageRank can be taken from AST??? - main.pushstr_newL(strBuffer); + + main.pushString("#pragma acc data"); // start openACC data directive + generateDataDirectiveForStatment(doWhile); + main.pushstr_newL("{"); //Start of inner openAcc data body - //------------------------------------------------------------------- main.pushstr_newL("do"); generateStatement(doWhile->getBody()); @@ -751,9 +778,11 @@ void dsl_cpp_generator::generateDoWhileStmt(dowhileStmt* doWhile) //-------------OPENACC DATA CLOSE-------------------------------------- main.NewLine(); - main.pushstr_newL("}"); //End of inner openacc data body + main.pushstr_newL("}"); //End of inner openacc data body (for metaDataUsed) main.pushstr_newL("}"); //End of 1st openACC data body (for copy(g)) + currMetaAccVars = prevMetaDataUsed; // restore the previous metadata used + currAccVars = prevAccVars; } void dsl_cpp_generator::generateIfStmt(ifStmt* ifstmt) @@ -854,7 +883,7 @@ void dsl_cpp_generator::generateAssignmentStmt(assignment* asmt) //When propnod char strBuffer[1024]; Expression* exprAssigned = asmt->getExpr(); vector graphIds = graphId[curFuncType][curFuncCount()]; - + char* graph_name = graphIds[0]->getIdentifier(); if(asmt->lhs_isIdentifier()) { @@ -866,12 +895,18 @@ void dsl_cpp_generator::generateAssignmentStmt(assignment* asmt) //When propnod Identifier* rhsPropId2 = exprAssigned->getId(); main.NewLine(); - //main.pushstr_newL("#pragma acc data copyin (g)"); - //main.pushstr_newL("{"); + // sprintf(strBuffer, "#pragma acc data copyin(%s)", graph_name); + // main.pushstr_newL(strBuffer); + // main.pushstr_newL("{"); + + main.pushstr_space("#pragma acc data"); + generateDataDirectiveForStatment(asmt); + main.pushstr_newL("{"); + //main.pushstr_newL("#pragma acc data copyout( modified[0: num_nodes], modified_nxt[0: num_nodes], dist[0: num_nodes+1] )"); //main.pushstr_newL("{"); main.pushstr_newL("#pragma acc parallel loop"); - sprintf(strBuffer,"for (%s %s = 0; %s < %s.%s(); %s ++) ","int", "node" ,"node",graphIds[0]->getIdentifier(),"num_nodes","node"); + sprintf(strBuffer,"for (%s %s = 0; %s < %s.%s(); %s ++) ","int", "node" ,"node",graph_name,"num_nodes","node"); main.pushstr_newL(strBuffer); /* the graph associated */ main.pushstr_newL("{"); @@ -879,8 +914,8 @@ void dsl_cpp_generator::generateAssignmentStmt(assignment* asmt) //When propnod main.pushstr_newL(strBuffer); main.pushstr_newL("}"); - //main.pushstr_newL("}"); //-----openacc data close - //main.pushstr_newL("}"); //-----openacc data close + main.pushstr_newL("}"); //-----openacc data close + // main.pushstr_newL("}"); //-----openacc data close } else @@ -981,36 +1016,84 @@ void dsl_cpp_generator::generateProcCall(proc_callStmt* proc_callStmt) //Attac //++++++++++++++++++++++Generate data pragma for this attachNodeProperty() procedureCall with all the array names+++++++++++++++++++++++++++++++++++++++++++++++++++ main.NewLine(); - sprintf(strBuffer, "#pragma acc data copyin(%s)", graph_name); //Copy the graph object to GPU first (shallow-copy) - main.pushstr_newL(strBuffer); - main.pushstr_newL("{"); //opening bracket for 1st outer data region + // sprintf(strBuffer, "#pragma acc data copyin(%s)", graph_name); //Copy the graph object to GPU first (shallow-copy) + // main.pushstr_newL(strBuffer); + // main.pushstr_newL("{"); //opening bracket for 1st outer data region - main.pushString("#pragma acc data copyout( "); //Since we are just setting values to arrays, it it sufficient to copyout + main.pushString("#pragma acc data copyout("); //Since we are just setting values to arrays, it it sufficient to copyout + bool first = true; //To generate comma before every array except the first one //Iterate all the arguments inside the attachNodeProperty(--) or attachEdgeProperty(--) procedure calls. (Example: dist=INF) for(itr=argList.begin();itr!=argList.end();itr++) { - //To generate comma before every array except the first one - if(itr != argList.begin()) + assignment* assign=(*itr)->getAssignExpr(); //Get the Assignment statement AST node + Identifier* lhsId=assign->getId(); //Get LHS identifier. Example: dist + Expression* exprAssigned = assign->getExpr(); //Get RHS expression assigned. Here Example: INF + + if (presentInOut(proc_callStmt, lhsId)) { - main.pushString(", "); - } + //To generate comma before every array except the first one + if(first) first = false; + else main.pushString(", "); + + sprintf(strBuffer,"%s[0: %s.num_nodes()]",lhsId->getIdentifier(), graph_name); //num_nodes() because this is attachNodePropoperty, need to apply to values of all nodes + main.pushString(strBuffer); + + if(lhsId->getSymbolInfo()->getId()->require_redecl()) //If a lhs array requires redclaration: Example: modified requires modified_nxt + { + main.pushString(", "); + sprintf(strBuffer,"%s_nxt[0: %s.num_nodes()]",lhsId->getIdentifier(),graph_name); + main.pushString(strBuffer); + } + } + } + main.pushstr_space(")"); //Close bracket for #pragma acc data copyout(---- + + first = true; + main.pushstr_space(" copyin("); // Getiing the values used to set the lhs + //Iterate all the arguments inside the attachNodeProperty(--) or attachEdgeProperty(--) procedure calls. (Example: dist=INF) + for(itr=argList.begin();itr!=argList.end();itr++) + { assignment* assign=(*itr)->getAssignExpr(); //Get the Assignment statement AST node Identifier* lhsId=assign->getId(); //Get LHS identifier. Example: dist Expression* exprAssigned = assign->getExpr(); //Get RHS expression assigned. Here Example: INF - sprintf(strBuffer,"%s[0: %s.num_nodes()]",lhsId->getIdentifier(), graph_name); //num_nodes() because this is attachNodePropoperty, need to apply to values of all nodes - main.pushString(strBuffer); - if(lhsId->getSymbolInfo()->getId()->require_redecl()) //If a lhs array requires redclaration: Example: modified requires modified_nxt + usedVariables rhsUsedVars = getVarsExpr(exprAssigned); + for (Identifier* rhsId: rhsUsedVars.getVariables()) { - main.pushString(", "); - sprintf(strBuffer,"%s_nxt[0: %s.num_nodes()]",lhsId->getIdentifier(),graph_name); + if (!presentInSet(currAccVars, rhsId->getSymbolInfo())) + { + //To generate comma before every array except the first one + if(first) first = false; + else main.pushString(", "); + + Type* type = rhsId->getSymbolInfo()->getType(); + if (type->isPropNodeType()) + { + sprintf(strBuffer,"%s[0: %s.num_nodes()]",rhsId->getIdentifier(), graph_name); //num_nodes() because this is attachNodePropoperty, need to apply to values of all nodes main.pushString(strBuffer); - } - + } + else if (type->isPropEdgeType()) + { + sprintf(strBuffer,"%s[0: %s.num_edges()]",rhsId->getIdentifier(), graph_name); //num_nodes() because this is attachNodePropoperty, need to apply to values of all nodes + main.pushString(strBuffer); + } + else { + sprintf(strBuffer,"%s",rhsId->getIdentifier()); //num_nodes() because this is attachNodePropoperty, need to apply to values of all nodes + main.pushString(strBuffer); + } + + if(rhsId->getSymbolInfo()->getId()->require_redecl()) //If a lhs array requires redclaration: Example: modified requires modified_nxt + { + main.pushString(", "); + sprintf(strBuffer,"%s_nxt[0: %s.num_nodes()]",rhsId->getIdentifier(),graph_name); + main.pushString(strBuffer); + } + } + } } - main.pushstr_newL(" )"); //Close bracket for #pragma acc data copyout(---- + main.pushstr_newL(")"); main.pushstr_newL("{"); //opening bracket for 2nd data region @@ -1044,7 +1127,7 @@ void dsl_cpp_generator::generateProcCall(proc_callStmt* proc_callStmt) //Attac main.pushstr_newL("}"); //Close for loop main.pushstr_newL("}"); ///OpenAcc data region close - main.pushstr_newL("}"); ///OpenAcc data region close + // main.pushstr_newL("}"); ///OpenAcc data region close main.NewLine(); } @@ -1097,8 +1180,8 @@ void dsl_cpp_generator::generatePropertyDefination(Type* type,char* Id) { Type* targetType=type->getInnerTargetType(); vector graphIds = graphId[curFuncType][curFuncCount()]; - printf("currentFuncType %d\n",curFuncType); - printf("currentFuncCount %d graphIds[0] %ld\n",curFuncCount(), graphIds.size()); + // printf("currentFuncType %d\n",curFuncType); + // printf("currentFuncCount %d graphIds[0] %ld\n",curFuncCount(), graphIds.size()); if(targetType->gettypeId()==TYPE_INT) { @@ -1242,8 +1325,7 @@ void dsl_cpp_generator::generatePropertyDefination(Type* type,char* Id) } -void dsl_cpp_generator:: -generateForAll_header(forallStmt* forAll) //Required only if there is reduction operation +void dsl_cpp_generator::generateForAll_header(forallStmt* forAll) //Required only if there is reduction operation { //main.pushString("#pragma omp parallel for"); //This needs to be changed to checked for 'For' inside a parallel section. @@ -1253,104 +1335,23 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti vector graph_arr = graphId[curFuncType][curFuncCount()]; char* graph_name = graph_arr[0]->getIdentifier(); //Graph variable name identifier - sprintf(strBuffer1,"#pragma acc data copyin(%s)", graph_name); + // sprintf(strBuffer1,"#pragma acc data copyin(%s)", graph_name); + // main.pushstr_newL(strBuffer1); + // main.pushstr_newL("{"); //--------------------------------------------- + // //main.pushString("#pragma acc data copyin(g)"); main.NewLine(); + // // sprintf(strBuffer1, "#pragma acc data copyin( %s.indexofNodes[:%s.num_nodes()+1], %s.edgeList[0:%s.num_edges()] )", graph_name, graph_name, graph_name, graph_name ); + // // main.pushString(strBuffer1); + // // main.space(); + + //-----------------------------generating code only for the variables used in the forall loop------------------ + sprintf(strBuffer1, "#pragma acc data copyin(%s)", graph_name); main.pushstr_newL(strBuffer1); main.pushstr_newL("{"); //--------------------------------------------- - //main.pushString("#pragma acc data copyin(g)"); main.NewLine(); - // sprintf(strBuffer1, "#pragma acc data copyin( %s.indexofNodes[:%s.num_nodes()+1], %s.edgeList[0:%s.num_edges()] )", graph_name, graph_name, graph_name, graph_name ); - // main.pushString(strBuffer1); - // main.space(); - sprintf(strBuffer1, "#pragma acc data copyin("); - main.pushString(strBuffer1); - main.space(); - bool isFirstVar = true; - if(forAll->getIsMetaUsed()) { - if(!isFirstVar) main.push(','); - sprintf(strBuffer1, "%s.indexOfNodes[:%s.num_nodes()+1]", graph_name, graph_name); - main.pushString(strBuffer1); - main.space(); - isFirstVar = false; - } - if(forAll->getIsRevMetaUsed()) { - if(!isFirstVar) main.push(','); - sprintf(strBuffer1, "%s.rev_indexOfNodes[:%s.num_nodes()+1]", graph_name, graph_name); - main.pushString(strBuffer1); - main.space(); - isFirstVar = false; - } - if(forAll->getIsDataUsed()) { - if(!isFirstVar) main.push(','); - sprintf(strBuffer1, "%s.edgeList[:%s.num_edges()+1]", graph_name, graph_name); - main.pushString(strBuffer1); - main.space(); - isFirstVar = false; - } - if(forAll->getIsSrcUsed()) { - if(!isFirstVar) main.push(','); - sprintf(strBuffer1, "%s.srcList[:%s.num_edges()+1]", graph_name, graph_name); - main.pushString(strBuffer1); - main.space(); - isFirstVar = false; - } - if(forAll->getIsWeightUsed()) { - if(!isFirstVar) main.push(','); - sprintf(strBuffer1, "%s.edgeLen[:%s.num_edges()+1]", graph_name, graph_name); - main.pushString(strBuffer1); - main.space(); - isFirstVar = false; - } - main.push(')'); - main.space(); + main.pushString("#pragma acc data"); // start of pragma acc data + generateDataDirectiveForStatment(forAll); - //main.pushstr_newL("{"); - - usedVariables usedVars = getVarsStatement(forAll->getBody()); - usedVars.removeVariable(forAll->getIterator(), READ_WRITE); - for(Identifier* id: usedVars.getVariables(READ_ONLY)) { - cout << "read only " << id->getIdentifier() << endl; - Type* type = id->getSymbolInfo()->getType(); - if(type->isPropType()) { - sprintf(strBuffer1, "copyin( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); - main.pushString(strBuffer1); - main.space(); - } - else if(type->isPrimitiveType()) { - sprintf(strBuffer1, "copyin( %s )", id->getIdentifier() ); - main.pushString(strBuffer1); - main.space(); - } - } - for(Identifier* id: usedVars.getVariables(WRITE_ONLY)) { - cout << "write only " << id->getIdentifier() << endl; - Type* type = id->getSymbolInfo()->getType(); - if(type->isPropType()) { - sprintf(strBuffer1, "copyout( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); - main.pushString(strBuffer1); - main.space(); - } - else if(type->isPrimitiveType()) { - sprintf(strBuffer1, "copyout( %s )", id->getIdentifier() ); - main.pushString(strBuffer1); - main.space(); - } - } - for(Identifier* id: usedVars.getVariables(READ_AND_WRITE)) { - cout << "read and write" << id->getIdentifier() << endl; - Type* type = id->getSymbolInfo()->getType(); - if(type->isPropType()) { - sprintf(strBuffer1, "copy( %s.%s[:%s.%s()] )", graph_name, id->getIdentifier(), graph_name, id->getIdentifier() ); - main.pushString(strBuffer1); - main.space(); - } - else if(type->isPrimitiveType()) { - sprintf(strBuffer1, "copy( %s )", id->getIdentifier() ); - main.pushString(strBuffer1); - main.space(); - } - } - - main.pushstr_newL(""); + //--------------------sent only useful data to acc------------------------- //------- Generate---- copy(reduce_key1, reduce_key2....) if required.. NOTE: #pragma acc data copyin() for each respective algorithm is already generated above. Only "copy(reduce_keys)" to be generated. /*set reduce_Keys=forAll->get_reduceKeys(); @@ -1378,7 +1379,7 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti main.pushstr_newL("{"); main.pushString(""); main.pushString("#pragma acc parallel loop"); //What is the purpose of this?? - + //--------Generate reduction() for all the reduction keys--------------------- if(forAll->get_reduceKeys().size()>0) { @@ -1386,7 +1387,7 @@ generateForAll_header(forallStmt* forAll) //Required only if there is reducti //Here, adding openAcc parallel pragma for forAll loops with reduction() //main.pushString("#pragma acc parallel loop");//----------------- - printf("INSIDE GENERATE FOR ALL FOR KEYS\n"); + // printf("INSIDE GENERATE FOR ALL FOR KEYS\n"); set reduce_Keys=forAll->get_reduceKeys(); assert(reduce_Keys.size()==1); @@ -1452,7 +1453,7 @@ void dsl_cpp_generator::generateForAllSignature(forallStmt* forAll) string s(methodId); if(s.compare("nodes")==0) { - cout<<"INSIDE NODES VALUE"<<"\n"; + // cout<<"INSIDE NODES VALUE"<<"\n"; sprintf(strBuffer,"for (%s %s = 0; %s < %s.%s(); %s ++) ","int",iterator->getIdentifier(),iterator->getIdentifier(),graphId,"num_nodes",iterator->getIdentifier()); } else @@ -1648,6 +1649,7 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll) iteratorMethodId=extractElemFunc->getMethodId(); statement* body=forAll->getBody(); char strBuffer[1024]; + MetaDataUsed prevMetaDataUsed = currMetaAccVars; if(forAll->isForall()) //Check if it is a non-nested graph forall, or nested graph forall, or a plain for-loop. Only non-nested graph for-all will be parallelised. This entire if clause is to generate header for forall { @@ -1664,7 +1666,7 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll) Identifier* filterId=lhs->isIdentifierExpr()?lhs->getId():NULL; //filterId == "Modified" identifier in case of SSSP TableEntry* tableEntry=filterId!=NULL?filterId->getSymbolInfo():NULL; - if(tableEntry!=NULL && tableEntry->getId()->get_fp_association()) //THIS IF BLOCK IS MAINLY FOR SSSP ALGO + if(tableEntry!=NULL && tableEntry->getId()->get_fp_association() && false) //THIS IF BLOCK IS MAINLY FOR SSSP ALGO { //printf("finished id for filterval %s\n",tableEntry->getId()->get_fpId()); @@ -1787,6 +1789,8 @@ void dsl_cpp_generator::generateForAll(forallStmt* forAll) checkAndGenerateFixedPtFilter(forAll); } + + currMetaAccVars = prevMetaDataUsed; forallStack.pop_back(); @@ -1872,7 +1876,7 @@ void dsl_cpp_generator::generatefixedpt_filter(Expression* filterExpr) printf("size %d\n",graphIds.size());*/ if(lhs->isIdentifierExpr()) - { + { Identifier* filterId = lhs->getId(); TableEntry* tableEntry = filterId->getSymbolInfo(); if(tableEntry->getId()->get_fp_association()) @@ -1881,7 +1885,7 @@ void dsl_cpp_generator::generatefixedpt_filter(Expression* filterExpr) main.pushstr_newL("#pragma acc parallel loop"); //Openacc loop, may be need to add num_gangs sprintf(strBuffer,"for (%s %s = 0; %s < %s.%s(); %s ++) ","int","v","v",graphIds[0]->getIdentifier(),"num_nodes","v"); main.pushstr_newL(strBuffer); - main.pushstr_space("{"); + main.pushstr_newL("{"); // Open bracket for the for loop sprintf(strBuffer,"%s[%s] = %s_nxt[%s] ;",filterId->getIdentifier(),"v",filterId->getIdentifier(),"v"); main.pushstr_newL(strBuffer); /* Expression* initializer = filterId->getSymbolInfo()->getId()->get_assignedExpr(); @@ -1942,8 +1946,8 @@ void dsl_cpp_generator:: generateVariableDecl(declaration* declStmt) main.space(); main.pushString(declStmt->getdeclId()->getIdentifier()); generatePropertyDefination(type,declStmt->getdeclId()->getIdentifier()); - printf("added symbol %s\n",declStmt->getdeclId()->getIdentifier()); - printf("value requ %d\n",declStmt->getdeclId()->getSymbolInfo()->getId()->require_redecl()); + // printf("added symbol %s\n",declStmt->getdeclId()->getIdentifier()); + // printf("value requ %d\n",declStmt->getdeclId()->getSymbolInfo()->getId()->require_redecl()); /* decl with variable name as var_nxt is required for double buffering ex :- In case of fixedpoint */ if(declStmt->getdeclId()->getSymbolInfo()->getId()->require_redecl()) @@ -1957,8 +1961,36 @@ void dsl_cpp_generator:: generateVariableDecl(declaration* declStmt) } + // printf("initialization %d\n",declStmt->isInitialized()); /*placeholder for adding code for declarations that are initialized as well*/ - + if(declStmt->isInitialized()) /* Needs further modification */ + { + // if the declaration is initialized, then the expression is a property type + if (declStmt->getExpressionAssigned()->getExpressionFamily() == EXPR_ID && declStmt->getExpressionAssigned()->getId()->getSymbolInfo()->getType()->gettypeId() == type->gettypeId()) { + Identifier* propId = declStmt->getExpressionAssigned()->getId(); + vector graph_arr = graphId[curFuncType][curFuncCount()]; + char* graph_name = graph_arr[0]->getIdentifier(); //Graph variable name identifier + char buffer[1024]; + + main.pushstr_space("#pragma acc data"); + generateDataDirectiveForStatment(declStmt); + + main.pushstr_newL("{"); // start of data region + main.pushstr_newL("#pragma acc parallel loop"); + + if (type->isPropNodeType()) // for each node, copy the property value + sprintf(buffer, "for (int t = 0; t < %s.num_nodes(); t++)", graph_name); + else if (type->isPropEdgeType()) // for each edge, copy the property value + sprintf(buffer, "for (int t = 0; t < %s.num_edges(); t++)", graph_name); + main.pushstr_newL(buffer); + main.pushstr_newL("{"); + sprintf(buffer, "%s[t] = %s[t];", declStmt->getdeclId()->getIdentifier(), propId->getIdentifier()); + main.pushstr_newL(buffer); + main.pushstr_newL("}"); // end of parallel loop + + main.pushstr_newL("}"); // end of data region + } + } } @@ -2457,15 +2489,23 @@ void dsl_cpp_generator::generateFixedPoint(fixedPointStmt* fixedPointConstruct) char* graph_name = graph_arr[0]->getIdentifier(); //Graph variable name identifier //----------------------------------DATA COPY PRAGMA FOR FOR SSSP ONLY HARDCODED---------------------------------------ANALYSIS TO BE DONE---- //OpenAcc data copyin constructs: For general graph data structures - sprintf(strBuffer,"#pragma acc data copyin(%s)", graph_name); - main.pushstr_newL(strBuffer); - main.pushstr_newL("{"); + // sprintf(strBuffer,"#pragma acc data copyin(%s)", graph_name); + // main.pushstr_newL(strBuffer); + // main.pushstr_newL("{"); //main.pushString("#pragma acc data copyin(g)"); main.NewLine(); - sprintf(strBuffer, "#pragma acc data copyin( %s.edgeList[0:%s.num_edges()], %s.indexofNodes[:%s.num_nodes()+1], weight[0: %s.num_edges()], modified[0: %s.num_nodes()], modified_nxt[0:%s.num_nodes()] ) copy(dist[0:%s.num_nodes()])", graph_name, graph_name, graph_name, graph_name, graph_name, graph_name, graph_name, graph_name); - main.pushstr_newL(strBuffer); - main.pushstr_newL("{"); + // sprintf(strBuffer, "#pragma acc data copyin( %s.edgeList[0:%s.num_edges()], %s.indexofNodes[:%s.num_nodes()+1], weight[0: %s.num_edges()], modified[0: %s.num_nodes()], modified_nxt[0:%s.num_nodes()] ) copy(dist[0:%s.num_nodes()])", graph_name, graph_name, graph_name, graph_name, graph_name, graph_name, graph_name, graph_name); + // main.pushstr_newL(strBuffer); + // main.pushstr_newL("{"); //-------------------------------++++++++++++++++++++++------------------------------------------------------------------- + sprintf(strBuffer,"#pragma acc data copyin(%s)", graph_name); + main.pushstr_newL(strBuffer); + main.pushstr_newL("{"); // start of 1st data directive + + main.pushstr_space("#pragma acc data"); + generateDataDirectiveForStatment(fixedPointConstruct); + main.pushstr_newL("{"); // start of 2nd data directive + main.pushString("while ( "); main.push('!'); main.pushString(fixedPointId->getIdentifier()); @@ -2540,8 +2580,8 @@ void dsl_cpp_generator::generateFixedPoint(fixedPointStmt* fixedPointConstruct) }*/ main.pushstr_newL("}"); //Close while loop - main.pushstr_newL("}"); //----Close the openACC data region at the end of fixedpoint body - main.pushstr_newL("}"); //-----For same purpose as above + main.pushstr_newL("}"); //----Close the openACC data region at the end of fixedpoint body 2nd + main.pushstr_newL("}"); //------Close the openACC data region at the end of fixedpoint body 1st fixedPointEnv = NULL; @@ -2697,7 +2737,7 @@ const char* dsl_cpp_generator:: convertToCppType(Type* type) if(targetType->isPrimitiveType()) { int typeId=targetType->gettypeId(); - cout<<"TYPEID IN CPP"< graphIds = graphId[curFuncType][curFuncCount()]; + char* graph_name = graphIds[0]->getIdentifier(); + + switch (stmt->getTypeofNode()) { + case NODE_DOWHILESTMT: + { + dowhileStmt* doWhile = (dowhileStmt*) stmt; + + MetaDataUsed metaUsed = getMetaDataUsedDoWhile(doWhile); + generateDataDirectiveForMetaVars(metaUsed); + + set in = doWhile->getBlockData()->getStartBlock()->getOut(); + set out = doWhile->getBlockData()->getEndBlock()->getIn(); + + usedVariables usedVars = getVarsStatement(doWhile); + list readVarsList = usedVars.getVariables(READ_ONLY); + list writeVarsList = usedVars.getVariables(WRITE_ONLY); + list readWriteVarsList = usedVars.getVariables(READ_AND_WRITE); + + set readVars; + set writeVars; + set readWriteVars; + + for (Identifier* id: readVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (presentInSet(in, te)) + continue; + if (in.find(te) != in.end()) + readVars.insert(te); + } + + for (Identifier* id: writeVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (out.find(te) != out.end()) + writeVars.insert(te); + } + + for (Identifier* id: readWriteVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (!presentInSet(in, te) && presentInSet(out, te)) + writeVars.insert(te); + else if (presentInSet(in, te)) + continue; + else if (in.find(te) != in.end() && out.find(te) != out.end()) + readWriteVars.insert(te); + else if (in.find(te) != in.end()) + readVars.insert(te); + } + + generateDataDirectiveForVars(readVars, READ); + generateDataDirectiveForVars(writeVars, WRITE); + generateDataDirectiveForVars(readWriteVars, READ_WRITE); + + main.pushstr_newL(""); + break; + } + + case NODE_FORALLSTMT: + { + forallStmt* forAll = (forallStmt*) stmt; + + MetaDataUsed metaUsed = forAll->getMetaDataUsed(); + generateDataDirectiveForMetaVars(metaUsed); + + set in = forAll->getBlockData()->getStartBlock()->getOut(); + set out = forAll->getBlockData()->getEndBlock()->getIn(); + + usedVariables usedVars = getVarsStatement(forAll->getBody()); + usedVars.removeVariable(forAll->getIterator(), READ_WRITE); + + list readVarsList = usedVars.getVariables(READ_ONLY); + list writeVarsList = usedVars.getVariables(WRITE_ONLY); + list readWriteVarsList = usedVars.getVariables(READ_AND_WRITE); + + set readVars; + set writeVars; + set readWriteVars; + + for (Identifier* id: readVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (presentInSet(in, te)) + continue; + if (in.find(te) != in.end()) + readVars.insert(te); + } + + for (Identifier* id: writeVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (out.find(te) != out.end()) + writeVars.insert(te); + } + + for (Identifier* id: readWriteVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (!presentInSet(in, te) && presentInSet(out, te)) + writeVars.insert(te); + else if (presentInSet(in, te)) + continue; + else if (in.find(te) != in.end() && out.find(te) != out.end()) + readWriteVars.insert(te); + else if (in.find(te) != in.end()) + readVars.insert(te); + } + + generateDataDirectiveForVars(readVars, READ); + generateDataDirectiveForVars(writeVars, WRITE); + generateDataDirectiveForVars(readWriteVars, READ_WRITE); + + main.pushstr_newL(""); + break; + } + + case NODE_ASSIGN: + { + assignment* assign = (assignment*) stmt; + + // get rhs id + Identifier* rhsId = assign->getExpr()->getId(); + if (!presentInSet(currAccVars, rhsId->getSymbolInfo())) { + if (rhsId->getSymbolInfo()->getType()->isPropNodeType()) + sprintf(strBuffer, "copyin(%s[0:%s.num_nodes()+1])", rhsId->getIdentifier(), graph_name); + else if (rhsId->getSymbolInfo()->getType()->isPropEdgeType()) + sprintf(strBuffer, "copyin(%s[0:%s.num_edges()+1])", rhsId->getIdentifier(), graph_name); + main.pushstr_space(strBuffer); + } + + // get lhs id + Identifier* lhsId = assign->getId(); + set out = assign->getBlockData()->getBlock()->getOut(); + if (out.find(lhsId->getSymbolInfo()) != out.end()) { + if (lhsId->getSymbolInfo()->getType()->isPropNodeType()) + sprintf(strBuffer, "copyout(%s[0:%s.num_nodes()+1])", lhsId->getIdentifier(), graph_name); + else if (lhsId->getSymbolInfo()->getType()->isPropEdgeType()) + sprintf(strBuffer, "copyout(%s[0:%s.num_edges()+1])", lhsId->getIdentifier(), graph_name); + main.pushstr_space(strBuffer); + } + + main.pushstr_newL(""); + break; + } + + case NODE_DECL: + { + declaration* declStmt = (declaration*) stmt; + + Identifier* propId = declStmt->getExpressionAssigned()->getId(); + if (!presentInSet(currAccVars, propId->getSymbolInfo())) { + Type* type = propId->getSymbolInfo()->getType(); + if (type->isPropNodeType()) // for each node, copy the property value + sprintf(strBuffer, "copyin(%s[0:%s.num_nodes()])", propId->getIdentifier(), graph_name); + else if (type->isPropEdgeType()) // for each edge, copy the property value + sprintf(strBuffer, "copyin(%s[0:%s.num_edges()])", propId->getIdentifier(), graph_name); + main.pushstr_space(strBuffer); + } + + set out = declStmt->getBlockData()->getBlock()->getOut(); + TableEntry* te_decl = declStmt->getdeclId()->getSymbolInfo(); + if (out.find(te_decl) != out.end()) { + Type* type = te_decl->getType(); + if (type->isPropNodeType()) // for each node, copy the property value + sprintf(strBuffer, "copyout(%s[0:%s.num_nodes()])", declStmt->getdeclId()->getIdentifier(), graph_name); + else if (type->isPropEdgeType()) // for each edge, copy the property value + sprintf(strBuffer, "copyout(%s[0:%s.num_edges()])", declStmt->getdeclId()->getIdentifier(), graph_name); + main.pushstr_space(strBuffer); + } + + main.pushstr_newL(""); + } + + case NODE_FIXEDPTSTMT: + { + fixedPointStmt* fixedPtStmt = (fixedPointStmt*) stmt; + + // get metadata used + MetaDataUsed metadataUsed = getMetaDataUsedStatement(fixedPtStmt->getBody()); + generateDataDirectiveForMetaVars(metadataUsed); + + // get in and out variables + set in = fixedPtStmt->getBlockData()->getStartBlock()->getOut(); + set out = fixedPtStmt->getBlockData()->getEndBlock()->getIn(); + + // get used variables + usedVariables usedVars = getVarsStatement(fixedPtStmt->getBody()); + + // get read-only, write-only and read-write variables + list readVarsList = usedVars.getVariables(READ_ONLY); + list writeVarsList = usedVars.getVariables(WRITE_ONLY); + list readWriteVarsList = usedVars.getVariables(READ_AND_WRITE); + + set readVars; + set writeVars; + set readWriteVars; + + for (Identifier* id: readVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (presentInSet(in, te)) + continue; + if (in.find(te) != in.end()) + readVars.insert(te); + } + + for (Identifier* id: writeVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (out.find(te) != out.end()) + writeVars.insert(te); + } + + for (Identifier* id: readWriteVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (!presentInSet(in, te) && presentInSet(out, te)) + writeVars.insert(te); + else if (presentInSet(in, te)) + continue; + else if (in.find(te) != in.end() && out.find(te) != out.end()) + readWriteVars.insert(te); + else if (in.find(te) != in.end()) + readVars.insert(te); + } + + generateDataDirectiveForVars(readVars, READ); + generateDataDirectiveForVars(writeVars, WRITE); + generateDataDirectiveForVars(readWriteVars, READ_WRITE); + + main.pushstr_newL(""); + } + } + } + + // This function is used to generate the data directive to copy inthe meta variables. + void dsl_cpp_generator::generateDataDirectiveForMetaVars(MetaDataUsed metaUsed) + { + char strBuffer[1024]; + vector graph_arr = graphId[curFuncType][curFuncCount()]; + char* graph_name = graph_arr[0]->getIdentifier(); //Graph variable name identifier + + if (metaUsed == false) return; + if (currMetaAccVars == (currMetaAccVars | metaUsed)) return; + + sprintf(strBuffer, "copyin("); // Start of inner openAcc data body + main.pushString(strBuffer); + bool first = true; + if (metaUsed.isMetaUsed && !currMetaAccVars.isMetaUsed) { + if (!first) main.pushString(", "); first = false; + sprintf(strBuffer, "%s.indexofNodes[0:%s.num_nodes()+1]", graph_name, graph_name); + main.pushString(strBuffer); + } + if (metaUsed.isRevMetaUsed && !currMetaAccVars.isRevMetaUsed) { + if (!first) main.pushString(", "); first = false; + sprintf(strBuffer, "%s.rev_indexofNodes[0:%s.num_nodes()+1]", graph_name, graph_name); + main.pushString(strBuffer); + } + if (metaUsed.isDataUsed && !currMetaAccVars.isDataUsed) { + if (!first) main.pushString(", "); first = false; + sprintf(strBuffer, "%s.edgeList[0:%s.num_edges()+1]", graph_name, graph_name); + main.pushString(strBuffer); + } + if (metaUsed.isSrcUsed && !currMetaAccVars.isSrcUsed) { + if (!first) main.pushString(", "); first = false; + sprintf(strBuffer, "%s.srcList[0:%s.num_edges()+1]", graph_name, graph_name); + main.pushString(strBuffer); + } + if (metaUsed.isWeightUsed && !currMetaAccVars.isWeightUsed) { + if (!first) main.pushString(", "); first = false; + sprintf(strBuffer, "%s.getEdgeLen[0:%s.num_edges()+1]", graph_name, graph_name); + main.pushString(strBuffer); + } + currMetaAccVars |= metaUsed; + main.pushString(")"); // End of copyin + } + + void dsl_cpp_generator::generateDataDirectiveForVars(set vars, int accessType) + { + if (vars.empty()) return; + + char strBuffer[1024]; + vector graph_arr = graphId[curFuncType][curFuncCount()]; + char* graph_name = graph_arr[0]->getIdentifier(); //Graph variable name identifier + + bool first = true; + + if (accessType == READ) { + main.pushString(" copyin("); + } else if (accessType == WRITE) { + main.pushString(" copyout("); + } else if (accessType == READ_WRITE) { + main.pushString(" copy("); + } + + for (TableEntry* te: vars) { + if (te == NULL) continue; + + if (accessType & READ) + { + if (presentInSet(currAccVars, te)) continue; + currAccVars.insert(te); + } + else if (accessType & WRITE) + { + currAccVars.erase(te); + } + + Type* type = te->getType(); + Identifier* id = te->getId(); + if (!first) main.pushString(", "); first = false; + + if (type->isPropNodeType()) { + sprintf(strBuffer, "%s[0:%s.num_nodes()+1]", id->getIdentifier(), graph_name); + main.pushString(strBuffer); + } + else if (type->isPropEdgeType()) { + sprintf(strBuffer, "%s[0:%s.num_edges()+1]", id->getIdentifier(), graph_name); + main.pushString(strBuffer); + } + else { + sprintf(strBuffer, "%s", id->getIdentifier()); + main.pushString(strBuffer); + } + } + main.pushString(")"); // end of copy clause + } +} \ No newline at end of file diff --git a/src/backends/backend_openACC/dsl_cpp_generator.h b/src/backends/backend_openACC/dsl_cpp_generator.h index 2a13355f..ce0883cc 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.h +++ b/src/backends/backend_openACC/dsl_cpp_generator.h @@ -7,6 +7,8 @@ //~ #include "../../parser/includeHeader.hpp" #include "../dslCodePad.h" #include "../../analyser/analyserUtil.cpp" +#include "../../analyser/blockVars/blockVarsAnalyser.h" +#include namespace spacc { class dsl_cpp_generator { @@ -29,6 +31,8 @@ class dsl_cpp_generator { bool insidePreprocessEnv; bool insideBatchBlock; bool isOptimized; + set currAccVars; // Variables that are currently available in the accelerator + MetaDataUsed currMetaAccVars; // Meta Variables that are currently available in the accelerator public: dsl_cpp_generator() { @@ -44,6 +48,8 @@ class dsl_cpp_generator { insideBatchBlock = false; insidePreprocessEnv = false; isOptimized = false; + currAccVars.clear(); + currMetaAccVars = MetaDataUsed(); } void setFileName(char* f); @@ -108,7 +114,10 @@ class dsl_cpp_generator { void generateFixedPointUpdate(PropAccess* propId); bool checkFixedPointAssociation(PropAccess* propId); void checkAndGenerateFixedPtFilter(forallStmt* forAll); - void setOptimized() { isOptimized = true; } + void setOptimized(); + void generateDataDirectiveForMetaVars(MetaDataUsed); + void generateDataDirectiveForStatment(statement*); + void generateDataDirectiveForVars(set, int); }; static const char* INTALLOCATION = "new int"; diff --git a/src/parser/y.tab.c b/src/parser/y.tab.c index 18822071..db0480e3 100644 --- a/src/parser/y.tab.c +++ b/src/parser/y.tab.c @@ -77,6 +77,7 @@ #include "../analyser/attachProp/attachPropAnalyser.h" #include "../analyser/dataRace/dataRaceAnalyser.h" #include "../analyser/deviceVars/deviceVarsAnalyser.h" + #include "../analyser/blockVars/blockVarsAnalyser.h" #include //#include "../symbolutil/SymbolTableBuilder.cpp" @@ -96,7 +97,7 @@ //symbTab=new SymbolTable(); //symbolTableList.push_back(new SymbolTable()); -#line 100 "y.tab.c" +#line 101 "y.tab.c" # ifndef YY_CAST # ifdef __cplusplus @@ -297,7 +298,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 33 "lrparser.y" +#line 34 "lrparser.y" int info; long ival; @@ -312,7 +313,7 @@ union YYSTYPE tempNode* temporary; -#line 316 "y.tab.c" +#line 317 "y.tab.c" }; typedef union YYSTYPE YYSTYPE; @@ -864,21 +865,21 @@ static const yytype_int8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 98, 98, 99, 101, 108, 114, 120, 126, 132, - 138, 139, 142, 153, 157, 166, 169, 170, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 186, 188, 190, 192, 194, 196, 198, 201, 209, 212, - 215, 219, 220, 221, 224, 225, 226, 227, 228, 230, - 231, 233, 234, 236, 238, 241, 242, 243, 245, 246, - 247, 248, 250, 252, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 271, - 272, 273, 275, 276, 278, 283, 287, 296, 297, 298, - 299, 300, 301, 304, 305, 307, 308, 309, 310, 312, - 313, 314, 316, 317, 319, 321, 322, 325, 326, 328, - 331, 332, 333, 334, 335, 337, 339, 341, 342, 344, - 345, 354, 356, 357, 358, 359, 360, 362, 363, 364, - 366, 370, 387, 394, 399, 407, 408, 413, 414, 417, - 422, 426 + 0, 99, 99, 100, 102, 109, 115, 121, 127, 133, + 139, 140, 143, 154, 158, 167, 170, 171, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 187, 189, 191, 193, 195, 197, 199, 202, 210, 213, + 216, 220, 221, 222, 225, 226, 227, 228, 229, 231, + 232, 234, 235, 237, 239, 242, 243, 244, 246, 247, + 248, 249, 251, 253, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 272, + 273, 274, 276, 277, 279, 284, 288, 297, 298, 299, + 300, 301, 302, 305, 306, 308, 309, 310, 311, 313, + 314, 315, 317, 318, 320, 322, 323, 326, 327, 329, + 332, 333, 334, 335, 336, 338, 340, 342, 343, 345, + 346, 355, 357, 358, 359, 360, 361, 363, 364, 365, + 367, 371, 388, 395, 400, 408, 409, 414, 415, 418, + 423, 427 }; #endif @@ -1711,91 +1712,91 @@ yyparse (void) switch (yyn) { case 3: /* program: program function_def */ -#line 99 "lrparser.y" +#line 100 "lrparser.y" {/* printf("LIST SIZE %d",frontEndContext.getFuncList().size()) ;*/ } -#line 1717 "y.tab.c" +#line 1718 "y.tab.c" break; case 4: /* function_def: function_data function_body */ -#line 101 "lrparser.y" +#line 102 "lrparser.y" { Function* func=(Function*)(yyvsp[-1].node); blockStatement* block=(blockStatement*)(yyvsp[0].node); func->setBlockStatement(block); Util::addFuncToList(func); } -#line 1728 "y.tab.c" +#line 1729 "y.tab.c" break; case 5: /* function_data: T_FUNC id '(' paramList ')' */ -#line 108 "lrparser.y" +#line 109 "lrparser.y" { (yyval.node)=Util::createFuncNode((yyvsp[-3].node),(yyvsp[-1].pList)->PList); Util::setCurrentFuncType(GEN_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1739 "y.tab.c" +#line 1740 "y.tab.c" break; case 6: /* function_data: T_STATIC id '(' paramList ')' */ -#line 114 "lrparser.y" +#line 115 "lrparser.y" { (yyval.node)=Util::createStaticFuncNode((yyvsp[-3].node),(yyvsp[-1].pList)->PList); Util::setCurrentFuncType(STATIC_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1750 "y.tab.c" +#line 1751 "y.tab.c" break; case 7: /* function_data: T_INCREMENTAL '(' paramList ')' */ -#line 120 "lrparser.y" +#line 121 "lrparser.y" { (yyval.node)=Util::createIncrementalNode((yyvsp[-1].pList)->PList); Util::setCurrentFuncType(INCREMENTAL_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1761 "y.tab.c" +#line 1762 "y.tab.c" break; case 8: /* function_data: T_DECREMENTAL '(' paramList ')' */ -#line 126 "lrparser.y" +#line 127 "lrparser.y" { (yyval.node)=Util::createDecrementalNode((yyvsp[-1].pList)->PList); Util::setCurrentFuncType(DECREMENTAL_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1772 "y.tab.c" +#line 1773 "y.tab.c" break; case 9: /* function_data: T_DYNAMIC id '(' paramList ')' */ -#line 132 "lrparser.y" +#line 133 "lrparser.y" { (yyval.node)=Util::createDynamicFuncNode((yyvsp[-3].node),(yyvsp[-1].pList)->PList); Util::setCurrentFuncType(DYNAMIC_FUNC); Util::resetTemp(tempIds); tempIds.clear(); } -#line 1782 "y.tab.c" +#line 1783 "y.tab.c" break; case 10: /* paramList: param */ -#line 138 "lrparser.y" +#line 139 "lrparser.y" {(yyval.pList)=Util::createPList((yyvsp[0].node));} -#line 1788 "y.tab.c" +#line 1789 "y.tab.c" break; case 11: /* paramList: param ',' paramList */ -#line 139 "lrparser.y" +#line 140 "lrparser.y" {(yyval.pList)=Util::addToPList((yyvsp[0].pList),(yyvsp[-2].node)); } -#line 1795 "y.tab.c" +#line 1796 "y.tab.c" break; case 12: /* param: type1 id */ -#line 142 "lrparser.y" +#line 143 "lrparser.y" { //Identifier* id=(Identifier*)Util::createIdentifierNode($2); Type* type=(Type*)(yyvsp[-1].node); Identifier* id=(Identifier*)(yyvsp[0].node); @@ -1807,20 +1808,20 @@ yyparse (void) } printf("\n"); (yyval.node)=Util::createParamNode((yyvsp[-1].node),(yyvsp[0].node)); } -#line 1811 "y.tab.c" +#line 1812 "y.tab.c" break; case 13: /* param: type2 id */ -#line 153 "lrparser.y" +#line 154 "lrparser.y" { // Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createParamNode((yyvsp[-1].node),(yyvsp[0].node));} -#line 1820 "y.tab.c" +#line 1821 "y.tab.c" break; case 14: /* param: type2 id '(' id ')' */ -#line 157 "lrparser.y" +#line 158 "lrparser.y" { // Identifier* id1=(Identifier*)Util::createIdentifierNode($4); //Identifier* id=(Identifier*)Util::createIdentifierNode($2); Type* tempType=(Type*)(yyvsp[-4].node); @@ -1828,137 +1829,137 @@ yyparse (void) tempType->addSourceGraph((yyvsp[-1].node)); (yyval.node)=Util::createParamNode(tempType,(yyvsp[-3].node)); } -#line 1832 "y.tab.c" +#line 1833 "y.tab.c" break; case 15: /* function_body: blockstatements */ -#line 166 "lrparser.y" +#line 167 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 1838 "y.tab.c" +#line 1839 "y.tab.c" break; case 16: /* statements: %empty */ -#line 169 "lrparser.y" +#line 170 "lrparser.y" {} -#line 1844 "y.tab.c" +#line 1845 "y.tab.c" break; case 17: /* statements: statements statement */ -#line 170 "lrparser.y" +#line 171 "lrparser.y" { Util::addToBlock((yyvsp[0].node)); } -#line 1850 "y.tab.c" +#line 1851 "y.tab.c" break; case 18: /* statement: declaration ';' */ -#line 172 "lrparser.y" +#line 173 "lrparser.y" {(yyval.node)=(yyvsp[-1].node);} -#line 1856 "y.tab.c" +#line 1857 "y.tab.c" break; case 19: /* statement: assignment ';' */ -#line 173 "lrparser.y" +#line 174 "lrparser.y" {(yyval.node)=(yyvsp[-1].node);} -#line 1862 "y.tab.c" +#line 1863 "y.tab.c" break; case 20: /* statement: proc_call ';' */ -#line 174 "lrparser.y" +#line 175 "lrparser.y" {(yyval.node)=Util::createNodeForProcCallStmt((yyvsp[-1].node));} -#line 1868 "y.tab.c" +#line 1869 "y.tab.c" break; case 21: /* statement: control_flow */ -#line 175 "lrparser.y" +#line 176 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 1874 "y.tab.c" +#line 1875 "y.tab.c" break; case 22: /* statement: reduction ';' */ -#line 176 "lrparser.y" +#line 177 "lrparser.y" {(yyval.node)=(yyvsp[-1].node);} -#line 1880 "y.tab.c" +#line 1881 "y.tab.c" break; case 23: /* statement: bfs_abstraction */ -#line 177 "lrparser.y" +#line 178 "lrparser.y" {(yyval.node)=(yyvsp[0].node); } -#line 1886 "y.tab.c" +#line 1887 "y.tab.c" break; case 24: /* statement: blockstatements */ -#line 178 "lrparser.y" +#line 179 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 1892 "y.tab.c" +#line 1893 "y.tab.c" break; case 25: /* statement: unary_expr ';' */ -#line 179 "lrparser.y" +#line 180 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryStatements((yyvsp[-1].node));} -#line 1898 "y.tab.c" +#line 1899 "y.tab.c" break; case 26: /* statement: return_stmt ';' */ -#line 180 "lrparser.y" +#line 181 "lrparser.y" {(yyval.node) = (yyvsp[-1].node) ;} -#line 1904 "y.tab.c" +#line 1905 "y.tab.c" break; case 27: /* statement: batch_blockstmt */ -#line 181 "lrparser.y" +#line 182 "lrparser.y" {(yyval.node) = (yyvsp[0].node);} -#line 1910 "y.tab.c" +#line 1911 "y.tab.c" break; case 28: /* statement: on_add_blockstmt */ -#line 182 "lrparser.y" +#line 183 "lrparser.y" {(yyval.node) = (yyvsp[0].node);} -#line 1916 "y.tab.c" +#line 1917 "y.tab.c" break; case 29: /* statement: on_delete_blockstmt */ -#line 183 "lrparser.y" +#line 184 "lrparser.y" {(yyval.node) = (yyvsp[0].node);} -#line 1922 "y.tab.c" +#line 1923 "y.tab.c" break; case 30: /* blockstatements: block_begin statements block_end */ -#line 186 "lrparser.y" +#line 187 "lrparser.y" { (yyval.node)=Util::finishBlock();} -#line 1928 "y.tab.c" +#line 1929 "y.tab.c" break; case 31: /* batch_blockstmt: T_BATCH '(' id ':' expression ')' blockstatements */ -#line 188 "lrparser.y" +#line 189 "lrparser.y" {(yyval.node) = Util::createBatchBlockStmt((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node));} -#line 1934 "y.tab.c" +#line 1935 "y.tab.c" break; case 32: /* on_add_blockstmt: T_ONADD '(' id T_IN id '.' proc_call ')' ':' blockstatements */ -#line 190 "lrparser.y" +#line 191 "lrparser.y" {(yyval.node) = Util::createOnAddBlock((yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node));} -#line 1940 "y.tab.c" +#line 1941 "y.tab.c" break; case 33: /* on_delete_blockstmt: T_ONDELETE '(' id T_IN id '.' proc_call ')' ':' blockstatements */ -#line 192 "lrparser.y" +#line 193 "lrparser.y" {(yyval.node) = Util::createOnDeleteBlock((yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node));} -#line 1946 "y.tab.c" +#line 1947 "y.tab.c" break; case 34: /* block_begin: '{' */ -#line 194 "lrparser.y" +#line 195 "lrparser.y" { Util::createNewBlock(); } -#line 1952 "y.tab.c" +#line 1953 "y.tab.c" break; case 36: /* return_stmt: T_RETURN expression */ -#line 198 "lrparser.y" +#line 199 "lrparser.y" {(yyval.node) = Util::createReturnStatementNode((yyvsp[0].node));} -#line 1958 "y.tab.c" +#line 1959 "y.tab.c" break; case 37: /* declaration: type1 id */ -#line 201 "lrparser.y" +#line 202 "lrparser.y" { Type* type=(Type*)(yyvsp[-1].node); Identifier* id=(Identifier*)(yyvsp[0].node); @@ -1967,596 +1968,596 @@ yyparse (void) Util::storeGraphId(id); (yyval.node)=Util::createNormalDeclNode((yyvsp[-1].node),(yyvsp[0].node));} -#line 1971 "y.tab.c" +#line 1972 "y.tab.c" break; case 38: /* declaration: type1 id '=' rhs */ -#line 209 "lrparser.y" +#line 210 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createAssignedDeclNode((yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node));} -#line 1979 "y.tab.c" +#line 1980 "y.tab.c" break; case 39: /* declaration: type2 id */ -#line 212 "lrparser.y" +#line 213 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createNormalDeclNode((yyvsp[-1].node),(yyvsp[0].node)); } -#line 1987 "y.tab.c" +#line 1988 "y.tab.c" break; case 40: /* declaration: type2 id '=' rhs */ -#line 215 "lrparser.y" +#line 216 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($2); (yyval.node)=Util::createAssignedDeclNode((yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node));} -#line 1995 "y.tab.c" +#line 1996 "y.tab.c" break; case 41: /* type1: primitive */ -#line 219 "lrparser.y" +#line 220 "lrparser.y" {(yyval.node)=(yyvsp[0].node); } -#line 2001 "y.tab.c" +#line 2002 "y.tab.c" break; case 42: /* type1: graph */ -#line 220 "lrparser.y" +#line 221 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2007 "y.tab.c" +#line 2008 "y.tab.c" break; case 43: /* type1: collections */ -#line 221 "lrparser.y" +#line 222 "lrparser.y" { (yyval.node)=(yyvsp[0].node);} -#line 2013 "y.tab.c" +#line 2014 "y.tab.c" break; case 44: /* primitive: T_INT */ -#line 224 "lrparser.y" +#line 225 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_INT);} -#line 2019 "y.tab.c" +#line 2020 "y.tab.c" break; case 45: /* primitive: T_FLOAT */ -#line 225 "lrparser.y" +#line 226 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_FLOAT);} -#line 2025 "y.tab.c" +#line 2026 "y.tab.c" break; case 46: /* primitive: T_BOOL */ -#line 226 "lrparser.y" +#line 227 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_BOOL);} -#line 2031 "y.tab.c" +#line 2032 "y.tab.c" break; case 47: /* primitive: T_DOUBLE */ -#line 227 "lrparser.y" +#line 228 "lrparser.y" { (yyval.node)=Util::createPrimitiveTypeNode(TYPE_DOUBLE); } -#line 2037 "y.tab.c" +#line 2038 "y.tab.c" break; case 48: /* primitive: T_LONG */ -#line 228 "lrparser.y" +#line 229 "lrparser.y" {(yyval.node)=(yyval.node)=Util::createPrimitiveTypeNode(TYPE_LONG);} -#line 2043 "y.tab.c" +#line 2044 "y.tab.c" break; case 49: /* graph: T_GRAPH */ -#line 230 "lrparser.y" +#line 231 "lrparser.y" { (yyval.node)=Util::createGraphTypeNode(TYPE_GRAPH,NULL);} -#line 2049 "y.tab.c" +#line 2050 "y.tab.c" break; case 50: /* graph: T_DIR_GRAPH */ -#line 231 "lrparser.y" +#line 232 "lrparser.y" {(yyval.node)=Util::createGraphTypeNode(TYPE_DIRGRAPH,NULL);} -#line 2055 "y.tab.c" +#line 2056 "y.tab.c" break; case 51: /* collections: T_LIST */ -#line 233 "lrparser.y" +#line 234 "lrparser.y" { (yyval.node)=Util::createCollectionTypeNode(TYPE_LIST,NULL);} -#line 2061 "y.tab.c" +#line 2062 "y.tab.c" break; case 52: /* collections: T_SET_NODES '<' id '>' */ -#line 234 "lrparser.y" +#line 235 "lrparser.y" {//Identifier* id=(Identifier*)Util::createIdentifierNode($3); (yyval.node)=Util::createCollectionTypeNode(TYPE_SETN,(yyvsp[-1].node));} -#line 2068 "y.tab.c" +#line 2069 "y.tab.c" break; case 53: /* collections: T_SET_EDGES '<' id '>' */ -#line 236 "lrparser.y" +#line 237 "lrparser.y" {// Identifier* id=(Identifier*)Util::createIdentifierNode($3); (yyval.node)=Util::createCollectionTypeNode(TYPE_SETE,(yyvsp[-1].node));} -#line 2075 "y.tab.c" +#line 2076 "y.tab.c" break; case 54: /* collections: T_UPDATES '<' id '>' */ -#line 238 "lrparser.y" +#line 239 "lrparser.y" { (yyval.node)=Util::createCollectionTypeNode(TYPE_UPDATES,(yyvsp[-1].node));} -#line 2081 "y.tab.c" +#line 2082 "y.tab.c" break; case 55: /* type2: T_NODE */ -#line 241 "lrparser.y" +#line 242 "lrparser.y" {(yyval.node)=Util::createNodeEdgeTypeNode(TYPE_NODE) ;} -#line 2087 "y.tab.c" +#line 2088 "y.tab.c" break; case 56: /* type2: T_EDGE */ -#line 242 "lrparser.y" +#line 243 "lrparser.y" {(yyval.node)=Util::createNodeEdgeTypeNode(TYPE_EDGE);} -#line 2093 "y.tab.c" +#line 2094 "y.tab.c" break; case 57: /* type2: property */ -#line 243 "lrparser.y" +#line 244 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2099 "y.tab.c" +#line 2100 "y.tab.c" break; case 58: /* property: T_NP '<' primitive '>' */ -#line 245 "lrparser.y" +#line 246 "lrparser.y" { (yyval.node)=Util::createPropertyTypeNode(TYPE_PROPNODE,(yyvsp[-1].node)); } -#line 2105 "y.tab.c" +#line 2106 "y.tab.c" break; case 59: /* property: T_EP '<' primitive '>' */ -#line 246 "lrparser.y" +#line 247 "lrparser.y" { (yyval.node)=Util::createPropertyTypeNode(TYPE_PROPEDGE,(yyvsp[-1].node)); } -#line 2111 "y.tab.c" +#line 2112 "y.tab.c" break; case 60: /* property: T_NP '<' collections '>' */ -#line 247 "lrparser.y" +#line 248 "lrparser.y" { (yyval.node)=Util::createPropertyTypeNode(TYPE_PROPNODE,(yyvsp[-1].node)); } -#line 2117 "y.tab.c" +#line 2118 "y.tab.c" break; case 61: /* property: T_EP '<' collections '>' */ -#line 248 "lrparser.y" +#line 249 "lrparser.y" {(yyval.node)=Util::createPropertyTypeNode(TYPE_PROPEDGE,(yyvsp[-1].node));} -#line 2123 "y.tab.c" +#line 2124 "y.tab.c" break; case 62: /* assignment: leftSide '=' rhs */ -#line 250 "lrparser.y" +#line 251 "lrparser.y" { (yyval.node)=Util::createAssignmentNode((yyvsp[-2].node),(yyvsp[0].node));} -#line 2129 "y.tab.c" +#line 2130 "y.tab.c" break; case 63: /* rhs: expression */ -#line 252 "lrparser.y" +#line 253 "lrparser.y" { (yyval.node)=(yyvsp[0].node);} -#line 2135 "y.tab.c" +#line 2136 "y.tab.c" break; case 64: /* expression: proc_call */ -#line 254 "lrparser.y" +#line 255 "lrparser.y" { (yyval.node)=(yyvsp[0].node);} -#line 2141 "y.tab.c" +#line 2142 "y.tab.c" break; case 65: /* expression: expression '+' expression */ -#line 255 "lrparser.y" +#line 256 "lrparser.y" { (yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_ADD);} -#line 2147 "y.tab.c" +#line 2148 "y.tab.c" break; case 66: /* expression: expression '-' expression */ -#line 256 "lrparser.y" +#line 257 "lrparser.y" { (yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_SUB);} -#line 2153 "y.tab.c" +#line 2154 "y.tab.c" break; case 67: /* expression: expression '*' expression */ -#line 257 "lrparser.y" +#line 258 "lrparser.y" {(yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_MUL);} -#line 2159 "y.tab.c" +#line 2160 "y.tab.c" break; case 68: /* expression: expression '/' expression */ -#line 258 "lrparser.y" +#line 259 "lrparser.y" {(yyval.node)=Util::createNodeForArithmeticExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_DIV);} -#line 2165 "y.tab.c" +#line 2166 "y.tab.c" break; case 69: /* expression: expression T_AND_OP expression */ -#line 259 "lrparser.y" +#line 260 "lrparser.y" {(yyval.node)=Util::createNodeForLogicalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_AND);} -#line 2171 "y.tab.c" +#line 2172 "y.tab.c" break; case 70: /* expression: expression T_OR_OP expression */ -#line 260 "lrparser.y" +#line 261 "lrparser.y" {(yyval.node)=Util::createNodeForLogicalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_OR);} -#line 2177 "y.tab.c" +#line 2178 "y.tab.c" break; case 71: /* expression: expression T_LE_OP expression */ -#line 261 "lrparser.y" +#line 262 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_LE);} -#line 2183 "y.tab.c" +#line 2184 "y.tab.c" break; case 72: /* expression: expression T_GE_OP expression */ -#line 262 "lrparser.y" +#line 263 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_GE);} -#line 2189 "y.tab.c" +#line 2190 "y.tab.c" break; case 73: /* expression: expression '<' expression */ -#line 263 "lrparser.y" +#line 264 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_LT);} -#line 2195 "y.tab.c" +#line 2196 "y.tab.c" break; case 74: /* expression: expression '>' expression */ -#line 264 "lrparser.y" +#line 265 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_GT);} -#line 2201 "y.tab.c" +#line 2202 "y.tab.c" break; case 75: /* expression: expression T_EQ_OP expression */ -#line 265 "lrparser.y" +#line 266 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_EQ);} -#line 2207 "y.tab.c" +#line 2208 "y.tab.c" break; case 76: /* expression: expression T_NE_OP expression */ -#line 266 "lrparser.y" +#line 267 "lrparser.y" {(yyval.node)=Util::createNodeForRelationalExpr((yyvsp[-2].node),(yyvsp[0].node),OPERATOR_NE);} -#line 2213 "y.tab.c" +#line 2214 "y.tab.c" break; case 77: /* expression: '!' expression */ -#line 267 "lrparser.y" +#line 268 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryExpr((yyvsp[0].node),OPERATOR_NOT);} -#line 2219 "y.tab.c" +#line 2220 "y.tab.c" break; case 78: /* expression: '(' expression ')' */ -#line 268 "lrparser.y" +#line 269 "lrparser.y" { Expression* expr=(Expression*)(yyvsp[-1].node); expr->setEnclosedBrackets(); (yyval.node)=expr;} -#line 2227 "y.tab.c" +#line 2228 "y.tab.c" break; case 79: /* expression: val */ -#line 271 "lrparser.y" +#line 272 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2233 "y.tab.c" +#line 2234 "y.tab.c" break; case 80: /* expression: leftSide */ -#line 272 "lrparser.y" +#line 273 "lrparser.y" { (yyval.node)=Util::createNodeForId((yyvsp[0].node));} -#line 2239 "y.tab.c" +#line 2240 "y.tab.c" break; case 81: /* expression: unary_expr */ -#line 273 "lrparser.y" +#line 274 "lrparser.y" {(yyval.node)=(yyvsp[0].node);} -#line 2245 "y.tab.c" +#line 2246 "y.tab.c" break; case 82: /* unary_expr: expression T_INC_OP */ -#line 275 "lrparser.y" +#line 276 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryExpr((yyvsp[-1].node),OPERATOR_INC);} -#line 2251 "y.tab.c" +#line 2252 "y.tab.c" break; case 83: /* unary_expr: expression T_DEC_OP */ -#line 276 "lrparser.y" +#line 277 "lrparser.y" {(yyval.node)=Util::createNodeForUnaryExpr((yyvsp[-1].node),OPERATOR_DEC);} -#line 2257 "y.tab.c" +#line 2258 "y.tab.c" break; case 84: /* proc_call: leftSide '(' arg_list ')' */ -#line 278 "lrparser.y" +#line 279 "lrparser.y" { (yyval.node) = Util::createNodeForProcCall((yyvsp[-3].node),(yyvsp[-1].aList)->AList); } -#line 2267 "y.tab.c" +#line 2268 "y.tab.c" break; case 85: /* proc_call: T_INCREMENTAL '(' arg_list ')' */ -#line 283 "lrparser.y" +#line 284 "lrparser.y" { ASTNode* id = Util::createIdentifierNode("Incremental"); (yyval.node) = Util::createNodeForProcCall(id, (yyvsp[-1].aList)->AList); } -#line 2276 "y.tab.c" +#line 2277 "y.tab.c" break; case 86: /* proc_call: T_DECREMENTAL '(' arg_list ')' */ -#line 287 "lrparser.y" +#line 288 "lrparser.y" { ASTNode* id = Util::createIdentifierNode("Decremental"); (yyval.node) = Util::createNodeForProcCall(id, (yyvsp[-1].aList)->AList); } -#line 2285 "y.tab.c" +#line 2286 "y.tab.c" break; case 87: /* val: INT_NUM */ -#line 296 "lrparser.y" +#line 297 "lrparser.y" { (yyval.node) = Util::createNodeForIval((yyvsp[0].ival)); } -#line 2291 "y.tab.c" +#line 2292 "y.tab.c" break; case 88: /* val: FLOAT_NUM */ -#line 297 "lrparser.y" +#line 298 "lrparser.y" {(yyval.node) = Util::createNodeForFval((yyvsp[0].fval));} -#line 2297 "y.tab.c" +#line 2298 "y.tab.c" break; case 89: /* val: BOOL_VAL */ -#line 298 "lrparser.y" +#line 299 "lrparser.y" { (yyval.node) = Util::createNodeForBval((yyvsp[0].bval));} -#line 2303 "y.tab.c" +#line 2304 "y.tab.c" break; case 90: /* val: T_INF */ -#line 299 "lrparser.y" +#line 300 "lrparser.y" {(yyval.node)=Util::createNodeForINF(true);} -#line 2309 "y.tab.c" +#line 2310 "y.tab.c" break; case 91: /* val: T_P_INF */ -#line 300 "lrparser.y" +#line 301 "lrparser.y" {(yyval.node)=Util::createNodeForINF(true);} -#line 2315 "y.tab.c" +#line 2316 "y.tab.c" break; case 92: /* val: T_N_INF */ -#line 301 "lrparser.y" +#line 302 "lrparser.y" {(yyval.node)=Util::createNodeForINF(false);} -#line 2321 "y.tab.c" +#line 2322 "y.tab.c" break; case 93: /* control_flow: selection_cf */ -#line 304 "lrparser.y" +#line 305 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2327 "y.tab.c" +#line 2328 "y.tab.c" break; case 94: /* control_flow: iteration_cf */ -#line 305 "lrparser.y" +#line 306 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2333 "y.tab.c" +#line 2334 "y.tab.c" break; case 95: /* iteration_cf: T_FIXEDPOINT T_UNTIL '(' id ':' expression ')' blockstatements */ -#line 307 "lrparser.y" +#line 308 "lrparser.y" { (yyval.node)=Util::createNodeForFixedPointStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node));} -#line 2339 "y.tab.c" +#line 2340 "y.tab.c" break; case 96: /* iteration_cf: T_WHILE '(' boolean_expr ')' blockstatements */ -#line 308 "lrparser.y" +#line 309 "lrparser.y" {(yyval.node)=Util::createNodeForWhileStmt((yyvsp[-2].node),(yyvsp[0].node)); } -#line 2345 "y.tab.c" +#line 2346 "y.tab.c" break; case 97: /* iteration_cf: T_DO blockstatements T_WHILE '(' boolean_expr ')' ';' */ -#line 309 "lrparser.y" +#line 310 "lrparser.y" {(yyval.node)=Util::createNodeForDoWhileStmt((yyvsp[-2].node),(yyvsp[-5].node)); } -#line 2351 "y.tab.c" +#line 2352 "y.tab.c" break; case 98: /* iteration_cf: T_FORALL '(' id T_IN id '.' proc_call filterExpr ')' blockstatements */ -#line 310 "lrparser.y" +#line 311 "lrparser.y" { (yyval.node)=Util::createNodeForForAllStmt((yyvsp[-7].node),(yyvsp[-5].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node),true);} -#line 2358 "y.tab.c" +#line 2359 "y.tab.c" break; case 99: /* iteration_cf: T_FORALL '(' id T_IN leftSide ')' blockstatements */ -#line 312 "lrparser.y" +#line 313 "lrparser.y" { (yyval.node)=Util::createNodeForForStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node),true);} -#line 2364 "y.tab.c" +#line 2365 "y.tab.c" break; case 100: /* iteration_cf: T_FOR '(' id T_IN leftSide ')' blockstatements */ -#line 313 "lrparser.y" +#line 314 "lrparser.y" { (yyval.node)=Util::createNodeForForStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node),false);} -#line 2370 "y.tab.c" +#line 2371 "y.tab.c" break; case 101: /* iteration_cf: T_FOR '(' id T_IN id '.' proc_call filterExpr ')' blockstatements */ -#line 314 "lrparser.y" +#line 315 "lrparser.y" {(yyval.node)=Util::createNodeForForAllStmt((yyvsp[-7].node),(yyvsp[-5].node),(yyvsp[-3].node),(yyvsp[-2].node),(yyvsp[0].node),false);} -#line 2376 "y.tab.c" +#line 2377 "y.tab.c" break; case 102: /* filterExpr: %empty */ -#line 316 "lrparser.y" +#line 317 "lrparser.y" { (yyval.node)=NULL;} -#line 2382 "y.tab.c" +#line 2383 "y.tab.c" break; case 103: /* filterExpr: '.' T_FILTER '(' boolean_expr ')' */ -#line 317 "lrparser.y" +#line 318 "lrparser.y" { (yyval.node)=(yyvsp[-1].node);} -#line 2388 "y.tab.c" +#line 2389 "y.tab.c" break; case 104: /* boolean_expr: expression */ -#line 319 "lrparser.y" +#line 320 "lrparser.y" { (yyval.node)=(yyvsp[0].node) ;} -#line 2394 "y.tab.c" +#line 2395 "y.tab.c" break; case 105: /* selection_cf: T_IF '(' boolean_expr ')' statement */ -#line 321 "lrparser.y" +#line 322 "lrparser.y" { (yyval.node)=Util::createNodeForIfStmt((yyvsp[-2].node),(yyvsp[0].node),NULL); } -#line 2400 "y.tab.c" +#line 2401 "y.tab.c" break; case 106: /* selection_cf: T_IF '(' boolean_expr ')' statement T_ELSE statement */ -#line 322 "lrparser.y" +#line 323 "lrparser.y" {(yyval.node)=Util::createNodeForIfStmt((yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[0].node)); } -#line 2406 "y.tab.c" +#line 2407 "y.tab.c" break; case 107: /* reduction: leftSide '=' reductionCall */ -#line 325 "lrparser.y" +#line 326 "lrparser.y" { (yyval.node)=Util::createNodeForReductionStmt((yyvsp[-2].node),(yyvsp[0].node)) ;} -#line 2412 "y.tab.c" +#line 2413 "y.tab.c" break; case 108: /* reduction: '<' leftList '>' '=' '<' reductionCall ',' rightList '>' */ -#line 326 "lrparser.y" +#line 327 "lrparser.y" { reductionCall* reduc=(reductionCall*)(yyvsp[-3].node); (yyval.node)=Util::createNodeForReductionStmtList((yyvsp[-7].nodeList)->ASTNList,reduc,(yyvsp[-1].nodeList)->ASTNList);} -#line 2419 "y.tab.c" +#line 2420 "y.tab.c" break; case 109: /* reduction: leftSide reduce_op expression */ -#line 328 "lrparser.y" +#line 329 "lrparser.y" {(yyval.node)=Util::createNodeForReductionOpStmt((yyvsp[-2].node),(yyvsp[-1].ival),(yyvsp[0].node));} -#line 2425 "y.tab.c" +#line 2426 "y.tab.c" break; case 110: /* reduce_op: T_ADD_ASSIGN */ -#line 331 "lrparser.y" +#line 332 "lrparser.y" {(yyval.ival)=OPERATOR_ADDASSIGN;} -#line 2431 "y.tab.c" +#line 2432 "y.tab.c" break; case 111: /* reduce_op: T_MUL_ASSIGN */ -#line 332 "lrparser.y" +#line 333 "lrparser.y" {(yyval.ival)=OPERATOR_MULASSIGN;} -#line 2437 "y.tab.c" +#line 2438 "y.tab.c" break; case 112: /* reduce_op: T_OR_ASSIGN */ -#line 333 "lrparser.y" +#line 334 "lrparser.y" {(yyval.ival)=OPERATOR_ORASSIGN;} -#line 2443 "y.tab.c" +#line 2444 "y.tab.c" break; case 113: /* reduce_op: T_AND_ASSIGN */ -#line 334 "lrparser.y" +#line 335 "lrparser.y" {(yyval.ival)=OPERATOR_ANDASSIGN;} -#line 2449 "y.tab.c" +#line 2450 "y.tab.c" break; case 114: /* reduce_op: T_SUB_ASSIGN */ -#line 335 "lrparser.y" +#line 336 "lrparser.y" {(yyval.ival)=OPERATOR_SUBASSIGN;} -#line 2455 "y.tab.c" +#line 2456 "y.tab.c" break; case 115: /* leftList: leftSide ',' leftList */ -#line 337 "lrparser.y" +#line 338 "lrparser.y" { (yyval.nodeList)=Util::addToNList((yyvsp[0].nodeList),(yyvsp[-2].node)); } -#line 2462 "y.tab.c" +#line 2463 "y.tab.c" break; case 116: /* leftList: leftSide */ -#line 339 "lrparser.y" +#line 340 "lrparser.y" { (yyval.nodeList)=Util::createNList((yyvsp[0].node));} -#line 2468 "y.tab.c" +#line 2469 "y.tab.c" break; case 117: /* rightList: val ',' rightList */ -#line 341 "lrparser.y" +#line 342 "lrparser.y" { (yyval.nodeList)=Util::addToNList((yyvsp[0].nodeList),(yyvsp[-2].node));} -#line 2474 "y.tab.c" +#line 2475 "y.tab.c" break; case 118: /* rightList: leftSide ',' rightList */ -#line 342 "lrparser.y" +#line 343 "lrparser.y" { ASTNode* node = Util::createNodeForId((yyvsp[-2].node)); (yyval.nodeList)=Util::addToNList((yyvsp[0].nodeList),node);} -#line 2481 "y.tab.c" +#line 2482 "y.tab.c" break; case 119: /* rightList: val */ -#line 344 "lrparser.y" +#line 345 "lrparser.y" { (yyval.nodeList)=Util::createNList((yyvsp[0].node));} -#line 2487 "y.tab.c" +#line 2488 "y.tab.c" break; case 120: /* rightList: leftSide */ -#line 345 "lrparser.y" +#line 346 "lrparser.y" { ASTNode* node = Util::createNodeForId((yyvsp[0].node)); (yyval.nodeList)=Util::createNList(node);} -#line 2494 "y.tab.c" +#line 2495 "y.tab.c" break; case 121: /* reductionCall: reduction_calls '(' arg_list ')' */ -#line 354 "lrparser.y" +#line 355 "lrparser.y" {(yyval.node)=Util::createNodeforReductionCall((yyvsp[-3].ival),(yyvsp[-1].aList)->AList);} -#line 2500 "y.tab.c" +#line 2501 "y.tab.c" break; case 122: /* reduction_calls: T_SUM */ -#line 356 "lrparser.y" +#line 357 "lrparser.y" { (yyval.ival)=REDUCE_SUM;} -#line 2506 "y.tab.c" +#line 2507 "y.tab.c" break; case 123: /* reduction_calls: T_COUNT */ -#line 357 "lrparser.y" +#line 358 "lrparser.y" {(yyval.ival)=REDUCE_COUNT;} -#line 2512 "y.tab.c" +#line 2513 "y.tab.c" break; case 124: /* reduction_calls: T_PRODUCT */ -#line 358 "lrparser.y" +#line 359 "lrparser.y" {(yyval.ival)=REDUCE_PRODUCT;} -#line 2518 "y.tab.c" +#line 2519 "y.tab.c" break; case 125: /* reduction_calls: T_MAX */ -#line 359 "lrparser.y" +#line 360 "lrparser.y" {(yyval.ival)=REDUCE_MAX;} -#line 2524 "y.tab.c" +#line 2525 "y.tab.c" break; case 126: /* reduction_calls: T_MIN */ -#line 360 "lrparser.y" +#line 361 "lrparser.y" {(yyval.ival)=REDUCE_MIN;} -#line 2530 "y.tab.c" +#line 2531 "y.tab.c" break; case 127: /* leftSide: id */ -#line 362 "lrparser.y" +#line 363 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2536 "y.tab.c" +#line 2537 "y.tab.c" break; case 128: /* leftSide: oid */ -#line 363 "lrparser.y" +#line 364 "lrparser.y" { (yyval.node)=(yyvsp[0].node); } -#line 2542 "y.tab.c" +#line 2543 "y.tab.c" break; case 129: /* leftSide: tid */ -#line 364 "lrparser.y" +#line 365 "lrparser.y" {(yyval.node) = (yyvsp[0].node); } -#line 2548 "y.tab.c" +#line 2549 "y.tab.c" break; case 130: /* arg_list: %empty */ -#line 366 "lrparser.y" +#line 367 "lrparser.y" { argList* aList=new argList(); (yyval.aList)=aList; } -#line 2556 "y.tab.c" +#line 2557 "y.tab.c" break; case 131: /* arg_list: assignment ',' arg_list */ -#line 370 "lrparser.y" +#line 371 "lrparser.y" {argument* a1=new argument(); assignment* assign=(assignment*)(yyvsp[-2].node); a1->setAssign(assign); @@ -2572,11 +2573,11 @@ yyparse (void) */ } -#line 2576 "y.tab.c" +#line 2577 "y.tab.c" break; case 132: /* arg_list: expression ',' arg_list */ -#line 387 "lrparser.y" +#line 388 "lrparser.y" {argument* a1=new argument(); Expression* expr=(Expression*)(yyvsp[-2].node); a1->setExpression(expr); @@ -2584,85 +2585,85 @@ yyparse (void) // a1->expressionflag=true; (yyval.aList)=Util::addToAList((yyvsp[0].aList),a1); } -#line 2588 "y.tab.c" +#line 2589 "y.tab.c" break; case 133: /* arg_list: expression */ -#line 394 "lrparser.y" +#line 395 "lrparser.y" {argument* a1=new argument(); Expression* expr=(Expression*)(yyvsp[0].node); a1->setExpression(expr); a1->setExpressionFlag(); (yyval.aList)=Util::createAList(a1); } -#line 2598 "y.tab.c" +#line 2599 "y.tab.c" break; case 134: /* arg_list: assignment */ -#line 399 "lrparser.y" +#line 400 "lrparser.y" { argument* a1=new argument(); assignment* assign=(assignment*)(yyvsp[0].node); a1->setAssign(assign); a1->setAssignFlag(); (yyval.aList)=Util::createAList(a1); } -#line 2609 "y.tab.c" +#line 2610 "y.tab.c" break; case 135: /* bfs_abstraction: T_BFS '(' id T_IN id '.' proc_call T_FROM id ')' filterExpr blockstatements reverse_abstraction */ -#line 407 "lrparser.y" +#line 408 "lrparser.y" {(yyval.node)=Util::createIterateInBFSNode((yyvsp[-10].node),(yyvsp[-8].node),(yyvsp[-6].node),(yyvsp[-4].node),(yyvsp[-2].node),(yyvsp[-1].node),(yyvsp[0].node)) ;} -#line 2615 "y.tab.c" +#line 2616 "y.tab.c" break; case 136: /* bfs_abstraction: T_BFS '(' id T_IN id '.' proc_call T_FROM id ')' filterExpr blockstatements */ -#line 408 "lrparser.y" +#line 409 "lrparser.y" {//$$=Util::createIterateInBFSNode($3,$6,$8,$9,$10) ; } -#line 2622 "y.tab.c" +#line 2623 "y.tab.c" break; case 137: /* reverse_abstraction: T_REVERSE blockstatements */ -#line 413 "lrparser.y" +#line 414 "lrparser.y" {(yyval.node)=Util::createIterateInReverseBFSNode(NULL,(yyvsp[0].node));} -#line 2628 "y.tab.c" +#line 2629 "y.tab.c" break; case 138: /* reverse_abstraction: T_REVERSE '(' boolean_expr ')' blockstatements */ -#line 414 "lrparser.y" +#line 415 "lrparser.y" {(yyval.node)=Util::createIterateInReverseBFSNode((yyvsp[-2].node),(yyvsp[0].node));} -#line 2634 "y.tab.c" +#line 2635 "y.tab.c" break; case 139: /* oid: id '.' id */ -#line 417 "lrparser.y" +#line 418 "lrparser.y" { //Identifier* id1=(Identifier*)Util::createIdentifierNode($1); // Identifier* id2=(Identifier*)Util::createIdentifierNode($1); (yyval.node)=Util::createPropIdNode((yyvsp[-2].node),(yyvsp[0].node)); } -#line 2643 "y.tab.c" +#line 2644 "y.tab.c" break; case 140: /* tid: id '.' id '.' id */ -#line 422 "lrparser.y" +#line 423 "lrparser.y" {// Identifier* id1=(Identifier*)Util::createIdentifierNode($1); // Identifier* id2=(Identifier*)Util::createIdentifierNode($1); (yyval.node)=Util::createPropIdNode((yyvsp[-4].node),(yyvsp[-2].node)); } -#line 2652 "y.tab.c" +#line 2653 "y.tab.c" break; case 141: /* id: ID */ -#line 426 "lrparser.y" +#line 427 "lrparser.y" { (yyval.node)=Util::createIdentifierNode((yyvsp[0].text)); } -#line 2662 "y.tab.c" +#line 2663 "y.tab.c" break; -#line 2666 "y.tab.c" +#line 2667 "y.tab.c" default: break; } @@ -2855,7 +2856,7 @@ yyparse (void) return yyresult; } -#line 434 "lrparser.y" +#line 435 "lrparser.y" @@ -3017,6 +3018,11 @@ int main(int argc,char **argv) else if (strcmp(backendTarget, "acc") == 0) { spacc::dsl_cpp_generator cpp_backend; cpp_backend.setFileName(fileName); + if(optimize) { + cpp_backend.setOptimized(); + blockVarsAnalyser bvAnalyser; + bvAnalyser.analyse(frontEndContext.getFuncList()); + } cpp_backend.generate(); } else diff --git a/src/symbolutil/SymbolTable.h b/src/symbolutil/SymbolTable.h index bbfd00be..576e9ab9 100644 --- a/src/symbolutil/SymbolTable.h +++ b/src/symbolutil/SymbolTable.h @@ -16,9 +16,10 @@ class TableEntry private: Identifier* id; Type* type; - bool isArgument; + bool isArgument; + bool inParallelSection = false; - TableEntry():id(nullptr), type(nullptr),isArgument(false){ + TableEntry():id(nullptr), type(nullptr),isArgument(false), inParallelSection(false){ } @@ -44,6 +45,16 @@ class TableEntry return isArgument; } + void setInParallelSection(bool inParallel) + { + inParallelSection = inParallel; + } + + bool isInParallelSection() + { + return inParallelSection; + } + }; class SymbolTable diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index c62d034d..c0ccd4b0 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -355,7 +355,7 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } else { // if for all statement has a proc call proc_callExpr* extractElemFunc = forAll->getExtractElementFunc(); - if(extractElemFunc != NULL && forAll->isForall()) { + if(extractElemFunc != NULL && parallelConstruct.size() > 0) { Identifier* iteratorMethodId = extractElemFunc->getMethodId(); string iteratorMethodString(iteratorMethodId->getIdentifier()); if(iteratorMethodString.compare("nodes_to") == 0) { // if the proc call is nodes_to, d_rev_meta is needed @@ -788,6 +788,7 @@ void SymbolTableBuilder::checkForArguments(list argList) search_and_connect_toId(currVarSymbT,id1); search_and_connect_toId(currPropSymbT,id2); //need to change..ideally this should search in prop. + return isFine; //to be changed! } bool SymbolTableBuilder::findSymbolId(Identifier* id) From c07d48382ff2b798ee716e1ba0a4bdf16e6b6154 Mon Sep 17 00:00:00 2001 From: HemeshDJ Date: Sun, 23 Apr 2023 15:16:11 +0530 Subject: [PATCH 38/38] bug fixes for openACC and cuda Analysis --- .gitignore | 6 +- graphcode/generated_cuda/PageRankDSLV2.cu | 12 +- graphcode/generated_cuda/PageRankDSLV2.h | 4 +- graphcode/generated_cuda/SSSP | Bin 0 -> 972312 bytes graphcode/generated_cuda/bc_dslV2.cu | 145 ++++++++++++++++ graphcode/generated_cuda/bc_dslV2.h | 52 ++++++ graphcode/generated_cuda/input.cu | 62 +++++++ graphcode/generated_cuda/input.h | 25 +++ graphcode/generated_cuda/output_generated.txt | 10 ++ graphcode/generated_cuda/patil.cu | 102 +++++++++++ graphcode/generated_cuda/patil.h | 48 ++++++ graphcode/generated_cuda/sssp_dslV2.cu | 11 +- .../generated_cuda/triangle_counting_dsl.cu | 8 +- .../generated_cuda/triangle_counting_dsl.h | 2 +- graphcode/generated_omp/patil.cc | 0 graphcode/generated_omp/patil.h | 0 graphcode/generated_openACC/PageRankDSLV2.cpp | 33 ++-- graphcode/generated_openACC/bc_dslV2.cpp | 22 ++- graphcode/generated_openACC/sssp_dslV2.cpp | 74 ++++++++ graphcode/generated_openACC/sssp_dslV2.h | 11 ++ graphcode/generated_openACC/test1.cpp | 25 +++ graphcode/generated_openACC/test1.h | 10 ++ .../triangle_counting_dsl.cpp | 11 +- .../generated_openACC/triangle_counting_dsl.h | 2 +- graphcode/graph.hpp | 6 +- graphcode/staticDSLCodes/PageRankDSLV2 | 9 +- src/Makefile | 2 +- src/analyser/blockVars/NodeBlockData.cpp | 7 +- src/analyser/blockVars/analyserUtil.cpp | 2 + src/analyser/blockVars/blockVarsAnalyser.cpp | 19 +-- src/analyser/blockVars/blockVarsAnalyser.h | 35 ++-- src/analyser/blockVars/blockVarsInit.cpp | 108 +++++++++--- src/analyser/blockVars/getUsedVars.cpp | 16 +- src/analyser/blockVars/setVarsInParallel.cpp | 63 ++++++- src/ast/ASTNodeTypes.hpp | 54 +++++- src/ast/MetaDataUsed.hpp | 2 +- .../backend_cuda/dsl_cpp_generator.cpp | 3 +- src/backends/backend_cuda/getUsedVars.cpp | 19 ++- .../backend_openACC/dsl_cpp_generator.cpp | 158 +++++++++++++----- src/symbolutil/SymbolTableBuilder.cpp | 38 +++-- 40 files changed, 1046 insertions(+), 170 deletions(-) create mode 100755 graphcode/generated_cuda/SSSP create mode 100644 graphcode/generated_cuda/bc_dslV2.cu create mode 100644 graphcode/generated_cuda/bc_dslV2.h create mode 100644 graphcode/generated_cuda/input.cu create mode 100644 graphcode/generated_cuda/input.h create mode 100644 graphcode/generated_cuda/output_generated.txt create mode 100644 graphcode/generated_cuda/patil.cu create mode 100644 graphcode/generated_cuda/patil.h create mode 100644 graphcode/generated_omp/patil.cc create mode 100644 graphcode/generated_omp/patil.h create mode 100644 graphcode/generated_openACC/test1.cpp create mode 100644 graphcode/generated_openACC/test1.h diff --git a/.gitignore b/.gitignore index 71ce4b20..eca3eb79 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,8 @@ debug.txt dump *.pdf To_be_done.txt -.github/ \ No newline at end of file +.github/ +dump/ +*.starplat +runtests.sh +cudadump/ \ No newline at end of file diff --git a/graphcode/generated_cuda/PageRankDSLV2.cu b/graphcode/generated_cuda/PageRankDSLV2.cu index ddd09aa2..85c482ea 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.cu +++ b/graphcode/generated_cuda/PageRankDSLV2.cu @@ -22,13 +22,15 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, h_rev_meta = (int *)malloc( (V+1)*sizeof(int)); for(int i=0; i<= V; i++) { - int temp = g.indexofNodes[i]; + int temp; + temp = g.indexofNodes[i]; h_meta[i] = temp; temp = g.rev_indexofNodes[i]; h_rev_meta[i] = temp; } for(int i=0; i< E; i++) { + int temp; temp = g.srcList[i]; h_src[i] = temp; } @@ -37,12 +39,10 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, int* d_meta; int* d_src; int* d_rev_meta; - bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_src, sizeof(int)*(E)); cudaMalloc(&d_rev_meta, sizeof(int)*(V+1)); - cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_src, h_src, sizeof(int)*(E), cudaMemcpyHostToDevice); @@ -72,9 +72,9 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, float* d_pageRank_nxt; cudaMalloc(&d_pageRank_nxt, sizeof(float)*(V)); - float num_nodes = (float)g.num_nodes( ); // asst in .cu + float numNodes = (float)g.num_nodes( ); // asst in .cu - initKernel <<>>(V,d_pageRank,(float)1 / num_nodes); + initKernel <<>>(V,d_pageRank,(float)1 / numNodes); int iterCount = 0; // asst in .cu @@ -89,8 +89,8 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, tempVar_0 = true; diff = 0.000000; cudaMemcpyToSymbol(::diff, &diff, sizeof(float), 0, cudaMemcpyHostToDevice); - cudaMemcpyToSymbol(::num_nodes, &num_nodes, sizeof(float), 0, cudaMemcpyHostToDevice); cudaMemcpyToSymbol(::delta, &delta, sizeof(float), 0, cudaMemcpyHostToDevice); + cudaMemcpyToSymbol(::numNodes, &numNodes, sizeof(float), 0, cudaMemcpyHostToDevice); Compute_PR_kernel<<>>(V,E,d_meta,d_src,d_rev_meta,d_pageRank,d_pageRank_nxt); cudaDeviceSynchronize(); diff --git a/graphcode/generated_cuda/PageRankDSLV2.h b/graphcode/generated_cuda/PageRankDSLV2.h index 27fcb9d9..0ba8ac5a 100644 --- a/graphcode/generated_cuda/PageRankDSLV2.h +++ b/graphcode/generated_cuda/PageRankDSLV2.h @@ -17,7 +17,7 @@ __device__ float delta ; __device__ int maxIter ; -__device__ float num_nodes ; // DEVICE ASSTMENT in .h +__device__ float numNodes ; // DEVICE ASSTMENT in .h __device__ float diff ; // DEVICE ASSTMENT in .h @@ -33,7 +33,7 @@ __global__ void Compute_PR_kernel(int V, int E, int* d_meta, int* d_src, int *d_ sum = sum + d_pageRank[nbr] / (d_meta[nbr+1]-d_meta[nbr]); } // end FOR NBR ITR. TMP FIX! - float val = (1 - delta) / num_nodes + delta * sum; // DEVICE ASSTMENT in .h + float val = (1 - delta) / numNodes + delta * sum; // DEVICE ASSTMENT in .h atomicAdd(& diff, (float)val - d_pageRank[v]); d_pageRank_nxt[v] = val; diff --git a/graphcode/generated_cuda/SSSP b/graphcode/generated_cuda/SSSP new file mode 100755 index 0000000000000000000000000000000000000000..8dadc27bb63eef16e3316e20b1d87d51c7177a6b GIT binary patch literal 972312 zcmeF4d0<=BvGA`$3??iVTWfZ~V{up&2*e>!6o{w-2^9$j0|m>mo!H>m!b@-{0R_ik zp$Noc>QX2wP;f&iDodUlNKuv|LunC|f=hW+rL_leaCc$tsAvNyjo46jjR>G8Efc7o`Ks5$*chQbs9e7KFHyMqTJ>tyLu**i z{gkRV?o~BsxcSwLC;Ev0LL5)|>V`7>ano0$^$Tl_ z31K6J%&d>^_lJKt99X{l%FjkKdn~#Bf!BVt>JtAyuUUUq?pvk}tb;oEgAD(fKbRgb zz(3UC{=33%!-Xsb|IXU&jq<;2KKFQdTk>bgB*WOZM9H;~IHh!3f!ftNeji97W7=MbAxnM@PE2Pe^)!KOHVuabC`pjuQ{~)m;;~Sz%O^;?>oeE zqQm$;>frzJ4*XjV_TvuvQyut)4t6>m^s5}=+33L6I`Hid`Zrv+aDe54?6h&xkDV5IM_MeLBG#|zvd91^Bw$;JM{Nq2m6~H zj%#;0#M9#thcXBKF^4#`I<#BopugE+eXerQf5*X}pE<ra0KS$6>slbl|lP?QU`4-*JfNHyrfubnr9kkSFa9 z^XPDgeCTs%_d191n&%LQ?>g|O9ooIYAr9pZFhyLE{pufRk9Qz&O@SH=xDjni~n}hz#4t`$a5Qmc;?87o#GCnDX{+{5VKh>eX z+Z^IE-@*Uq9Q=RVAr4nK97i5=Xt&p4|NpE*e17lHFQdMG(c+Hw`mXMV&hGkpqki_q zbL*R$JDV4^c6B#*UOe~QwvP7ZiyIcSHLJ4HC6`|~zkABm1r1%TjrFYyySh7@8y3%Q z1U99yrJ=LFyR)ISyK8o%&o{Lr)ZFe1T!3Y#*3a(fs{aOn#T`vx{_+binBP6EzP_=y zcgmD0rzmS+tF?VmDO>X!(BSE9&Fzc2TYO8P{`~G!JoWY6Eu9_L)hk@z+}YXD3C&Sy zC%90;r+MfL`_8UkTz|2r-Z%gB`g!wDg`hz9T06UZ^IF-->8#yR+F;|71>_F|<;!-b zwb!?p+S|Eso;!saYHABC;c8#DLAC&)n_fR}0gP00bA4-jS2JWoLwi$wXY+!Fwubh` z<^=(WQjMk34kK0%QD~m;ff!+kY{jkZjh)Slo7=k`YN;;Pw8HqKk*TxWTf1kezO*-B zPrw@VL=EMFhNk+4wziH&7-L9|hWZ7No$d9F4c(0`q&jU;b2nUuZ7wysDodP)cv}5D z=V6*ZwSN9-^%qa6_xW(5^!C<=nmfBX+8f$hyO-84@u+TCA+J$sp;Fd)5-67-@bfOX zaDM%`L_eh-a?a<&q?8i`MybXYmCnwFrS*sd&Z*n zo_fIba6h53ehFk(Ye&1$)!g0H(RfWqs2kF*7uM!(%TnicFcGc+gV0vTQqWv%y$|(t zcUgMZG%tmMw&w0;(rJYWW|b)$4c* zz=~pYbu~6%Yv5!15^SzXx>(=YgpFF&x|-V-f;%*3=yg+12;$h@-Gm&~r_p~o=fX3)}Vk}(P z*3;EuEN))BxMK6_rb&&L>E+cOt@dIw)}byq>NYnSor^IfJt`N$9Q=}V|J z3WcPYMx3*XLI_j!X73)Q%pUK9grOEPj7d(w0r9Q-l2TH6U-MBSBO96iB-W&GmMf*buQxcvpZX_!m2V8j|Qx)|cs-h>^*xKYrSbV2Ia8el(Z=wY(rdZ9wT zuoVxJ*Ehp_Rg(tS6Np1=`!z6On!zoIR1+o@6u=l8i?3PO3JC&laXB!1tVWv5!_2^e zhFRCR80S4sd6Zz-EOmHaI$7k@z%GSgEjA!u+Og~Q26@1+Kjr6m4B} z5TbP+jznGEO^wGNk9V_AhvZqX*m}39v9Z1jr76f8nU}f={`GUutv~f7kMZ?6v(GuV z{*;qWHO{T8n|aRc`Y9)!dQy!pOjkN}b)Y}>q*JDAW%iOOx>z&}rp-pCTJNSzE50q# zQ?<8nqu#7`%1Ni;dG!Ri8$S_#hc3q^{*O&u&X zDYA)R3GE|ASuv%JtsvQ*=p=ZLk}BJSbrmVr+EcT?7wDLFm1XP`TG)D)hegB-F1ou3@&6 z?w))XoJmhKegv}er@}ac%TVq* zuoceO_cqot+n@Z~%XpFHZ{K+@Tmjg_$gq45$&-xVvaI^E8}$cc@C=og8-L>RPO`s? z@mH364#M^(7@vboKm42yI7vUj)#|lE@c0voy9A%KMe!=ZYqlxw7Cia5;?;tC*}h-! zI9{-VpMc;==5>N+n70V-Iz!p%72L}_EO>(D5yAhkAA}EnGJ+SF=LFw-f2D6+3uy&E zW}J^;UM2W+<{rV%XYLpLO6EbqyO{S1-p@QP__vu43qH&|CHV8q#{_?sd0z0hnOAh$ z+Jo_ zGp`bS?*mmFJc3VV?ic(#=0U+PW!@`z7xTE_UcYL0Snwe8l;Cl;GbZ>Cndb!$vz>}w zdmM(Dy9M9Gc4`EFi+Mos4BKfDyudsx_=jv~Nbm^DB{|fU_!QHc!epc`)tX~j( z7IPPFQ{l(l57aTQ7TnMFy@GeKex2Yk<{`m<$b3NX7nmmme~bBu;34)WBlr;WoZutO zjqC0G%`&eN+&G`}U+_=ZAHU$c9<20(f*;7dSMXDr#|3wDyTgLdW&M=k3z?4zzMOep z@Ozn8e9In(Cz!hh_p?7Wf`^y~1dlUs5&R{#9~OLs^@jxiGwUY>{~PmB!OITe{1<$T z?H2?;jP+eN*yC_I^J>8Z%)NrwGp`eT3G)5U(eht_&dz&1TQcT3BLQ`Dh>mJAHqB#_-V{X1fRt`BX}M2oZzj@ zjj+AHH!-gg{0`1wM{=1$SSd+N~3ODccDNekbz*!M$uJA^0lR9}#>b^Nir{GS3O# z!uE|mdw&O*R|)<%w&M|ek0Vuo{eq9MouJ@HvwpAO=5Z=6_?fIfEcj*2Q-XIe9}_&w z{^SL}ne{7H*yB(!NA=4s_&uy&Blr`{1A?1&S_JxTt@mHCk1?=epb{t@$0!7KiQ z^Iz~P<^{ozWA5s=$6+S(YQZmO?iIX?d7a?5GY<*Aiur)xqs$Y6XPJ)({wec};FU+I zIOGIBp1E<0y}z@WR|y_u?h(9(^TaRsjjSIOypHvI1^+JV#|3|!`LN*Yn5P7Po%xvH zo0;bYpLn#2PsOeFI2^*;>A7-8ud@b`)!CzyZ z6?_Zxg5c%Hs5rO=>~T1ld9~oZJdR$$PiOr)!7pGQ61j|jesc}DOg z`1Py2Lzu~t>T;z{8;8Ag3n@} z5&R0~Il()b8!PSoy@Pp`;H#N?1mDQqFL;)DQ1H*0_X@u6WYyoe;3qO47To;}rJoYq z&-!D6U&TBx_+sW2F?$?tVeS_EyUc3@|1tA`;9mB#Metv;epv87GanLsm*Z4_lY&<< z9~JyW=2^kdVqOq@9&^|2_BbqJUM+YpbFbicFs~E*apobx*E1gw{2k^A!T-v9MDRV1 zSMkXRehl-R;5E#RJM8^EpLvzwjm$lQ2YGz`f)6kc3Z7)%EBF}mxZumV-C@D+VV)Aa zBB0_hCb)-rUhq2R6>)nURtlukmh+Kgzry_)nO-?y<+==gg}G{{wTc;QwM?C%Ee*70;01M=~D}d>ZqF;Io;J z2>wmx8Nsh*o)f&6$IBSB_cy`3O7L6Qjz{nZnfnDFVICAb!@O7UQEoRbc%J#N;O>i6 zJX3=EnU4t`VxAW~!Mx&LdmJ*%-GUpns@)pFtCMgecQJPh?q@qSf`^y~1b>|Ev0q{{0eTjM(|GNe!*{M9uWLH%!7h^xZM`P1I&8`|1sMM3;r_mxZv+I z9}@f@%!dWvW2%ZnQt+dhrvyKT`KaJ=_J2(9t5`oPc#`$=g7>n1LGUrwuXwBo@4#6;GePnfZ)~N zRQ(+iJit65c!+sY@FepQ!86Q91urnq2=2a8`I8mAj(JY-UgibC4?IoTF}`OXcXK^) z3GQM2D#6cVUM+Zv+w};ZW9}8a;wt5jU+`+?b%NJ&yFtMNtRE75fO)Ur?QCa2@LQP2 z1s`TR3Bm7Y{b9kMVLl@G&zYwL|1ahl!9QR=CU}{V3M2 z5WI%%>9DTV1ELF7g#?i_+_l$BDg!K`r9jb59@~ozms`f z@JE>s3BHE;u;9O9o)o-}{YeQPWem66a+7yrt~Wk_Ix;q zxl8Z>+jk3oI_p;pei8E;!JC+S1@C410l}BEex2a=FmDljHS>_*8<~d%Pjb5hf{!sD z68v4ZlMwt9=1IZ#tWj|u5&THzqk^BoJR|r#=2^iPGtUWbEKuzh1otvGzHcA*7UnL& zqinxQ@C55u3qH*H9>Mdh?-l$7*7pnUZB+i(3H~C~-GY1CRD3*whnUw0KE&KFc#iD{1UJr7_Je|F*iMV!dFH)>AH;UTf>$r* zaTmOX^@jwnWBp;l2bd=Xzl80i1W&U5sNfmqV}f_Govh#$?aKeW;CHZoLGTdkS3GLZ zhbLIyCHNTYy9KZ5Q0-O=9%No4_$b@=3Z7*BfZ$oyuM@n$JScb|uRc-PBDjZnNN|IB zui%*vm7TEQ3FZTWhnU9&4=^7R+`~K}xQqF);CcK59PpDAJi~lM@Feq;;Bn@of`^!A z1P?GD6Wq-_D|qHF%FmqON#=RM$%!dUJF;5EaWj-Rf!8|2+=6&VQsNhNF8NuVs#{>^C&k7!3o)g@|JTJJ5 zc|q{(AC#ZQ5AFG%U|u13khx26H}fjN^Y1D9ZoxCms|8On_XwV3UL$ydxmWNwbHCud z%maeAFs~E5j(JdUFY^|`tC@!ccQNl3Jda-h4nJYRGt37BPcn}SKE!-T@G$d);6diY zf_s@K1$Q$a5!_&&5;;Bn?z!9&b*f(MxA1@|y72<~ETJZ{hb{BM>26@q7&y97@%uM#}Y z+%0&Bd9~mH<{rU4%xeU9G4~3df1C4P@C@^S;7R6nf`^$01@|&<5!}r@B)Gx6SMcm_ zIR6DtF&_{-!8|T_nE8<4LFNg;z08LNcQH>2o*z?wjtHJ&o)SFFd{l5R^Nipw=3|0q z-cs#m1y3^12_9yi7d*(kAh?^kv0CK+o2uOk!86QVf+v_)2_9zd7CgwjTJQjKkKi8W zHG;dCdj-$`TKVr6JjFa9c!GJI;9=%L!2`@&1otox32rd&6+H8X@-r-WlKFt(aprNs zgUp8ncQa22ZZIDfJo_u1 z++bcMcs8y2>lQr4yjt)CbC2Ky%xeS>G4~1{WbPL{z&s$hmwBDw9_B&8UCdhq&%dbp z8xlOjyjSof^RVD?<^zIA%o)SFCd{po_ z^NiqO=3{~fnP&wLFwY6@VV)P<#k?SRev|5#k+kQ3hIxhHN#-uW5NO9$;QA zxQDq%a2N9$!Lu8c|6aip%>9A~nFj>-GOrWdU>+1awL!JpB6ys6NboT8Ucp1m!-5Bx z4+!pI9v9rjd`R&8dgW(A@C@@|!IR9Bf`^%p2p(jf65PvtRB$)*jNmTjV}ch_%Kxn3 zS>`#xQ_S;%CzuxmcYmbp8$Y(^zrnmh@a$iezDw{F^D4m;%-w>AnO6%QWbP5%%e+Q# zH*>Gx26MmQ*}U>UAb8*t#p?w3Fb@iDFmDk&`?0bU5$b49EFY~0}uD_{%jR>CSIHUwmF&`B?%seZ2@TbatPH=BXYQOmTLqLcPV}EGpb$q zqcp}5bcaa&@@xDYjR!QI(s-T5U(k3^_>ji;*LXtX2WWg)<6qHuQsZCM_=v`|KTP9!jUTS@g2vq%H`W*P|45BjX#77k?$Y>C8n4p$ z(HeJa{1}Z_Yy4P^do*6H@fwX!*0@*W$7$TJ@#8ff(D(@&uhaO68V_pxB#pOd{A7)X zH15%Oug0fnJgo6kG(Mp5Q#Bsf_*9J#X`KE@9hW6Ee!8YVtnq0YPinkI<0BfMuJM${ z&(Qd&#%E|eqwzB}KBn=rG@jM?*EF8f_}LoIYuu~xg2rcR+}Kde|8q57q48N7cWKBhfX2Hu9@lt}#)mY%MB@pKU#Ib5jrVFisqv*6AJO>r8c%8b zTN)qL_zfD*XndK*$25MU#@r#v>Z9(fDl|_i8+?*{AiY z+QDtkZikx!SEIZq%5IVupu88#E|M=t zd2f^rlINjZiE{qm0FFK%Wf#g>lFvbTACxmBpMmneD5pq11?BxvPLg~a%KM|7Ao)m? z4?sCi@Lb(d%AjuO@J`m*q$)6qu@>~MXln+DMAo+Ea4@WuwIrjf$l-($2N#20+5h!O!UW@XPD5pq%3g!Pm zIZ5&=l#fC=LGnW=AB}RH?$qkIC&Zju+Ed?Ly&k}pU3B$N%3=b?Nu%K6V|{89FxoF(}jl&7GaA^8lH zPeD0F@+l~vigJ?V<4~T8a)RU|Q9cdjILQa0d^*ZulJ`Y<8pSWiQHE zk~g3{6XguaYf(N2rp-*WiQE{C|`iGhvchKo`bTRvO)4Zl)r&; z{!M7sB)^VwJ<9oi()gnsL^(_H29z66&XBwo>(B>e?H>2E&a)9LPQN9{wFUg%KUxTuT>~Mcl-p4@NS=ps2g>;ZjX%mEl(QtCgYvZ~XGlH+6A`5~11QI3;*AIi6&947fLly5~jMDlGY51>~Mcly67bAbB3jcc7gAJB>feag?(ppM&z9C}&7M z1LeC=PLX^H%6FrjB>6a$??E|1@{uSHq8umrAe8S#IZX1tD1RH}5XqBJ9zr=t@&uH> zgK~i6PY(k5K9s#Ae}wXPQTC9$1?Bruc9Z-b$`7FIBKd8UzlX9x^6Mx+h;sgKH2x?j zP|lLP0p;(boFREF$`7HOBKawlA4WMz@+y=cK{-M4Ln!|MxaZ$|ltC3_X)1x~BVH6DNLta2=v z{;GGt(-oRkxn{RHvAsS%a1UeFz;3?EHT%r&TR+J+aM9o4{bm2~4P5q*nU!lUD$E>! zf0b)y{&VI4{Ht7Z?WZ#b;9upMrT>~au=HP`Jo7W(0Q>{x&!PI~SpDBn{oh!9J5=93 zd-_YA-}`vu#)XxKqb~+HciQG7Ccw*CKRO0Hf-{X=WYumUA8hw(|V0`Qq+ zxcm%!nO^8V08VX|fD)eC?7lr)d3YH8+Q_e7we=y)<0~On|(6w2``siQytOKB~(Q|68zwfLqyTV(4)5_>~)pMwS))QD4Cy zDgQT=GM(>VzO7;+HodL@`xbxX**v^7`J)q$uEueQ_;OQH{%F4{Oy|B0TRMNNKMQ+Y zv_BQrdVe&Ab(pTLplZLw(uFV+0OJM{#Y^G9xcTrh!=Q&zUT}e8?z^yMjBN17Vx$!7 z50Ea^t|6m?yCE?P-b6buV570Yig5*NAoHPM&v6A0Ktbi2el#`EkNekXKPpA~kD~Wz zDbimJzbz%))JFSN!T$7KRj5)*SbSzf&;IHDL*N~B$w>E~!0*5VEVhD1K3^KZxD8_4 z_JXfb0rxwd`<3c~2ldP_lYv!##hNaE-ps1P&e+6`f^SFyM0~NAqFxm-{!4I~PZtkojeHeQHiARAwR{AA8!J*hk*x<|B*+%zEg0hN zbwdgR)&g0c!}Xt3{~KNPpSgpsZp3y=bhTkzSN}Qp3%fcGjeTKP+rSWaH9}L{-qoWq zJ25J@uJ%Tjt&a4-0M#a7REOq7eDOJvxdWgW@JC*R!_9?wi3kREEp^BTS%9>T=_5eX zK0LG;n@1*4Jk*efcp#rcr>r<+p`9EIdG^ev%KjCk|9-?b3WEX(^P=x5<3-=okUpdS zA%ARt+#o_-Ujimf)QI>-wsxZXdeIOUy%Y7lGsE{v&)iZ9X}qX&wzL|=sxGE`nr#6c z?b}cmae*^seZG-0rO=lu8|Tn;-$>=kYrr(7rS4Rmoq8Vqeco0yz(r$G-`EV_DEd2I z!SvT|wT1m9YWWM)^!I7-_j&La73}^hho<|USN=l$pX$q(tw?n*lRne7slCe`QO!uX3_#XK2wB?7rvmS126Z)~q=0^<|y%F`jfguDx z#w(b9U`#fZjEQPtx^L4B-|O=|11it>8*yoYyiMocgKG&e-zx7);R0O^$ICb@!NtW8 z4!e-Mk##q~(j9rW7k>LAgLtXVABnZV%bZ9*UZ|TBiPa&D`dt1arV7=L6{bOjR;|K1RROQmmTaN&=FPAUK&7c#r2$o`1}ee9ib6o^Qle6=R(s+I z!X5y-Mg@;?!N;?4!OGy$Vzp*1HT~#>Kep!tbu?09gf=wq&e>5t@}pRfL{;xmsOOL2 zu`Zo^3Ep#~jib~=tUrV;D%JO(7`iz(k3OgxPiwWK<7@lkT=g+c?|Bv~FUQbj`vVF3h1*227O) zVXDA-VpH0Wl{TW1wD9-6lz9wL)R?@HtHOT43<_-ouxF7fhr-*aZW(oU>k$r0&7hRV zP#AsWU76CGL3v-fayJ-&zI7C?%G)1-4RDmq$qBKyncsW=8TL@+xyL@haob=9HR4hO ziwm!qN>KZ(ID2y#OMjwH1x2`Y-v{|9%1-e9GR& z4j@wj?RF~(x>KB1=ohqOjsj}KC=@GI-hKsWY(8c;oGbk+(LtCl_l=vXjd?iPpkmxD z#(YUs`vFe%Vy!UL0x`lyYS9Rp#0)TJAKD>}*q}0}rrYJplv(#Qs+#~ySaOiJu{;HR9TM^Ej_d)vC7P&yjq9&K;K8Ll$CM> zHZC-(=*)Cdt6bRu4fc^mh&VQC=KU#9knSG_LY?c!%@~O=a%%oh;`t9zfQ^z_7L#7V z*6dd}ebE%94-N~>-K~B#cd3M}Zr@#5eG2lU*@uQ0R?anXl?4=v<&0~F&bY6V*_oTcijRmfUYqJv-7^T=zH z*B5;^x9^<1kdj4DvH3i3Al?5A zi+V<)ioPaA`bU6leh+GanzeKxw5x4H0zIV{7|!t;c_>=G4)x&Y?8+6lg3T!TWIG=JNSYPaEWrcNoIg@nIB-bLP=o`8q*~V*q#kNV@IeX)0aa&^`T&6UfoH+Z zRCrIvyD9iS%I5`YFLx{L<(>yGY3SdjsG|sRrFHR#6V<9a9qQ7ms~4{1!b7mo+RMSp zsw*vGrGK1L!ovAn_%;^OUXH5bUIMqMv;@5iWw->5FWE%3%4nmCE9-cThd@Kktv)J+ zAweZ`NL-LGed}nSTY39X1^7U=p!2qK8fznV!GF;r@&5Y|pa^c^sxeeMvxVD7)m&xO z^q4iVb;kzZeuooKBpKDB={%dBNvm8lCgef?+?*P(Ha*w-OcGxu+35h9K+X40$u z+bck*b2m-Ev`5jL^UoS;&ifz=xYBZ2@nFJUnVSkKrzs1|3{BbNp(ajQ-D*8s{SdDG z(@HYF+9z04szJICF>e2+TQ6hlcRE|Y7mIlR##M`5vRY94q@r);9<2^)tNq*fvNNGf zO+9^Zl-{`gn>lzfRc=lvwSOa~AGaMtZTgkM%jUFyEBa-woR2`6H4L^j^)^*Yt#(>M zeOaH?&dv1N+PRr24fDXXSlqd(HGy|-SPc1zFJ^vr(9Vq)<*k&RJ6t2zyhUr|H+}~h z9Oab?yi1L=Km{0TtYG z6?x}|W#iV`f6Y*d&lQVlsVdUBavzz6SfP@N)s6S0``-YG=CRtgjj^aFBC6<1QKbJJ zAm+BsTCot?)jmNIcNk-ZKDSDCC=(gl9whg_(Z5y@GN4>Nymt+?%VAz*S?3KA~Lk$QqzL@Da4DXB4#4Xw2Z;5c=kn|~1 zMXCmpYjvGL>LKmYJft#60U@C33{oG8+qPTa89hI5+pdTA>HaKKq;cL8?%PI5r28dw zWtNxSfvHf-x@7_@L@nGdcq7vP8PtXQ25@Z`A`Le@BK;HL&5QlFq0JZjqxeF%(;6!K zAKeAbV-3jQ;)R$H0(Go=AKq?$6?}>I<6E0ri>XG3yUPCWquL-fYbjd?H>JFO1XCwp z`Qv@yGBmthz7BuG&)Gc-m5VSS;~EN3Lonvp6U>=$9vkcm)D6Y>iKl?!WvTa%s!-Qx^fCz@yDBr{Z-H(%YJc4s{z}G^bjQ0 zX;(Bx6$g>phZI9fL#mbp!&y@eX&)^D(8nwW4(~znT9D3N;emv-ZbSX@Ur=sdn@#6V zIGxrO*d(NLZhQ~Ne{>PV=iVe&Ygk;ZL^q2MD3N*y%D1CPr)lZjo4E26n@H0_q}@fX zT(K2WeDm*dqTmAv>ZrPZ9ul^FU zO0Dks0O5%&+ZO4`!Frs9TjgVE-)A`CqrT6;R`0L*@tx({vee&oD*Df= zF&V^YM`B08Z~gXLfgaB>$LZ}uVV~FkO&lgzI(W2xLof(Zl#1wd{>>-h$*D-1o_NST z@k=a24J!MYUUnyxX~q_UF?jG|M43|eD)_eDH0S^nrIaODI+!1>_-ML+4zvJWGq%n) zEk?b;=pbVIlun?O-YtRI~%%J$(@I$@h=46lc_kso=duM$W4~Q5{&2Y>Y=HjEN7>7s& z&$JO$HljVLpI}a4c3sl8>v&61uoUeXwUnlSQo6qh>>0E}M$2pQ?et9LIU6GVEg&nO z%W+$}KDT?MzYQ2ny#Z|GqF+zM4F;vN58f}V{4n)#CFEE17av!oq z1uXk9l!4dVqH{m-M_%?vmt~_pxtTw~KFp+C_eWlX3pTlLjg}exsh$J<(YZsaQ)?k6 zH^IG7FmkKfbCqiQq8+q-+D^8;J#Do;%x$X}W82flw{51wuT@C29{0{K;|QADM<*?2FL__}Tm?=)Lj?9^N6(X40c#lu(qF>f-3LA5Nmw zylX#<-wqU4vSKSKmQ3#t_IK{%>rl2ceZ2o?)W@1RQJA06Wr;b_xyd=v+F?ldFx)c1 z)hhaI@rW=paOvDg21a1R?qI)flPmYzMqCxRBQWm_t;ey`Ui?6H_jmhh-5sZuV6C5k zmI^eTr}QMD2g5&svkMB@wTpIj8twNXNKO-d6a%;u8GqNN9gOzNr{Nua9PKjL$7ABD zO`rJ`3@lRVTyXz#Y$%%S2aRYC3?6OCeuBZp_Rd{c>X6Wr06p9v zSb7J89<*^FwE=r9c;X5ko<5vJTCUf=f(I<$SemYrfOTW*%qYFr9kA}aRYcXPE1W#S z)7QUwOxrx4p@Iu@A;1TBcH}V(^+8Bs92OfNd)+RdH0Wl7uxoJtFin_F9P1oR~FlAz+R6-XZ{LyDI?phl3 ze*&BJ+*LT0=^V#NkAT#L6S!J@#CU&t2EY5Lt%s^}6g2_Txrv~}rx|~MJj&fZioLc@Gl~!T zAH8{!!B79k%H1GfC&sYv(eiy*eC_$-M+Ew|x!?)y0^~>mHJ8BtLd{n=CWIr)?)OJ} zVAZRIedFBltcY(&pRsTvlJ-4<-HG}h!5pdu^^1R&>GM4Tk47p2l?4G)f`rEr*kQ5` ztZ3UXUXk)Ea+Bc35FLxt@W?8_v@fMzV8KTTHhB2*3cmPbbCclEus_zb$sbcsnIHH9 z9vCVI>G{ksDD^FS#OQ(fu?&t+@H8`=nMP|LQFCyYIk7!mu*7egh0n%DYe(S0)k`md zwI~7~T`0c{TYzxwwI{s7!E@_rrja?Zxv=y)R6CNZy@{XvfNB_ZeYG5U(OfOz#L*pD z_8CM!j}JdX^s^BCLKH`8ZWfaTJkG;e z3DdbhLZ*qFS)pA@?CC2B>Z+OE+IYUMuXOb|irK_1a z^AJ~)IkRGumNRg%;j>5&%;Z`~o4Gl7EFiAb&Oa~m}6pHT_%3{88`y7*^V^NDC&2omE6 zY^+!ZhNtQToImA5@8j_3(-!XhssVXJy^N`scX)VGV0r|G=M9MaC=Sng&y5?NXVmbd zV0b{)mxT|5*oWs07@l_^45P3^Dh^No@#qpfg#k|jSW}ve!0=$?N>{s(tL?(oBJkFWN%au4y=m-kaxKnwH%(s!KY z&%O&=RA>j6UjNVF2n6r1Hq?LSMLamR!`A(PJHLZF>DS=ht@ti>+EvG3dvI=fPA4ecEDR!ynOz%Cly z7`bHEVgp~Y?#jCHbw_7K*2DfQ1AWQSmJII0&&|SaECUXV(T1!i$9=SRW9-Yyhu}OE zwqxem*fy8i+x0E`tgN#CVc32xUk3RAALH-8m-epZNB&j~)m`f#sIl_>-bNA6R(7X? z7a{yljw+Q`VY!8ZVNyxw@N;P({{A;+jXS6SKeAa4`%etb1FFWoT;omHkU{B_R*hv= zjb9z1YFq;~cuZm4Fbp{Pf~#I9Z{NQC%8haJ=3}$J)me)D|CmuUwb%_vO!yY#2Eknw|{L3u_9LIljD|uvryp*dp&?+0@RH z)l)y%9tH*uXqdWIkBFzeupNXj&;&re0Q3td1HG?e9XIMgld7)P0@}TLAI+{PJ7x!E zaCHE~Uee}jxGd{bhTlZyRJJ3VHEdTe*gS6sWfOK#Rn1O>R@ z2(vw%!^^@nHhsA;%FmcG&e2Gq8q12KpZ4O|tD{#soWS?+qsBHoq$E=uwu?!d=moba zQ0A;48&PkCmYmRX)PM_=X118uY@*aKer3h+SSzZgjXyeo4iGWm6b-Lz;$=wn80FU8 zsK7f>*~c%0DBvMKvJSufK;PBkHCgjJ3DUXgYcM?Y6$$>RznV+*uYXwdG_EVw*FV(# zCp=mL2OL-`EY>svD&X$v%&ZG<2S108));4=eB;5g$l#*sH;Rw#cb9LT59YORmpBW0 z5P?On#J5YljV&wpquz%viR5WgY9UiEN$Ra8(_N!6^XY{JK6p%|XDgWu}wDbn=C6u4ZP(T)W?&;Ypzx9cNs zPaYo zb5`3oQv3>L34Y+Y3Xl55WZ4sSi^G1XYQp?ZiNnZ}_K-;ToUJ}}$y1F0JdXl3%&(#_ zzn~iJ(sjUjp zB+5aOOy2;IXQ5bwFWkWzeA`a0Lo+YNxrd7Z%ssq>CFh>{fDkT4^J&n^Z(fP}I{1E% zXW=e_dP;ulT*wl-{zX}WPuEa3{DN+Dz-1ErxIR?bg=GAS3ldl3-L%NNSaJp=6YNP~ zk-)FlP{!aw7~aFqDY z$X_29wOh>E-ifkFtlOZ~eOA^D?YQpITHU3xZtsrkZpL}RKA$D)Ryfx^7kqv~t6L`O z#z)mu$Jo&#FFTC}+B5^HRrY|zN4~(oOfYb~X5c1iAf*`?AM~kEeH%_-?!1?(!&6qA zE8}Z;pvGFQ#@?#NNb%mIcFVm3mb%l%L^x~P+K*5M|XRe}`?Cr)t{R~|VyuAy~U=VCYE`fawXO<;ZdV8t~} zPX$5C#@1@9lD8!~_)YZR90u#N+eqkg-SEX{X64mTP#`{t)qG<~r@YL0r9E8F0AA9cp8gP*#_8kM&n55Lp&^cHqBP0wuM zyRGx1L?ga?baw~QR?%blAP8wWt89q+?m>^Sp58jjH{Ng63s}pqZR-eQ-vWw}32Ay( z4jtQEje9#Qg791)-SDvuLpRjf{0b-+^aIt8D~shY5-YVr$Wc;<_?u7sV*Ke7 z-SEXj#d^K?REF6&xQoufWIl!X;b#Z!H=1w69=`<`%FCgK}N`&Lke)$rSIjs*-ri3%(1A8LWS&1k4tsTUs= zG7l+`x6?QD)D}y3%4CwhV8(PKj5~%X+^H;Pds$?{)}zcDvhYAS56%%d8rIX`Qz1}& z&_8^lw5anr93P50zoUJ;%8Ac+gA%s%A>3N&qjc3%8KYNu`z*Y77%Tr^x!Rq&af8EO zrPee|?~|A{b?_eMtG?|&LVfQVw-LqLH)=2c8Q91@hRgr*O-bnO6*IqSp8M)MaXwSO zkFp4^uJD=sqaQk71*yZ3(3O~U4!@t>=?ca5PGwQNngeaYyqmniAIZR1Ku)CHFEZE% z;zb_%`kz@^OI05@do&OABCvf%1Ab)zj4LDOYDTVwXoI_SoxqHOc@2X;`-29&F8D5{ z?kRR_cmacaI?OZ&*B9Ws1yoPq8r#+*mE-B$>Ez9Nzjg7I>a_v2B4u5D2w2WqkuXQe zx`vBBLBPR-_3z;q$CN&wO3~g5Lzm8F;JwwB*-sv^_ngW~j0!xr&q38kWwqAQo7=2_ z;$Dj%ouP+JxF0hwnOTeHY4AV>Tug>jr=Ao9Dur$ip`q!%QT0U0iYzSPIoM?5+3<=C z7|SJby3u#0;b>5uRq8?MLn$68A%g>2yE_y+yS`?}h@j)Y_c&iOo%{ugi^jlo$+fyw4FfG=Pk=>ptuDD1 zLf)BcVaamX^Kkk2p5sj=)q8lgdjA|v9PB;p=*-?v#*k2y=5homV{(9P5%|0uI|gA( z=faOTMu0A#LH{V)TeQ)E!EsR%@H%~x7K*Q#@A1K2u)hkvoXja34g+1MvTn4)u~!~^ zMx9efjjR6bZ1rN(18BWz2Q4gdDl2hxDSgcMYAv0)1CK65J?_i6WB%Ei5&JRUjT1n> zOh}&wgG-w+c#cTLd#VAA^;E_M4=J_u1h4e@{_0)43Z^jklvKsS3<> ze3lef6q-4B#i+!AdLDFa1Y*vrWIRU3=v(I?5QGwh=DrGU(84u4GO8YGcyI}Bp5fB% z?{fE1yD*8_kBKPLL-G1U!sWSv`%BK#FS#SUz)UvB9pNZ$?{QUyJseGMio+bJXD)DR zcT|8;$>;t~m*z}W>hxr|0LH53ZmJqa5qjQ}(noO&KiYWZC^VA7yt#!gS>t8Dw>Ww? zBjHl|L;!e2rRHk)gu2uQ`sv)kpJ8~^vHW*?o5x|Wj)_SP91R~JQipO9e+iZ0UXgZS3k4?I;YnG7YlH|~St zzD?D11U2`{@G(&c$5^E24Luq(wQ*Yn3F(Jv0SOa((7=GDbKiqrmt1j6ta%fxB@4F#P@OX2HZ>|_En{EX-MBQ2>y*uX9@BB|ulkO* zUa4b?%4}HZ;QlzZ2~j~W@Uay0j<**h35k_~EdmVOTw8*fAq4}|&_FSmpiZfZe{l;i zc!LujzV9CP@T7*xAG0F=zJ`Xi6Zk=RIo+IYgzKcU{o0b@PD{|IaJN}$*LNQO(I8e~jxkvG7zKFwKXgcnw zSn(SlS*KaHeS&Q_(WJaF9p}g2Bkw^Wp^^Ra?bOzIJO`VU`VXm!JOK9A z_`v=H%sCu!+wT5*dW-5%Fn-RD%ipKaR*7ZnsX=qz1%Ds5#qzM2gl3Cagsxyx=e1T>tRiD6RAnnWIxGD@!@X^wM z-*^BGr*jXXc|0|vEkVj3q0{2aRHIpcpD*h&YaVN_Nvjp~GKyz6J)>OnaI+?L9PTqk z=ehjH*QWgIKb=S`mh$Wecvx2|&@0sh8iK1qfJao1aCVQWGi2ydz!e7>2G{(n66LvF z?m;Vfx@6|5E&JclbHiL?{x4>KhiZ?Kn42?akR{p+EeU3pb`i*&Y}#Cet{2pI?BHwh z>fbJ+1<=80mez5aAGTxSn8P0a-n-1XfeRV9xD)eirGu^WEn7IxYQPv|LGiFjzdxmoVn z*;qnY9dOLviK|Gfzy~N&ZI92GaX#VK%&2P)-$L&xrsg1JRFmKVJaA5>*kwF$TH|;P zbr}N#M*5azjh)Lhm78Gkm-n!-s3(+g|2oXvw0gq_>`GZ`=x}477}n@R%Jz*ErzP z6}R$zas?0B+8SxyrX@#iWEJqK_I5aw8@It^?%Ncid$c8w9lRdAYV`nOinE10O9SPo zp|<0vZ%Bdfr=pl(MwH(1Keq)Jx^X-Ho3Q)pGT|`v*^J8L3PTv| zJN~`Q9zejIcKmeWFLwO(crA(^l1SiCK1!FSJTydfEs6%aRW)kg@gHrk*+w<-r~nI> zwc|h8thwVI|HF7O>VLfB-)8`=6nFgNj!62T;T4yd??deL^BB9B?;rU71srqC0sT~B z(2#{@?qAnNNHjsNj z%*L(L)?M`C?j9bKFRm^6D(E)1in71fag7|Nu@OD}06l}ZWGpLR6yU?S+Q|mZKJucN-`&|S4J|h@gnB(@#Tx0#h z7K|zHTS{*(H-I7Yc*0q>lSfjy+i|>Fat|h=-iA6df$uI%PrSCc!|@*%4O>+4npUYu z{BngE2^{+>Gm$_Qb}R6G4pglQ#4L(ul4#)V-pO#f0V@yewrGHPvGss~F^FYmoHwv~ z!IG$MbmI+0SnA~E;|XeCG;XwxvwQ>>u?29APmAF8qil)pkH9yz;51Zs8#AyzWz8OK z#M5#RZ1a7z&y0fY497m-zXP9IC^6sH;fEO@Hj`d1Ip4GNSqR&FUtXn+G|vg@5lvTX z9}ACCz_8o*vFqS*B6Blo-^b4XE6z3C-oko}A62vFiVGs9^4q>Azg4+m?z+s&3o>D8 zBW_#5uF@)+n;=S7TQ6HQEo)(>^{dn>13tf~{w(VsMzM={iVKMZYc(YWUI>CHLrCW1 z{SWJ&xYe^#yG3lr51k){;HF?#GNPx7x@reS>D(`A1g#q-592A*$cq)1cM>*(~#s@g&#I39y*T$G5k@ZLc=VED_RM=+82PS6Zgp6<(b?rRbs z>do+FyY@E8sX(?)1PN;C+o1B?0n5>g;<0b1)>idRMB~@P(Xg5SC0BtcoiSLezzrnA za1>VoaM2nQJtb(hgTH4CiCo;AKMo)B;6He3C8^s=(g>_uvD>KL zQC}ee+pbTS-tnOgTmFuKnVno|zpyV4>|9^Q`EUnyg&lU9p${rY%^3=5jG=&kE)@|x zB3Ol1Fp3X}K_GdZ!S`drgp@a)zagv3Q2=8nMix++WhCk2>-|wi7 z3OElTK(z5c59)F%>PHvoIzF5K*;bs7xoGWY5%|cNFNgCnhx4>27dJgX)TsqrRSrUbl`-Hf@fFZvLimmVQtsp%V+74`3BV6i6aN@&tRO3&)|gd z!K@Oy>D#WiG8Cpd^xJ-Q1B2F=g2973{Lpl%LC4I3JW`>(TXj?)xMEas2>uUyZvq}w zk@XLESR^=T2Str5QKJSGOF?~#ue>Exwbvx&Ww&SqoX+E zg336cf+%2c$8{JtqT|SI1Bi+k6v+4covM3p-P_#>I`jU&_j~@I&m-xoTer@sQ)jDF zr|RY^DYa4_bPf>*S&mm=0q7Nxd6yFpIu%OOtYGne%7y20TrWjtPBwW54R#Z%f!{1< zU?i88=g9+4!GA;GV-F&#r5U?kh0fTp)1~Eub2t(B&ViDi&A5%JJLJ4`6{;KUJqTE$ z3e4(Zv<2DXbZ(JMe+L|saQ%ZSpeIlIur=WK!wk=HnvWG<7`-&w2TN~^vd*IVr21QB zpTY=rcE<0q&ii}weYD0ESpbElbIo$F1xP2#^Bc9aSOFTZ%sk4&BRs$)n2M+r0A%J4 zsTY*y6A#&GM3;hx9 z9s-VJd=460^G(8?-V-Homv4G^G6(U7u$o7@UV^=lZiUd@oY4&kbb&(SFg%&_OMW!y z*2|z9=;5Q={W8^xZp~wrGhIW6+9BEigXNl!5AfTqc)R%^qkAx`kK{TtQkVg*A)|}k z)ODAg?L~FKG253FVTNR5_Rj=tSBI4=g#*>PK4$$Wx$i`B_)1flRjvqm z2*(yJRe#|1^`Me%gyd27$1F;LnP=IwF9;Pwy_wq)q=qT;X+&AZ>vh(Z&-s+zLMlDy zvn|1O7JG`Jr{w?(5y-oenkM4oE{6`G32I{{)g39N7&dyvRwjf@NwE~yOEGIDRkgk1 zVgE{M2^;%XQeTs4eJiO?P?LKl_1a~`!dbrLG_BK-KdZ9!nuzNqQUup$Er9%%kN$ej z70{(brt^F%Q?09_R%ls-Z2(|{+Xw_J?TJe3 z9m$bqlY87I=uqw_D1#2;eG3pIin)UF0h)P^Y>_)R{#L)oSt`EdPGY`>m*|E>^1?67 zsmb@o(~=XzP0tR3RzA-g2buJEJBp}6;D^0$ie%z`SI z8Loepcgx6y>2!XCJrG%h)^YY}Bv}St6BKx&zB^1-*aPqHWI8_IWn%DvTOEi>~lzJgmgTK{R?7wi16QiTU0d2*t5HZgAG_k_jzH0dKg zmq~XxUz@6#iEcp-5#5JTow;3HHP&HlJbX)0R~n1$_`_6ll#mnsHaH(@c$S zF*fE`3U)q(g_uvF7v+hgmr;d)B^dAGU|eUo;1?*j01ZK1A{L|pZ?EN;-0}PaZ)BFp z+`)e!rs-YYAH*CC8Lkl3$;D&xtYV61

Vl5886QpNC;>CnI)~bk88j(|Qvq@p&-3tT+6#=Lt z`3?B%408-0%9G)!9aMy_@K+z$L$-uIu!lP1z}`t>WjV1Q}IGwIHlBVG& z=|)%0wH7;1#`EOTaqebsPSgDwx-?Ap^HLNi_)c&{n^u3O|JCdCtA^EwYIb_~53KBg zbXap**;5sZtj8oc%6WbJR`w7owft80qeRQVyiKl60*Z$jS z0(`~FUI~uPva%=RJs1toF2G|l;s+(J*`-TF|5$dq2^rmr0)PB`cQD%O81EO!`+{bp z{UJVkPUcJi5yOR2G1V3o*#e=#8ZTY89U+Lf=mZ;l!69Y%o~8SyXQRRGG*^664#_c$ ziqA!$p%LSJ97W~z+I%XTRu=9fq2j@fjh{nZ+q2jv5ZKJ7Ou7f}BY~Q5Npm}-&^6zR z6f)Rs?C*B54{~uEF;gx~{d5f4ac#pJiGRvz>kv{uT&WhNE}nsbaoQEW4%>TBot~T- z1pRQ%1i}tip_ew_SjaF&+@iTBruQkVmxag7te!}D?bEdX`ZeC`&M-8a zKIc8j;YQ_SPj58-)c|Rea|Ln{z~owifDP-Kv_IH{A)zdC#)wnC*)E5e$$MP*=J6#x z0SRj9CNlnOh+Pg?zOSxhl%KF7Wg6ODg~6-!&zKt zC-E9C1L5esT=hgj^Qq{5u5$av&QiazdrkM&qD`DBrgoKm70wLJsCr`h)lY;H+_}Ol za9-ihHFFPJN?(czr+<(C@iDrGKoUkJF*!o1I}y2&_lKbc@WrmTliinwKj<}_2YeCZ z+gC?6=i<={t*UvC1m0eOu2(i+t=?(0-x4Dw=nE(Oj*f;bBY?ic^3Ue)wWrx@Fv_>s z06&@?Yw$24bRFF&-^#Q3%;0zO4<-)U(wR#PxrNz<&Ma~=q2wCv&&}HGJPVNwObB>h zfVeAo%`>LDr-zQyp=S}9>~_Q{Cr{&@3ncN8rVUAKGGkK(Ek9p>gX_FBUn}{nM3)da z6~luznrn&-*UHJO7l-Oj#!y8p3mE9`TQ#3|xX5AH`NVfM691I!3M&nU%@t2YqWGcr zg&%yEhs>y2B|WBNh4{cTe#<&&F1ji|L*{5XR&-_9Y(fx%fO)^I9ENJrW9vfekV9>C z$M~QMD%}+T1guDAQfsa^aT<;&PsSY+0s7~0h32>|+i~QY(9m$?-bT?dU@u8A;K)74 z%C;T3EI-5MJL%!818&gum~Cy_d{!nnpFGedp3uXc?)up@Aeq;;@8kim%v}-c?%`v&y z%V^%)K1)HzoM2g_keA}60s0YlEk(;=|nNNe<5xH15i!OB#rwOkX2#d~rLneQk?$UF?BNCm(4$_3mB zeBhFgyyx#yc4Zpvf&T9LNRhrE1cCifcq+E7E4htCwnTw=qb)2aHrD8>*4Gt~B7xO7 z1tEHP%Hj>9J4OQ~Wnq}B@p3-jI(G)`Wq3o|B2pj*V9Om#WO9*;*y0hs0Y?mF6jEIE zBGBlSKQC{|2%@R@{b{!KUVTuCAf!Jp?+0;*gL!#V+1R(6B=qy`Ch^!>b0yghJer7QCxVJdg}4?;&_(Uy5m7qtkI4R^Tv~9Ftb$3^O*fSGa8_E)~hY@sxvb(|3R&zI1pYU zrxm9Pcop6X;RXK%Gv89#&`1X+zYt@|N2@G+7J5T51VUy`=A){GS4k@pe@UjdxVXmj zN*w!h)*uPA5dX9k$^&MCzR5S77(!qbvd#op#x5@1A5 zyL{D1;V20@IxQ92Dh3KUwpv)LShXj&>0>_IU_$=oVG?9^V+4o*386$6?E*OYe1dEn z)x~I?8-kvKX;5vhPA$M&&WhH(57T8S%pufl&0=Kz%?D!OpqF2$getdhnI(KPpM1X< z(GlZb#0R7(mlX2p4N_dH-fpyyL{XV&2x_CfW@~F}jpe_ma26=ld?cS-xf+YyMO%?ZkSm_BVb+NZE1_g3j{s5A>enCGcg$ zN`Y;5Oau2ed9_|lBmcbUe9m3{Tq0{~BML4PvrW2wwfH_j(XZ>jclSPhx_)=4GEde5 z`bP=HTz0rEx_$@5FYGy|XnJa0Uj}>XuyT+H9MpfN>klSBkh|U8ET69T0SHnrJ^UZq zp#Tmd-XC(=tvvSi%_o8XAn4dKk;}-W!Qn_ufSCjT)Zkr;EbNphG~`!^r>I!tySYG1 z`F>y(Vc%=<7zX|?Gl{ObBD@<^%gt!brHW4*?XkjYv~mJdtBOYZJb?)nM^Xx^Z*bg7(HW?4oo6jLC??YJK5s>7bsF(|wG~!i?&Nkw#Amf!74#`kL{7|_We zF+k5P*Ez+mz-p#{>II^V*-|d{15(s^vEI@xSNxARono=V0sZ?i6$RBxfe%phqM+Sq zZ+wwHpBBkp6>3yw_@juwkzybOa49Q&tHCTCp-wqJEpMAK;wMm(CCaZ4GKm!fvF4i{ z%7Rek?|%CzMunjt0`jWFCHf&NwC6M*zn6nLu)w%i3RBh`b4m;Ji{HY0(wgeP)t{s~ z5V*pupa%fdJ?$oU3UU{#W(Dg0uKBAIh64Wj1FC>PqkXr(>w&qt=Foj{t+%T=5NCOm zcUImf3KC3!&TX_`mSSL5UJx{$uC#-dWy$5*zD9eqG%f<}kOol|WN}~zf$*qNyH?Lrj2V^=KE9~L1H%vZ9;Wc4;6 zEkauZ(mB%E63zUqvdz0q6m(1Em%HxB8 z;n|)dfgr@i7kdPuMtg@>15=VU%hZP6)b6tb(9SWn!v-4tl)E}ANA7sG&F@28+OqjW z+OYWtP%mgj+=WStew+Uq`p#+d9~fXD?Bhkx=3mFYsni2D|4Ab3&*N?QPi;Pu9rM`y z1&b-y+0yh`l`#U6yv22oO=EZnr~(0 z69nMe{0SllSvLRA?n^$KUxkkhv}N=Aus3b<`=g8YZ2nU0F&H-gZ&J*%`L4V}o22y@ zEUhBaEZ=s3HvfA91&QQASwTgx6v8>1dl!4=#pqiH!+Z)lul2c^pIh+s@zqicSf9(~ zlMIgaVOMp?KjYzioYssscdc&2-?I4&;1G$*T*THq?^asyco68NiUQv z?L&#(mp8A&n~;6Udvt z>1b*a(uv`9F^KEbg}vD$T`)&=DbfRLHvQB`5&H0nZuJvKDKQ|G z41o?sk{?DrhWQj22D0HyN6`G>X%lvt7#l<&4*u+Zpcr+C(@i&m(jlgmh%;T-QXuie zYq5N*TIsq2KAX{Qr+;^GPFCgZG>apPK`t0)XTkXL3;4WE$gaGR3`8o)q|cB^2a|Th z9CFlNCXF)#J@u>vmJ#Tog$(yPS*)$q`bj#HdDe+ot^e4Mi~${^zXEv0N%>dn2G6|w z0N(7^AT{_ zCX_xIE3*6;Fj0Ql3gR^rMK!%>*=S!TMR;P03%qQsdcg3G!sbk)R5Z=iKz}~?a4y7lj;YodIhI3}%xe-MJQn_$#1igX%$<=xVWI;qc3}$(;zp56 z+8sz^BP9Y03I_3Hks>`#TqW(@#m!guvy23vZ}HbTGDlGmzYl-$A#-_D7)wpV|4e^? z!og;KwfemKK%Qb_f?i^KNcW0@=HJd#yY9Xi%aJEIlTC$Q>`tI|m)9^{&pk)l|% z+YGD2S7Ue;^PE5HN3X|r(&IYi8*^M>36-J1aeaNC8hROUP+YC4YiSy?XO$So@eV^g=?HCQ!KM=~1!Y=AbK#4NC9nf4Q z+TJks_CUGh7CoI@Q)?=PY>i4~w^)nnM=;NZMxCiNs@Y-zTc|V4$T!c{sPJw?H$ui` z5N|#$?VA9kiG%)l1Iq}i;jgoiE{@`Rte^^oWY?h=<$K-=y#W1bEB$E~G|$eZKfgQH zp;S)&`P5T@>FLi0q?l8G_5rC@f>~C8SuldE9BzyP)s6P9dK5kND89f0yoU>Hzf;58 zjt^W9dNpd{L8q&}V4JT{;xo~;fFyJ}`!&8Os>1rGs}^sA6E+jH@TtYl7;Vt|qB0b{ zxOv<3;&8#!)r$k9D0=ZgFcLtzF0GH7+R%%yZ}usTg(wEWnH#f~!<*J>NTnoOMF6@!rBQp5CICfzi|?d@7G#j$5nkzjjf=xzh7l z4rty7U*4;#-qT`N#Y|MpGWEMkutPhjUUi&cWo9W=x_HBj3t|NzjdqUHwHzAy6>T)` zJ<#ySxA|TlVB@# zy7^t!N`zrKTU{uvgRZ75p5-{h9M~UZz?vR?UtGt2^WJL8<|La6nEBH%TMe1b0}B8) zZ@6xoC^A?f=MH7X?P@4pa}K2>FqA(@>s&*TAz(N{(?&b@ zmT}UOhEmoWm{>3Z)*Cg}i+ag17B4`7`)$VCB6hA)SJ^NtY3WRcaguWYs)ENl11lcM zvw-oFM>SaL=+tIOLk5mb#IfZIzK9(h-%}#wTk=!_A=kMn5~oMLy zPi;9_@(Df9$-4aQe0aP}!v73B9`x{VJWl9RSE5T?&Bn!JwjX+%_j>z|<=mgs_7E;;mb&Kw zPxlPPLM5N>87?n)x@SDva;TH>mquTXoj97UOf`1b{l}n@gghZ4ZR(od0bO%*Te_z1 zlJ+(4eRGJWhxVfxh4$a@Hw*1cRAU$IYtcxf?dcWJtI>Xz#|^a>KIAfVnXY<}^=Go% z!dUuh$SX4llrqtp&2V8ttEKx@uO{1`J*_#8<2+qK1NF zlSV!8_`s=a!a2jBuIK@fTEczas7RC(cPubGB1isZF|kw3xKG&>t@QA(p{UjqnvU{) z&jIJuCF_ag#ek(BJM0fb<+vZ7A)Zak9M5s)ibo=|Y!<9@CMj&gU^>?qVuC+W3oV*c zFkz#8R$4K_tX2F=)4bSd{e)`mnx_hBoo#S10l*<29`c}H)%>_eRAgp zJPPp__W-#de!df648+0DBZGkqFle9VLN^o`-1RrJRRG;A*6VgKS_N4TbC-8*zW{rl zj`!;49Fq@n>*ICuF5T+9TC0|1?7uC6Z>kECzA*;qiNff;5v{B0{Bcpg5Aolb_brzcN9&B~I_Q zdK`Wry$(9VTHKDJ8w3750e?mBn$ouEPtw?xwk~Mo?vVWg@p?r1qj=2&;pb?=4_8~# zS>lDwGK$wcqIciFa-cU_q34ceA{yn`bz68K`VrR5x4sjtw*`C31QiB4qPAOPJ=!uM z{Pp5+_sYTv;SVagh~@$LLN@&7BA=Qp^E14}E1`xO?eq*%(UTW&+ba9{OC6;2iZ&nj z!jE(0<#2)SrdXn)}ea!x|J1-J8)}HR`)cPPq zpN}2;)`mFsM1HXmcP>KF5T^nZJ#ng+j!kir^PoO)3Ti+di9H@s5M`VZUU>=I+5vM& z(gEcmfDkmvzLhLI=WTX<_wqV(A^;l9;pUSPp4&2I8Bl%aszQimfC(hQVK z9Xd)%Mn7|C%zBqM!nW=V&ORe^^@i<2;hv!hhlP7`fj!?GIAVP;d}y_` zx!QUoYAuUhw`LCPM)JqP@Qt@X>|zZY!}a^%2fo9Q9#dL^*bVLg`>a!PQ{kn*dNI=x zVGe86cd@@#vE5y0SDhMCSd|{oIwT!m+%;yMQdpfDSX7NSYSO=(0`)OC-2(xNlZ&cT zC&ki9hIy-BZ0;0E{;OlW?~0h!FOnKrT%EqQ#2Ok4*PjUmP}A^Hxc*+YOa4@l7>j>9 zBznbCQz7tE3ghTJZdDe=Q{lK(7)_nUcPpdTs2Dmg!Q1iFwS}?H5=~Avmc*_3)2PBy zL)OQv*z{OxB-Fu7qLrH3VojNk?tHDMvvnM;<7gdEoz)b#X0dfNb!|)3nl>LOhwB#r zH}r@XD@m~A*VALx4Ecz3YUE6GzhVm^PDSn9#rPRb4V)FVrWbCNp5d&`7$rZ?nv2fI z$(}C&&{6AK6+}u*h^KqM z5ZgW!X&sJcbrT}Vt>BDhXjxU!+I*zTPcMMhp;-E=(&AWSv=m=uK+Nlhr#gZ#tZHaY z6h^JB_MI1X2*s{jN)C%!EoY2Xk*LU7OXBGR&K4*=N^!67?|}{hUH&-r^5So{3pGDD zA>1W!BAaj^1M_#}bhMH$YWIWB&-SKUUysYB%Qw}i7ZIYKS(aw;U z>75;U8Jynhjg`P?NV*5^<~zA4lDf7SV$zXfVqIBWo!Sj-UKa2BkC?S{BsCRMc{^F$ zx(qTi$B~(5P$M#Pk;u&9WbU}tA2KrpGBc=%(h{{s!+?hIrR~(f67*SX^@rr#?n=&e zFKN*!i(Ahs(V1$;tV^eZi`Pf3{xi_o%D8ot5{k1R6r<;hEF>GtV)|w4CiUV#yx1Qv zUW*s6m;s4^34BVuI1n%P2UGqdT%Q5f=(I3)UE^&0L?@IgfS^RhQ}^?Qxb=GqRq7UY zY~8dHzhkKzaZdy6()CKluALsWo~4Wd4utS2C1V3;#jWcpV-T0wQR}9OB1C7+K!-}) z=2$l=aT_=vT~XYiKp-AdhR-hv-cTMO>4R#0yJ7_wHBs97f zGA zxgfv%y&WYSk-u3!`Kw&lru=os<9zb>=iMP{drnd*1#`A2q~zI!y4 zD2-QHpF|KLPHs9j8Xowvm1%&=om^T{y|6=Qb_aeEI}*MF_p%KuEvtTaZ8SanvFab* zuj;xSV+MML-v!AnhvMz8WAEBj)<3KO@_nK+qNT&ob0qoWUJ=U<4@7F*u+m~H z6WMoJa!XmdDigkANpeg7=#0swBf@vQ1T0onFDwidg-Wo=(e>R(vZX_M_yYtF$myDm z(XOv4Scd@Cy6X7_q3I=|&~&&59cGLv9UZ=F2?kdE!-`1PPXK6)9#!nwP+_c~2ueN@ z9?$}70&u5S&bX@djP%uaL{pPXYk^#H^-syxf=KwT7h~^!6-&oUrzAhepbicXfa!^s zmPfn3Svez7Ix1cFRr1R%KUOEQYu3J7qjM-PRHMhjZy24(i!*_2b^h9>-ka%!GUq6 z*!S+-5#}=7kl=)&k8U*$Yopeco1@mr8^ZOcVfStNRi(p1;f4qBK7Nh}h3m<^_&FN2 zEtn4cJRLs=sk-3`)&g(}V^!)|o}s)-l!AfWjJUL~(OPxMwBC zFsAf)j3dgyR7R~c)>tP4*2yiZySl#*PSwlXL#$3~s*}r*OSq&@b@JtsXkUm}_{Mvo zHKV|_D7od5Do~1J4d3_>z{S#gfBii)$oND58Y}pu_1_9F41PFKJs$G{n8QjdIj+k9 z(m%FvJ@z$Q&GBXSM8(XAwUo}t#He*HBpx2gM1Ts}=lw-##EIm>Zgfj_h+6CHt><;X z2w4N)1nr`hZTKb}e`FyL4mGbLB+CCKC@H!mN_&X!I|=Fm>baoqJ+`3=;Tu&IUt|#T z6b$*^6!!9})5`@cJ@1qzvGll8I-jN4PKoF@-{zDiuvG7q&O^xu zi&;@=R9wW0!;OjyS+S2%F_{%R7!~KRVl(E|!Q*UJG#eG;Sn;7zaTY6HF)Gev#eAb; zEGr&1D#ozlE~DZMRx}tDqgjzKDo$s`c%xzzD^4>ic(qU_VpNP^MY&NioE1HdieaqS z(Wn^8iY+j0&hSrT#TujHR91XsRMfKKRilDS*~|i?VlXS_7!@_FxZ9|Rv*HG$;uKcY z85M(AajsEO&5EH$MT`~wjf#P+s4yx9u%g7MsA5IfsDLjX%4|jIgfsk;S+Ulr=+BCe zjfw~>UNb5xS@Eni&4QC zMCNx!#bKH#Z;r>P*zMZDh^@AaHHa2Rz!`8UaUCMs3>E_en!PXtmtl39LS20 zQE>n(zW&jpM=2{lH7fRJ#T!P&eyn)jsMwbke>EyfSn+$Kq9-dXqhfDXOfxF>V#TkG z3Z9wBj4&$pU`3Ttu{$e{GAg)u&FpVf;PZH)%uYtduB<39DsZ`fD6@W(H+}e ziWLKl3gldcGDjN~a56%fQlp}f6+0Uhbc8bGAgiy3uWFiDqssk znMFng%Aw3-sBk=*mjBVlhSiI4xytd;aFmMA|bmY!VNC1!nX zzt*Q9WN*i&wXs-o+Bo=lvw%oEeQqfh?W^rGE~7(fEvY*+23M@m{^&T>G&OA$A~kk= z1QvFPoD5{t;|X-bwu$rE^L6MMJ?_^= z$Jr;nuKKH+>(U<`SA1k2h^{kS`p%4{J9qE5eW;?fwFp>zW-V#1&qt4a*>k(}cV{#^=hnX4hlDx@V&4wFX`weGZ{F`=km!QhxDe3w zY=Ey|YgKE+z`@1IC-`>IgBEyDPTN{R2TLjOon0#Tb9>8;V^c%Onw7$-R?7qRy z7ms$4C1VS|{{HVX`(Mzf?fzf9FF=fOx%-a*|Ck=Y2@Zf=Fo1CY5VgLU#rpxuK2zWoC=*@lN;M z(fvi}J}-5wVDDxA-XTSvz8aQ|il_HiK0Wwa?9otiWSwM9r~bXV1S_ zp_Vuft=u>4h{mIc%VR2|Cfb(d(lTYZm^zApeYodz=|A1MS8s~jCPtyKSVzx_ecyl$ zc-XZUYQJgQ@U6wX3CRNZ7UstH*550-x%ig1jqi1bZV#7XaXcI4SAnwLXCS^+*o2V% zvG;|()yPTUkyp^SBnIz7^mmC60YttBljR|efPA8~m_#0my#UtZOM;5X@`nBK?-bG{ z4w0{w6$SDz!)I(oVu5(NzD!XlhWmXzDa<1dQ$h?7j^tw z0r9mSQ3SWJXAm#lD+;fwgaNivl*+=r5GF%SWvsDNDM@0dFbP7B-D0WZaa)gY##eS! z;@u#}F+QGqV^&}eCl3>HjB?1~@EZ&_wu&Aqc$RU8zswzPOVOiW7ULLo`_5sh-%7Vq`&pZCbs2Fx7W`Jglmro(oX))}_ zOqZH@5;KosM@5!0*n^pk`Z%7?;d3aDvKSN!z+#hvLH`o&=tA*a1qAV+GLE{KJr0vA z)IXLwBi*}C8F)HT8f)`^3@W*_5^IrcZ+qMw0phg|@q|sU%e4RM%+Dtvua@R?=eY;9 zJ3m`)4}iE=f%rc*KR*Ap_W!^nJy)wKB+f*-_mw!zWlj(raY^)IgqDG+h41bYwU)&{>Dr|TqTt5;@0^fME zd!qByPW_Gx*Y`tBGE)#w_b-O#sqPq0cl)-+dbOt4OVuxa)p1CAuhXz|-z8js5BcAE zsT$vNiS(UjhwJ$nUGC9`>!;(9?9*R}e>)~d;NMP(lkjinL>d0wF45ih;w!AO5}b#=P37`Wj<;@3bDg85Q)I#!+-jRIuz)#~(=SfU06sE%)I z(zW9fl_-phTkq7QM@>r{iNdtF^J2!=)CXXE+Ode&YN}((0kfG|3AI|YxFL3>HTD!^rj_dP{Qti3#}!51sIG% zd&3|l5vsN4UwQ3!^0ogWPkULfIL@@S1#4^cfVB!?toW_A&xg>66jocSqp7*|;17G_ zL2i%>-k$ZPU3Ie3G7034`BIH;Mjvjf5f?3oC`9~=76boO4>+ZJ|C_2jbp_JoM7#fm z7PHWLM1W^b(HiXzZh=D8e>+h!Qr#ml(iJ*bSOm-7L zr~e7mY8H~g&Mhrg8c_%87?Ka!58oWXYkSzfTYxM9u;%sy zojH%8jq)ZveuF*6P=_kMhr_el{xGF!hg&s|FOAYwU1uMlrz&x{hz1wsvi7ncMQf2r z$3Z^@;ONflp@W>a!q(~d>z8n67y0a$=WqYeC|um#YO%H?o4O$593<)y|~u+RCUE`=z2zCmXRzE!ivX+lX0oz8&3(kadC5c^6Hf0F$p4!uikeE1YV5hsEDM zG3zJ$n*H>QRgOv(RV=o4CZ};BDDq&e8+Wk`w%lIMHrr1E6ShaPP$+bU_NSe-9;E+| zsJ6bt9NN1%U`Pq7_X#JcK_top?Elyd0}j=DTmf-CHOi2E5c(6|L-KtmsNAayW69Mm zI1P%F#wqYt;A^I46k~5HW~EnPM=I89OElfEQhu$Ayl8ifS}%SV`*ZU{6J{!Xe7Vbi zIq@I4uglm9|A&sxga6ta1Nh$zLk1%G@&7gYYZw1v3jc2WBl!1_U+v(p<~QAW^S)$* zcH;pj1o8bCib<;*ut8-A0mtRIO6S?Hup&|*0T@|!!{;Uha>0!Vz*AEVT-YeNA`s^L- z_xVVGK8~_F2JsEaQ%)R8$tvxsSqAYiY5;pl2`VZpt&SK%NyTDEUPvz^llrj+MK8&u z)^b*@K$d7Z^97P`ftlh{!{6|&FN^Gj zAggdL_eW*`NSpgFtLg)@e~p6T7&FYH8+e7DP)4)Z9_0XmdhEQX0Qss-I8%dgb~Q#L zrpx6|jEDPSv@G1XTMOE{}w!A1iLB|0j|GdJS%` z|K4W*O}n+z|Bzt+>tK=E#QzNt(xuO|_WJ+&`T+jFZLj|e&HfA9>;INu|A)2L{|;vV zvv+NWK8FYUe-n19P5L~B33BPvr@j8)x-LMUi`whI#_WIEF74odaj^d#+v|U=c1h|e z&qeL^9}f2aIP746K3MxzTe6X|S#3qwmII?7U_97Ec{@c&%~mnlx-rQu+fPM2beCCg zFg>)}Ut$Gsw|=Jgoy0z8>-&c30ZNuCOhzd;8G&K_KHSWu)RMP}56A~UWoXnw}iuUw1a&=Fj)T9^x@!aU=+RGR z=6@eOlz(5F+`4`E#<%Dpegig1AHCtV?POzMe5c>W3f8waIqS*PPKX&7*;S6i6dWR17H?ePxB z^ii*5tq*U$IxyZt`sNt#f!+V#8n5S%+=ht|)yVklE<`A=H}dzZ0)raSM+W73&7M4Z z{U2fWpDt>v|B=D|Hy+!5|L=gXF8&9!+5Zn$2JpWtZ~vyh14jf-NU=T9fkc1jUtu~` zU$yCn+!%y+paC!7?>MnIcsvfg7Eo74MtB!&1H9dW@SZuwqhA0X^A!NoSw~^d?{|=L zwdYrDeGswUu%~JG$VXsY&iNm5I z^cEWS{9zdqb6e|b0jn!uiFb$KxkRF}cV=I{+#npmou|M#3qy}z#GW=U_SSDX^jVpM z1@+lwplo~kb6^nsmlfV<1Ntlny!oKIjGFL%+P-~w|ELQL_wxMk{OiXW2NeDDIRMqB zUAQ<1XGaCcA#3*fbS>yELt+1w?e!lH_WyXfDevHTmA{IA&(A?CAqD-F z9ngJ#f2B*X*N0TEuD0;_*R+L*iKbz-lqH7VwJ+8n6MX}OcnC@0zFmMS1As87;~xXp z(+kNKuE(G>*ltu_qQ%^`j?f)??C)@WZ*ksN@-^L)FR|Q9r%SfZEr{$^EKZ(?tt8|c zLhcvv+yUr<-Qg=c{`8r} zsmn`vg0hUcANFOKT9P|)bYSd%LBh9h?A3>H%GONRJ0QA0@#{~-(6ODOefkeEu&4C8 zFPa)5XfQTSKfO3}1#LROw7TKyX7f5;8wDdt|79Z;miUJt^`6a@X2gDwe7!OMq= z)J$`E$-`IW>21e(01G-(!7RPMP`(s@-S4({y~FF)NU{KtUI{FP!-({j1w8$NTTQAh z#xId~5ldahY{hu$WaKrSf*k`~@Xkdcqpi@u!;naXB(S5nIs<+uPlOu79hnB_@VZk2c`xrKOXI)aNYH{=#GpW%TPPo9;$Ql5GK)#W!= zo|U{(p0Ri8d#(T~d8IseH=oC~9-%tpN&VssKRf5q8~rPJSMtmTZ=3QQ)$+{4R?Md@ z&O8--U+DuL&r+k&j~*Xc5va3*f#k0PY%F8v0eD2PoHPA z=yQNnwMCzQ^)m2#ykMK?(|SPwzx$9NqP+`!<&E-oJbuYLKjTgK2W}huYlHCjX&1hy zf4&7RWkRTb9t%+*^XZ@6f^eQe@<|^31AiHoXE-t-n23(dpWrEl(GFZ>sUWvRl2@2O zzmpDiCyt`pcg{7~_e@eWcC-GEQ?T8HA4Oq|VH3uHL;m7B$hw1ibzQJ*uJ<9|7XM^B9lML6x{EjfO?R$F}w^~C2-I&QHngL z$)#iPXdIiJ%S_#gG_X_HvXU+Bhd^_9j{SLk2ToirjahH;VXZveG*MBYmMJS@Q}0G1 z2y7}*Hf$;mlT4TyPvhGd-*BcT5$=*8UoFx@i)# zOv|b)yLDdadUTvpf1ttAC#>4iH8f&q)Y`~Xp;2}`Ez(L4xExn=)Z@0lR;SMlFE%vy zgC)LW{cof9G2o%R^tOH-r1wEcH~A&>zWCR_jNZTA{LASr_NfK-sbcX^=fq02^&U8! zE?8Bns45lfBw8bqn$j(js_hX;jVi24O@Y7nbxmqi2|ck|_=DA{n4C}sxy@t|cMg zFROb9nh^UHAN<%gRPl-&v%;wL^5!u#(B6=t&;CD2&k_5zLC;6d4bpR9$qMmeEJt^7qYPlYPU(LUH*X{hTa|7 z(lum#;9nEAg`-@Xij<)!cL=LG5d_q~4^eOu4|dG!5y z<1eGHI1k?|R}Y>8ZjYeqvuFNTfZdX{IFp~~T-C6)?i9KVwQ7YLvyi*&so4i0(g zUTVnb%Wu;4y3IZkolCZ3<)~=CvZ)Wo)B02p7U(eZ@EgR|6J(!iYfT*57W*~dBli-x zVL{)m6qk3=eSx083R%H=eFHArw4tlySM~wl;TFYf%0(}N&3NzDURWr`=}Fj6Z2|%@ zrdy6<18mg(XutU~2_A0PC~xjq-LG3|xM33tk<^I2s#BMjvAe3&0N9to-KtU}V0_Mm zy%|spoM1*0bcC+raVI2^I|ngiGzqmdDsY_Oj4>!M236zil5q;!3;>`9)2AwRO<{6L z0RW)$!9}s;GE|M|0U*V=GOG_xV=V_FUjUKyK%}KQHQ0_?SFea#RqsWunw3#&_{ULe zY?C$o3#-n?nXUDBqb1V!lkkoI#)1&OE`kqBKpl8DOiiHpm8lR!xPAy)Fy2dN>iE)3 zi4-eCdbU}$1FB}a@fekJiwq}jeCTi=50io?iZC9o4($8E1ayrNuQXlsmNON%xGwtL zdw^Mx=H`TpWE)7WSBazJ^M7UULHi>-a}lfEN_C0=y4Gj z{NBTEcu3RTNj+qA0zQEEd<|$B8;>O3MT{%rQME;u@u9X{+Bkhkn*;zcaN%|I02;-| zM@u_#5M>G)Lkl(Fup+P7RqRXfq$A@) zuH7FOqIE*{3swP#W~$J@joS$yWQuf$Q19%JfeNp~?{HNVq4iM@8F2I-exM&7uO2e^ z@)^`OzwH+7g za)uhdn?3r_t}=Yt|H$4y3&NXb!u#&)_Tk+uHuWtIJ`6fkpXc~{^FMX|01l)(_DaWJMHQZ*pxZOR9HKUl2*gZZ zI6W|~GZkoKzYe<_1X_292D-3$l|(dDT>S~2U#`Y}EY|iC<=b08)m6(`0jliD8e1&0 zA!|mi#mPa~pZAbqd$6a2wL)OWmwoGH@hwz-p8{HJ&%tcq)I!`1C)yh|x>-=)7!?@t zWChjZ9PLj4uH@~hKnUO&{Mtw0A#%?B*Jkjm3pmeq^T;67jXMXX*quM+G%+jZ9n6Ir zAG;b*K+Zh<|1dHzs=JK-{qpGU*YG@i;%v;FJ_|oygUjO2-v>MIYjm#n0xLZd*xMic zbNSQ89OUHBo;?e}}-<4@{el?@~^F$BX#9un`bLO#;_2o>AsJK#?a zu;}a&0kWRt125?%N)BFj=TE*Toq1LnXx!WTwf(At+8>({e{!*5hJ75C4~OH=EsZ6n z0v~%7D69P&zp(5Y#N=XyHD{fxu;;ZnV z>6ShIJ53`a`$I>sYm5J;4i6A&R|7pi|9Sm?3t~cQPvrC+s8P(4*S&*1KVRexoIOKM zU-#(;o`3shs1E0V#<4W^IJrv)uMc~_Tm+QU{`QFDK`DccqLhlMY`zO$!y*?1;a%ky zqJl8Gm7GpIWHb;?IUdTd$?^~fgybP!;uatt;ul_u(XqncIDJ6;t)(@^-(mEK80Q%m z?uE;U!@ce(oz9y27x6C-T8+c`4We230)0TJm?>*$qCOYlABis~G_q$bNls>u{3{M} zm_KaKOL64zDxjL;batchMRA3pG$w4uILI?aL0rB zaIJ~4TB3RG5ea_yx&-divF`w%h$syX2=!~H1$cGRjvhx*ok>od3t!2{b8eZ@;EH#u zDqe|Lwt21*A9J*ioTxcf<5~?|=@hKPbO@HQ0G0;? zv0S=?A4_N66n-!I@B?C zHMs7>)t<KZ)I9jaB>&#Z@J|)L5k!_(;gYvz)pO$PN8B zkb~YX!Iz`-)nDO;YtT(i!xxD{Fn49d!jcyNaIAsqS*d&k4?)Ble4W-|UH(u2@k7+U zJ@OghxMg)m#(=~glou?~5g_84s61xjJ2IC+(_L8v?T7Ol&ZXUAe-Mk8-NF(M$-Z!~ zqEHDH?z=c>-EDiB7V{lQfhQli_-!SqN&yglyWorV`R#|Az`Wem)nf+#dI%H4yTyRr z)gbDd{{oNc?+w7{G!E1jWuPX|K%ozHQxUC?wJhsAz*T+C%h=sqM8{GAEmi<$0Y zhr9FOVIS6s9#_|#KQ+^j&oTcoK5ODWQmnI6g+hv-g-;ChQF-GIaT*7fael=z<2ygr zKk=Q0bnkzB4)XEjFM~qmDk!9g#c$YvTEY9I1_!ZQ+eNU83AJRM2Tm>_>shuU9Sy8? zS+SyDEI_~6ihkRQ@7JIGOnmP6}K1@HgZ{JQRYuX0V*S-?`Ai}lCjWPgS z^BnC5Df{s!S3l>&_jOGDe}Zo`i0{8T=f?LnQ2giM8#w;}KE72^cqhU5J@`k}7Cv9| zeJ&zbDvFMvxE0@;w16b2^@VOssH50_nPll`!S}EoHMGoc#{Q4S5EO;$Ob|aj7Kx%%>Z$AR~bpK`eJT)*ttW$I1 z)30rO#PEyVFSchl=`9)O+J&!wQuplD?JoBwz;LE}--BsRm8(lRvc-DuAX3kF@Q6hF z>*QniScOSw|Gt4Y1_TBhJ1ce|zQW@7!(cuXnJ&*9%;=Aox)q zRa;vn?8al{?{cM!K;E5f!<2pKyauikZTRHTqVu#>w-)SA=@Uk3y1 z;;PiXkyLf3Sn?%gTKuN4I{6~7IA?=3sKvTsb5#mESEtIus?_QFVgC(L>$Dbp{R@wK zp;!I*Z2frB2CF}wp0hcU>WUuq(}+B^25qpez{CD{wL5y$56{=Ho`#-B_na1M&}Jb?BgPs@^{oPYv>FFA=b*z!(GtJUp9{R^p@;c+`+4h%*#P+< zutt-}QZ!u-IFAC(T)gr+ny;|>&qL>E9eEFLt+WO`57ZaqW$eE7Uy3*R#_MtwfaeUS zwL5UFc!v=ZaY_^2fM z5@JJg?aj`RlWw?$riN;`Ox<+Nrp1i8IBSJee??SD5fbmrI5j|nu|27NnL zpfT{T!EN3w;5>b6y#h0e*j(p5%pQ?-$D=yL$G2;+L$JR`^Y-`BN&~}u{Vl9C*qNE_ zV}ku@>?WJN<-gzd!eD>h^7PkZ+xpu(*x&Oop`=aFUd6#D+b|z*oD>-E^xy6 z;=zr+c(Clh8u{oB{L2*lkt%`Rhl0IJ9u#glF+jb;vQhB%k6xlaV!X0O-R}*^qK&Zq zfG`)GM|+((M0KMPv8%CQd%P2`_L6*b*glBFBS<^}9bCUrJK^=vud;vkf{z|;;&Z0P zC$a#l8+-nKl*;p=H1&i4U3Sfl67)Cb=cOP%JeDnPHSU+^#mukAp>zkN7wlpEUTAl4 zVAs_%d|qtd>NXlDi=of$Rd?zx!VP0#zn}!)f0v7%m5e}@Av2Rb0hsLjh3mH<5d!e! z0EwfI6@Tgb?(uzPlYTJ^ca^0u6)LwgK^ihE88q~Nb`JAmfA^j{glsw*Ph@Z00qV1=&Bxlb+*8q8$FfmqUq;ny$C{dearIKM>@B#hdg!z9q8%7`uP1sDQDzF z9riGZ%zH&jC-N$q!n#M~E9({N*0kP}@%~e<2_y{8eMURb?&Zry=0t!9zSs zvLz)<%cyvgTgMj|ll}E*ra&*$3=_Da7j3hS; za}`fLNi)}H!d!`RaK{m`6rgh{>6oq0>|Hc_)LozH4Oa5xLzq#H$^j(wj8DG)tK-MC zFq5CzJL%~TH(Ut{WGG#TPqaDypCvCZBN8V1WrL?*ev8R; zMIzjA3k2BIF`wHDb?T4OF_(He=5r<1HG0aGSf3_3#=f*p>6nWm>A_n$(Iqkp>MXgz`WNWWZ5-dp;^JhD@7^N<@ zWLh2y-jA8eOTkOa0~G9@3&X7SY0mYSZ+>6FObC7j?cvwjwGI537cGo81Ti5Z@Lv@DC=WQW(bP&1szRH1|%J*8D zm;Z9(XJH;lKLbB-Vitb=+rsb8!ve%R>c59y2J;ZW51a`6$cZKeXBW0Hz2Ef?V0c?5 z2L&m={(M@K|8mo>IvYQ5Vh;R5ZQ(aGh~KyNe~h2jf0zo;ug;iXhyPOb^35Q{fwee7 zHUl0KwP7E7XN4?I=tAcQwc$gD28dae3t8H0(34pXuD`C<*_QLki^6vkCMJNd z!;fv?JHCrder|l3?@ZrLynJf!J6Go*?k~i*TH$-OkG?Yhik@vC{rGlmARP%J-SlNn zq^D!fNaw}Ge;ergJIod6YvQZ`>ph626L4q z|JnNK97W5LoDBPYuK;d${5vNtNyq&9GdF(K+4wp9YHFvK6zy{3H#~^nhA;kW_&tJY z$f92^{Z!HxhEJCTD0o^f4BOV9x#`z68^7H8b9yJ?zT6btIf&m=|H?tZocL8c-|uwe z&o$P|EqtFj zFo5sy&vOv>7vkGh;cMz6ZQt9~M;CPzj>t{qf*{hfKg)@9mi}yqzNcfZKwlHzZPlNP zI<$fBsmML{8L9Qi4}m-FUt)OsCx*V)@$I00BKh|ABbY1Td!cEclmo9%k=4?XQfr_Z zMbMI*N_1{%0Kp--5L9t2=+PHFd(*R1;1A?3xc0et!@0?C=dqBO}`cU1@OE0({}0S zxcET;0%VNei{%*R3povEqwgEbx0`9kk|84EFELWBVPf&l!g{P15b z3DDvEcHqNj`w3ZAbK!;BCn)&Kc*3P9+#nfI4IhQ;k7jCAYG+&(SSXKTsSA+aadI&} z|C~CdWI+$Si`+fAMeqz9jJ~oqmO2FqA1B8c&PN&t)6`Q#N8x?!VeG9 z1&1kFmWb-3N3tnlkMF6-tPka{vpal*X})eL$*8s;C7(_5z=dSWzfax6C7OMn2Zj4( zh4`%6Q|~G`b+gEIh!BG9Ct(0cDqF;zE5;9Tx^1;xjg^wMtYPh_(cuQ((bsI5>ocAO z^yc$I%sr9+zjr==dL}TRgWkzGpSSNFn9n2r`7`G8P7jJRpP#>-V?GOV%;#_5w&$Nu zCm&Z$>U=WKEMzR^n$$l3*9hr>e+x`%-3mRa1ARieXwSf;j{S#BD#_^N2tZ7+Z)eCU za>4LD6D6k$=edBKdEH)vs=JeN>R1Ikr>Ncscg&eu-ki~#REZ$s=uzp)d@f)4fBSrn zc-keiQo4VBGv|D++dVL!>Gyx$e6D@U1?0@VJ;3^s5}D31M=PxIGDaQwW68FDkKrE51qHB=J*UsdxtqnKJ%gu~Gk;h}vtngiC^hr?8&wH)r#ek-oXd&P_g|Id!^aq)@t_}+0x zRVJh2NGD1npEErEwQo{^@7zOt45^R4A;w{)-63-SWm(|7y_`p2ekG(^MK@J`C+8om zJrZoB_P^DRr23AY{ci*_a|-&Qegrp^wC$;j6R*Ft+2*-MlgvZRjphj0B8PpY?jfA}h7 zr5V}`=l?utPRh7=x5oaRt51-oO?~FTKiPzT`L@A7D+qtp>8DI{iKW$8GBGv0#7kJpG-!ZT*c6_P6;}mjY_O#XrM+-Ms6M=P7x8i8`u+ zb0_v=m@phi>gzwl(nWejVvjyl^04aEa|XTnl!PJ)X4+4#XI}`Q&4UzpZ7H>0d$s<^ zi_hLU@tL|KXTif~w{61b?QgaPANY?v?*}r8{&sxm=)<5R529zflS z&j4OE+*;-|5rT0Dxe1QCU z+yI!`Ne)r%Sk-q;0w1$%hIz)i5%%%-q8A%^nN0}wkHL#D=&c+Fu?Hpgry!h65wfI_ zlV-p9sY?09c{G#_JJ?y{>e`(LmkX}ON7t3Uit)pn_O1`PG>Bn${Kgm27;H7k-tuST z!I#!ob{vlcgWtwdhnCu(xX;JQdI%YOcCQHvsc^%uv1EldDw|Cjd?|9MGRk@N4L*N9 z5P$T#M15!e7^yJ%P5Xys_P;=EbLj7WqKDo)F!b$_Ye`V<&>v}(p^FQ!M2+`A7j1+J zKeg{(tj2qey@UCH;~j%X0`_+@-n9=p^zg>p_dI9392Uk~em~Eo!4H-bV)Ym(Z~jyJ z4r-j$ZrNpAwed|6w_7k*0+aWr^}DbA`z>~3W|-%Ae`-JTvJBbfOgi6cz60^z?r9$Wa6_=YhN6MyQ6~Zciy2D z4EZpYrc-^V*ZWxN22@wPXQ*9PJ4 zqu{nNUT;3X1#R5<>l#by~e1s{9CtM2ECVxWi25uv}e6Khn z`cslWb&&7gBzB17MebQ}x1%KaeCas6c}eQgQtl{V<9{ChL{sxh88S@WT>3ozpkW{E zrj#KTa44_WFGs&eO`V)l@8ZjxFAv)eUwqzcQLNy*)_=)(qUn>7)6OqH4NCV|M*7*A zOL6=dA1s@Wg3!>5OQD&41y*YgwZipJBas~%cNdu0%)?GnyAU}u3q>5oiSCPTTzzFw zpern7^2dU@*U_jFW6J?+M*~)(OT|X}F_bF<*!VSVQOkJ}=gpE$~EJm78q zY8eo&KZw{a$!x{RYhtz^fMzB^ceB7b&G1+n3#Ba7>cRmmoU986vOv4WW(Tpri;P() zV_`2{=*2=<7Y=5jgD&6-;85m!O`Ahmuyvs~3m@siVJy6<3x~7tqArxPFi#gMSRmnv z!4WL{UKfsJA*~BXu`pd1j%ML9T{wn?3A%7B3#aQs9~R=e(3gdibm2G_j?jgEEF7Q< z$FoqZ3n#GfD_uB|1&8n_vG9$ag-RB_(1juv{-F!qS$I_!c4A?nF6_+0TwUO9W99)} z;9;=LUAnL<3zjbI#==#)P|U)`y0AM7yvUeD+=GSTy09k;FcRvTUe<+)EG*E4^I3RQ7bdZA zzb;(B!fm=RnS};jxR8Zux^NK-7wE#pES#weQ&>1v7cOBTstXYoj@5(4SBbzuMt8-G$X7|23K7h)`YtP9mFyrm0+Sa?YnPGRA1x)5h!jxN-& zaE~qwX5qKGFocEcbfK1ogf5)Q!moAVG!{nd!cZ1!bYU0^mAWvTg(G!g1Pcf1!blc& z*M(6mbkl{?S!n%H4SO^T-|E5{Ec{y+#;~wb7sj&inl7Bl!XjNbi-jk3VH^t&>H;-* z=5Af!&6}BZ#YT?n&qye{xIi_GD=(2<4x zbOBmDl-WfWc$IplP#5q!l=*3sq5&0tW*rL3kA~z`%JUykW$s_YUxE)I*XrSpi9e%_ zy2BTz%kBHIOGlR?>wBIbwBi;S)1ucQzXC>Jlw;0e%|raLy%;dZU2 zuZKnRV~!1>n_`#~^S8YSCPIgpa2NhmX!z#esqs8F69deghnm288|z#6E8+!imCsFS zrv+!^{~^OPoR$}!*De!$w7s9bl|EV~%Hy)!E#c}DLqCzrCC@_JA8ic`{R#xh%%Q7| z5@-C*aNxl>KZAeml|#Hy*3E2w%8dWcM|MldI3LV-Fh@tfkAB!3&=?2lV%G7c*t#gh zG*esS_Sb&kpyVdpqk~V=;738^1#$%MtS#X>eH9P=m9VMZRgXyS7%b%B^@kAzgn!1q z{m0`c%#`pTCiN&#OFAQYdOXXXurid@YQqdb!da{yytL$I{>G6$+yGlY9lw$06Rw|% zAJO!0TBE5$m?%*kNv=ku7`Y{EBmCunratA=>N&VbZWhuC8XK%K0|G~=3j`z8+n zze2%FJ&TEbWD#W$UvH{RZtXC@iuXpBi%?UYT-GVt7da$T>oSj{toV_>rFtzr7`Oe5 zuI&5f0Ba22xk*4@bx0?>=}tfFAMG7I*yjT_V=StZozOP+A(R6hlD%IuE*xW2^s{vG9~mPbS(m}=D#q^qiE&Fmu2DnkoI z$Lx=i8qWezKs)QF-ug<%7jTsfkDil<*pNTUI_n?wpF;N2KPex*t`|pDWX&Ob`;$9d z5~%&)uk3?`29UI)0)dH3&;yl>8<;5iyGUA$N(KsMy1+@HM}5?9)I|1Kk~*$+XtC&+ z$C>?si=lcSb|<(M7edLkU{F4H+DnlTByDcOW%q_Y)Z;6*A8;Ck!R>>8%V;MeJmpy0 z`1QeSKL+%{q-O+6i6tzViGWzTcWWB2^9skrmxy02GT}jz^+p$zQ<2@j_!{{8FupsUb=OVxe=3Xr&DuT7}$Z3+zgG6mHa zLWzcOAFzbtitV8ekevZ!(apRPDDRM_20P!?=o~X|uJ?`oks^B?XfGq-H{wqR5Xg95 zDBXil=FSTc&cy$Ar)%=ViRd~HKRnkGAk1jhtH}?4PqoJnLbM`#9|tJM^BcT{uwdTt zM1qi;p3WYR7q8H4=fo?X28mrJ*iJw(UZM6^WvtopnYVrjjP)WPM7_BRDth{Z{3n5D z*$UYp@w+|_XvVveH*u70!yOrfyAf$7u)#j&qrM5b_xVk>IAhk5cD}E^Wn*AO_o|*L zOkh0OkHd%lBKQ_HT`!~fo$$qZ-e3{&KiVnU)6X$FL0AHP5Jc;w99@AX{owchK!E_`hwEF2 zKB!{<3C^!QW3_=X2R*8+8J~T#+dq#V=|z=yV*~s_X>swNv+S_DGqGd7>V%xiBx5JQi8K2F7@eqKg$;AJWsJo-Z254LX~ zz_x4#q&5`rlPSw_Hue0!}G{h8QS zA1XP53W5vZmq`5T1I)&zdVd_!+6HOG>@-&TWtf7|{YPdaC{Fd1k?b$dguU85Uf8=R z)E+pA5(k5p8y}me>+$^VYA% zJ03!5?|n|^Z?dFbC%2?Wzz<~nmyTU1`m+rxm(D`i7mWt}ToSGqa6+=Rd;iJV%6+q< zY$^T7*UUU=N0h;WO$qWh3;D~2Q0EUNWb)_5drv5{UoyPE%O@6)yA35Kce0MK*L?3N z;7{3|`3aQ2vO99x>St%K86c&FI#fd@Kj=`a=br3PT(9AKLUKZ>d;$gK6LclzV$S(L zYgd|qEWYu$R1?in@$+Ne{>JQQ$5m++!t2AE|KKw@$G+BzkWa& z(NW9QuS=*PXpV*0({alBHGljW>sKS)LgfVO*FEC@C)Y34KclI<94}Zn8}l*3&7CYB zC!ceOX}%n1w9@WjPucgN0tY4>YjFC5b59*lA!v(3%*s~VW0YnShDZ-C~wy&Uq(&uEj4{P_+mzkZ%i%kV^Ed` zWgVa_1Ilix2jzHP>l)|r-G%MAy#wm_@hX{r3yweX_KnJr<00F?UsVUl&r5yj@ve4k z_=(tE&IyajZmUo2iV+JqgHgG}%KFW>ADt*{szG)}1^W^lA*tuXKzcB|k>^51FF}zo zW?#+toH_E5GMGkejtKd_zQ?=9mmdX?GV2smy zFv#r|-%36+jCK9rtPBx4mOTY#q4JS&$UQ}C=qAj!yKvDM*!D? zUyXqai${q!-5%$_TS|B81sArs{!fW-Om15I@{Ny zGy=n^#(N~s!REebW@wi6G>y_1T1RtrWH}#7PaR{bDz-B?HWoeDPE3buxZyGI4e>cy zV~l{SpqePx$Pm|vgQwKPF_Q2U_{KHvk>}y-cj6P-_^vUWArn!;4Pb^;7)(4xTm)Mz z?u<_qx4;aA%$~aPWdj^WxpDY0`{1PUN6t&+i^fvl^uR_>p#2+#%XCV6HYi&X8@e#VFPp3WmiM?2^^{;)VrH%xf*;~MhpbZ6d)8YA&+ zZ4GNByF+T?bGe(#c7~=O=?-h;bHYOgTX@FAh zLKV6b^<2&iZeHvg5+5(#c*qrlRv^QB7mjzkC+biNye=li`#`M}c;em{RKFq3gSc)j z91oAipiYW+OhlSDtxB3VBdX-#p#5D75x;9;cKn4Yg?B}y6y`)WFD~gCl!etj4O^zsi&D$b)4&%z9a>?;TopA}Di-U8< z!ygk$WLS+zRsHa_P4(S`6ZmhAf?uN>f`!Ck>y+H0{Li)UQrE)UA`1~$VYm1T`J^Qy zLRF8OGf=tbjbQ&UeqR)vnO($2I<-6_1-pog-~lv9dof7J%wPIX${>N6Kj&o_Wc(_L z&A5x6Zb+t|)pHu*^9HOI3nZ>MXW@r>_<_&d<1MJ>c=ZRpzQ?;lUVDmio?ETNGH-}( zL7qb4>W{$HrK5;Lla5xN4=QXZUHM}X0`)Y+4^;kdIw}9@-ec+hQBf)0_0T3COV6E- zyvu*`A*^&+x5J-J{u#ew2L90BN%v09#Rb9^;)e}D5eJd-XNI?DR=RgsT$*>X#Dsc+ zRx{XtNPnD;FP-DD6h|z}=;Rna3gq^Fk)e*DE7$(Pu~2_4Hl1t%(b6yZOm5=Ka(VJe zhrkCOjenT1*m(ZEb0fCzAp%7ID+iaJ$e)H6x!Ym3b>wn6Z+VeyrWyGWhqF9yc~9P+ zOS50c9=9kw--$IQ7;B`f{m%O9V4>E?@V=3YXb?7NjR`WOR@N9B=dO%xdTHKwC8~7q zgIOghECuDy${uCP9&2P838_6qd+rO!leE$MOAVpqA0r&`PNKBm3)I0Ii` z4U{-iy*onO1oLb11wizaiGngZx3nbA#ngbP@pz25FlPN8HOlcU7sYaWlDdsukvl*_ zEGetw6x03)ptp~sAHYEnn4^;PSDqSwgunUxbv+&}SMBl{g==CNBErVU2rS`NNm(k+ z=$d$i7-r!l-lWs=pk{om2lr)lBf0rg9Z`5_ut{yhka_)6O1SH=q%^Z6d%zotJZd|I@`lAfl=p^Gr|0w#Z#WX-4Z7bC z`h&PaloQ41C0>a?XC@2Ylt$9$PDPE3y3^Z zq2?_JCq;lrOX}foJzi7WXi94EPQYJ6+mF>5IJX}gbHs{LoKj6=oNn*|xJFidW)EYr(68bM-IjwV zM$|5+i(fg{YM!!@^Q0O~41QY~9G_si1RCUFEm1cbZaBpbai|6H4u0^kDxTq;r;dj4 z&r@kbxxbGTdl#_vP}LnX-OSA*2tcwuS+4)~cn8F1I)5w;sC^ZsgVEo&_vryjx=f|Z z7)2TbJg%Tr%!B50EaufELs+2693P?Wh5tCef2$*8?py`)5QH@??^EeJ%UlKW%pvnP z8=citv?W~mhZ#(UgpWzwX8zleL}NK;tbRc4fD-0#E_{CHQK)4S&Fpbq+2JyNl|*2M zbHVph;14B(kxkjvCSzXg(pHn;Z{o=my_ECV$C3-ox=!D_80`(mVS6V9#}436 zPYZo6+FQu;x%Ky4(!5{DcnycvAIk8q3aw(!-!Kts*G)2dMeRa^TqKEAwX2CvEXT*F zU8PRZGaNGG_t<$g2xd z4^1f5Q#a=`Guspdbrr~@yv#aP?iQbr9=Xr;xFDW(vx&MUeugU-|z3RZYfAt59)0!l%Dd5oj$4=QV5r3+BvK zFjxHAAN%mVXnjzPaK03(k*rI&^4}Lnm$nkhxeGpIyv=QgCHEr){XzQIG-Y8RNb(}usO5at`4Fw`ILY47WxF_;w*W+KnlJ0i8T|>89$2D=Wl&imE zsqRgWpevQxE)OOROfxC{9Qq9`OnSWAsFBSiN(W1W_>|gLygi$(K| zKj1LhRF-EU8fvHa)2a>0$>OY??g*qsP;Tl$A34n9U&_qjmdEr4aMI~8l{EG;jKk%O zz~ul;q|M_wWX`dLszEtvp1j4^VQtjrC+Q`UD$|bY$71w%YE^aG05L+T`exzRXpXQU zrn=i(&F$*}yL6B8b&2tI#=J-;JoI<0$pT5@1MRPdTk_cZ-HKVPn6oISI2D~qw? z?U==uuECds8M!p{6lmMfInL^jtfGmCk(oHO6KI6s(uwFKF(uK#0usrlPv&fh+#EG1n}{8QRM+~*WBf7^R=Sg{_(7GoGFSx^7y z{sX=Q!zn6zF^-m-#Yw>}bn4QOjxB1h-6|VUA19&0=P(PRRF#OJrwl z`Src9`NjuOTI_9QzA+IAIPHAnQ=7u_(oE$gbbmuR|63XMy$br*^A-5l&m5U?eHsoC zV!nFeDwp_ZzVZit1lw=%AG!_a)4Jb{9KnHLQVgds^NkiwTm{#E=n1wDVPs#BSNKllbucAbr0KvsdX8Onh9R>`~xV-^{9@+&?<0+)YXET^5+1 z+xt|x^gOK7GaaSE${L=YFE@sz=fRWHgDNLBRP&M5OwwpHnopZ;9n3Z}Fg}w-d>Lb^ z=h0Jr52KD#io&D2U5?_|TJEG3TIj!H-4o~+&FYOqN4pZekYmlagtA9epD{bw$pUM4x=^=Ijs^T-|lqw-k`t5;~BvbA9edIkGag6)T{KPA2X%kpubO8>ZU{g+py|L*@t z|C!6@6Ii{%`g5=-%p6Z)+X~Eait<^}^M6!62_`||^`~!mf=VB+pnRGm9sgDPHWyZ} z&_A}X2{XvpiuAwP<3G`V=JKg)k`rEkGQ*Q|VEpOI=b!HXqw*<)8&qhYPq9wOX#q2J z)kh_$eET*S={WoHfqhOh{(=1^B{?$wIS=uk<@hH&oeOg-Fr1pNsGxl<)LKv4ul(t% z@cgTI%jdt>?f*gk)qXjD)p~%=;{BDR@D%(oE>J_zd?g3ohgsF_tm50hGAu`vP7&Xb zvy1QL@c7z?#TPc-jD-WSfMvWH0Uf6uZ{8Rl`;TJ-xewpJ5psUeB9s!9$onHxx{8w1 zpAWO`voNcSPpuk3u+M9u~Jt+f|bi@@i7`&U`)j@%?$9x%QxswVG^W2>Tm zJ}Iguua1Xa%Tqw;wM>YFUSo}=+_k*O87i+5b}g@IhRWroq|j@5Eh+R`W_&}h<)wFA zFZu0<4@+M zc<+<=lNl{8$;GoNu4snh5}Dw@6^&F}GC*C?gvBM@)fEj~T;f(&G=FhPTXn_4DK2TM zt|TMa4s*G>V!;-d#NcX)7_a0fnO@^WXy71UzF3j~ZwmP1q0BS;W2fa|Hr?}B`SvX6 zj}_@#gc1nod+aRqZTmD#--uJ|<9_oBp6@ysrSg1N+U2aC@A`)8Eqyf9cPf0otH8c% zM~CK@s!w0vf58%BIiH=N^j1*cE3$9TP<@rpLf^=6eV3eC->K}o3q`_075h%;d{*`? z`&U>#UwPz=_C1yU{-OFyGtNr?xN!ZKpHaWsUo5X<{Q(;>!xtgL1yFeEeap4O^(-6} ztS>Uk56)jzRGx)Klk^vrnYGjV&m1gGmh+#EA^NyYFZjG&fxp%X)i=d+=Jw$FaDCt4 z#D&m-dq{hL@~iN?wplPe%^91PkEwc{!JJOW^4gpAhVq+FdK>;s;slV)J> zj_D&3jqK}0!@fwKvVw1v@$HygX+A5mf0Rj@*uNcO2_)|n^FocoQ?+KqDeX~#{ima} zm`c&NGX2c@K3*JVh3==;SAM_hHAa<;cQUE!H2YP%gzNb&C$zqbC#(G|e=9TcHNh?D zV+J{^P%g3`LEiNFS@uJiSFes?*-y61m?8X&D#}6SmP~^6BV>P=yv~)uXi=c^_+neS z4?Fo08P-&sN@i;O=@hISa?@}M=H7$bhEvd^N2Os6QFace;euO-(=bsldxz7oYK3)+ zYxcUac{s&|E!3E+$JSx2RzQ4Img8hMCRF`>x*f!_0~0$FWjB)=-;4jt7=Qe}gK#&z z5QybW{GlcR@qKjX1(cnXem3`AhAh==UZhGnuv9ZF8`dAcO5zDxOR5^id1{^J-K#_Q zUB);!JfYWVugDe&}wtRG;247u>}r ztL4juz{;a6h?B%dJ26{~)1y!d6PZ*Cu3UCf zWxd^L_d-B65db_qvZE^PM0o)fi;IE%YibXCzKj~ZYj}(t)?=|13`0pdMo#%N$~)Z~ ztnac@!uvUPHNwGFk=KgH`H3uT>|eu|Yh{5~_STrvKKfDl(k^wTKNM2hq08%>PY&JB z$PG`9o6$?W5`SR-+D2}NfEPO>pHpRu9Rs+mX#W~+t4$Nfr-ugB``7Tz5^S1i%@y|Z zk$+iX-vKkYCZ52*x+wMfx>G4nme}it6}ZP&1+QjIRof)J+hsXFCb&y&_GwFA_BYOe zB58lHe^KvJ`>JtZmm1=770981>`!Ybr53h7Z9KJ{v_GxX zsRLzccy+k^{xl@VdD2tC{xqE5rT3@3H&8ndYn<7iwk}_r`sDp-!EFiQo6_{o1nC;e z?YQuk$mMd}MvgEL!A`Wmj*F~m0Y&dfdHNeRx=9sg9Cn1Cycg|lRifNMW7dPD-_ZNf z?*2eW$K1FImLj;6N@8F?nzU+aKbrl3&bcd}`!rF{>Xi5-e%0IYyf<`p|3adJUEO;y zG`l+P_X_Fi_RJ6K>Ix7)hHO1eKZl`4KB9tgklvcknt0vMeJs~8PWL=XI)(+V2T#E(CdlMqa=$`w)KPJ_N~kj9xE&9DSc`pjskk=WcH8|0aL%Rpf6Bq`~}s z`Cw@NLRQ7A>HI~RQP1l`n7_cPcrbtE*26m{%V02M9h|TJ=p=rMg|+9HzP*#njqfqq zkhf9`zRDgPOj}EnHd{;!IGwzY)$Q19kJ}QTBI8!F**G zm5$lw{ppkSe@KtPFehC9uh@dkcFfqudp~V+lKv+DmHw8e(tlsL{_{?uf94JURsLaB z`u<7ze>Xh;_f?$#H~+i*pGyCI;rh=zh5iO-quDbDcK*L&M|0;7sxFhfM?Ncb_SK zS9tvI-WzV8;QY!nCTf{q`MI6cwNss6@G*9Pm$OTE6)&3%c`6M)p9JG?5gPxP)5hN; zJpRAY(VO{=^6|reLeJOx0tO7&Cjv@Nd%oF$x5D!Aq|y_zo)Z@T1EKLxZ+nLLp9+t^ zSw->VOd4!^R^Q8w4vjw%@t@Xzt__cW<2~W!8&<#GK|uxVv$o9{;{Wo^F#9}sQvAX4 zz0E`|{HKG8c)XXWcq{Oqyt2sbtB2RkE31@Kv#1&;<7F)+LM=}WoUA_+60*J` z1BT#w2J)|(L|MNG*?%~jL&pllfwD zhdM?6R>7iD&?mhge{4=z{$A*Riu^r){r?a7Gvhssr%pP*csq)QnGAn_;gax7e$+46 zfN(-KIG(Ng{B`FAj)BqTi9r@OPvyj!BCS6>LyEMuDN>xXkt+p)^2`e@Pkg+F_tm&n z&MyuvPrR0^uT6R0D|bT9BMFS(E6VQy6jg=!ZS+Q1p{~CB)cKuh|NoTV(ESk@(_<mJ?$Cyht{7JRt=W*p&d?Iod~waoIR~be;!;&j7|N0&QAZUuZ8Kq;mrEczJ;Hc z8f8?=dc+d6!e=@!wQ;!KHFt$o|G@Y=uPlo5q^?d!yf@(dq(FPqTI$ZNsDK!bWT$iY z#8zi4{D>aM^Poc>T0fc@meX!ZW9yI!gJ3(z!?w))LDhAM;(yqlZ^kxq_Tc5Hbuphv zRpLJVI(bK<*s|Ze7?W48qVi=+O$uu-ag2hzm~xz7{;T7xgV9-Xa>jCd zDC0A8-g!q+Z{Ho|^DF*~ zqL=co=zD-K!`$$ku$Gyb%(2CTD9^=9H zYtp=@(RbPZU0-fR`skmb8I$BYAK6SAMjv=zV5iI$D|7O|k&@aiBO~;9LhO@a&ZiBH zCJisCN=)}NrhQRqJW>(gp2(8_5vlnTk*D-f(K`oq zG^VF(#mnf^*~T@yoc?0qbZ<#YH_lAUaY~~U|NcA1L-IbfjE9a(Z9uI+GVo&PFHW*b zmWNFjsw&RIN0jWJlf#-6ODkuSBK3a3?Npv=`e$=KDfIJvDda6i2EMY8fECGlNH|XQ zO2v9R?j*?9FA`I{RpL{yBv!@yZHkx)UzqTYseDGRlkxKTYVVrKC3}CX659Th9BWuP^jgMu8QwLt=axY0@`ck1byb~0 zdUE|s=~MDoqSU}tEGow%6CwV4?)scP&iO;IJwI0;&eezirarifI!ULG!A2);MsgR) zwr#oO&|^)f0>{+|J zeJy2_l5jguIViLKy!t%!ym$0+6&#i1qJNBPzTb@_W$}>d9F8cJ-5t&W{Ce+?L8m_o zCm(ZcXZl4q-m=bwI*zKA$tS?%`2)!1 z>XOQQGEeue#^zg0RR7695$fU>T&Q_a*TPQ8Dc(c=Oq@u$Jk{@xb5BpnTOR4|zdob? z=9Ii0uH?d2uGALws$-Ct`BT-1j)nDVC$|`xlI&Xew`*ao<}JEaPfW{SUWlK<9x17X zoswPr9+}7ABQa%36KGa?(s87O_elET%^8u1c4u{0K05q})E4#A@vStszf)vtVf{4M z!s3puh4t#z}IG*W%x5*;ZXaV(wA@a}Vo+vm^-;?Wr(jbfY6kB0@dq;Dg5Ne?+iZ;mn z2b#Vw%=`zD*Q}e`!hIAe_&v4IeN>5$De*BQKCZ>bmH31bpD^N5EiP4J$p#{4$`N@T zkKY}c(PndMVI6g1a9ZR_DYBH@BNt`I09}dj^&(4T%hSNghv49$=U@7&;{cf_zrcqO z%}l4qe{YmL=bb<`#>lp(R5Fa6WzdgJMNQ=yG?BX{WjHQ17Eh#i>g{4U%}NfFw|;9P zwa-=18S$p82YFZi-MEk;Yh3f?IDquZhO%|3dWNrNe42M~ayriW^7tRaJl12GID6U+ zM?oW#=VtxGpE!(CP9c$lD5G#s9YpE&C(VT>XW~0mQMY1e;O`7yt#~<6BHhOckk^6DWN_OD|Q@4Tg=ObhMTp z$Hy#@+)YL*twNdAM@xTH(k(_R4MdrhtfkA9^jjm97Ng9%LQ7v$(j7)B8#v3XDq5Pa zq`QqYgVH^Xl{E$`sbi$F7*=Mj)l#>T?lV&PYHgYImX=2G+a2i7=Zq&HKVsim8g^th3Bq_l;WexRfgrW86+T1!i(DrprX6^AUd{%)l5 zJ3>jLjPx2xztz&7N?OxMn^C%0OWP_b4y;!BtwZTcT3Sy@YZ3VOn|+@0GzC?Ts{+ z(%ZE3D1ZQOrF6KK{(*rg@>^)6^(pP9rCXGAl99$ydYzUo zRMN>t+JMqJS~^`xryA)Mlpei8<@Zq~oo=KpDE&c8?^M#4jPy!Mmucw@N;=y}n@~DK zOXHMuu93!5`nZ->Qqp-wivANNI6zBxJNl{XB5%dC+)+~KMcjt>B%<6ANCtqAP# z`XVqiF0;Dma9=VUg1|DP5CcP^LqW(TYmv$_tDz40Izl4QCSwBmQg)eDT}vk_>1Y!L zS|vzJ;*=EzQ;HWY7(Lo=$iC3B43QzFt;JIfj$e$_eYyB8vu5d#S1KKoOdzBL(gH25 zs-%;RRGt9Jtb4We7mSFYV5*Vg64G=nU8khejTBKqdbO6mt)wp*DT)BnXf5?C=?o)< z4?=pNzAk@CN5{8k&e1wS_O+IE6Q(pcb}2=qV#qx#Sx7nJ!qtNP9JUq-^Y~nxRGX2`fn}0OG%@Ube84-NNOHAW8{h z40a!}`?T~|3S`_SxK83>2ONtX=zg>O*GPnDSc8)FHq7} zMw(6OFfBcZE6JP8Zp1Cip{$#hZNU|uweUQ(q`jd>;GQ?HH7?7nraIg_9fzzS#4Q`i zIAXMHvc%CX-h((&0WEt(_$kRcx-!eTO!A*I1ai00F@`a0RFc~u@fgV{N){-Iw1=5S zGM4Tfr-;oSTu>~U^=B(T5poIjlNhjaDe-1<bM@g|eaJ^caBe@z zx$)7t{@`4HaIQZ%*B_kg56<<6|NHTP?2k(MBnGDCUV3cJ=$o9@bY4CSS#CDXO&5MKWk?iM4YrZ}uZ)GI*=%o4w#UaF3*eO!$LU;c^()({s zEv$Kcs&`{@i&oW>3tQDrl?^#5dAnSxvLy%K4#kXO^S>9%!V~w;rsKtC?~#lqtJ4o} zP09Ni`*37NvPJFmyc67pQ&=0(OYE-viy^@6O4&p4Z{_SB__s=S3jVE{-30$u%f7fp z4{pIh9)2zC5qT4^CM~eLYI!7ftLSLdHA7^U{U1Y=c$xZK{2PI2W!nuRY>J&dgZ_bi zV1hxi0f#qa=Z)MrYHl3UH)IbEL&)YE331%qIH7OIHXMeK{WlV#)Z8f3H;}1X7q*D; z_y=JFj#G$3haSKttH?j{)lY0bBy;J32i zI~K-cOBOd?6|6;j?VmN)iXJ;Xg%y}0KJ z<&8a8S98x*NO}LH%ez6KeAlDQrF_pjr3d_^L!1RulE)Iq{4VUXUJ6`A&5c%wha0UL z=#5s`3FVgJj)y~J9fOrNq!wl!(}0vRfa9{aN&qQr0i>`Alxm<<1G3vHB&8mI7Rq{+ zl(l@9I5qNDnXgXCJ#kTXEmPXlQM9K2bi)_iZGLnWT#1_=UwwS52wM>E!eZE%D81tl z3RvYMm#8XVvj0So@9MODvuebrbCG{%$6R?SBk8*;cs~!Xe2DvFk5n>N$@wddN<>kz z>?e`iar!qwev6V5^`&f95OK2nI?)A)vZzC*T;Nxhm_)@l`+1qg%c8to`Ne+-F--r; zY`$C%lHa1d$@mxMC@bpVksH{#RVcssZ%y6|^)pj`%+4-v?4io%Mf5It`TeSR8zAKU z4=Dc!l9E&;OzH!!OXPZhx%OUf_MR4XieZ$UYRM1o>YR6q)7Q*7?kCFi8th-i-^p6$ z*1wthmpL!$lqHvIIt{?d%4+=}_~I+}!o}o{8xVmPNxY@lMY<+6-WB0Y!nQ>$1Lkub zB@b_U>2po6!z~3Rj^tNE@|~Y2z|Ov^rIn=U=A9C^s85oWYcQDB+-=f0$!+*069M+WU_?3l6K-NN)oPZ22)h(p9_%-k&vi}_8@XcBUi415%?3!F6$?oH@=Xc23rteUQsQ1>jp2OIZrpPiUci| z1($5uLmTDYgjb35{#akv7`$y%;>N3^yYWsDfHYaJQDH*LyQ`QK8-=qQVdq~hXj$?# zv>^7DA+fhb%z<+p?ULiP>${P#t6%)rSM?42ox6x0mi=+_uOxUd9lgDqR!%ncQNK^i z<2>+TrEz=#r&^h{pezazje%v$)HxJxU*Ak;?CXfWpxBjPfJ}OP{jp7XyE7O!GYWQR zXJ_CWota|59=x+ZyI+Ry9^5$Kbksp^O~rtC zQC?b9y051sKj#sI!`oV`JpK%v=w6&N7}qg)AI{^y9cL#L=k&sLoeb|5kN>VXxlYG* zT!!}tk3R>mu@&dE!F580_fL<1Orl&j!F6H=j%o0x;r;PqybGAOIvMwlV6Qr^UHQ_7 zaUAIO-H$|$G1cMq;~~{yI@0X%jmva~z9y~)=bL~#8NQM5(lX}`-uyc|C&M=uHx4`L zDpd9W6QZ>a(ba@#tV7(C?&~6PxV<=`@gm%GWB0C{%htr>8;-iR%{ehsH2$4k$DsRo z1H1Qe9HE@OiZrYGFhwOY*;%hbxbnxVM8a{)oR4%o!w?T{9Cl`_P}zNvNQRiALv%JF z9@im~Oo)ech^8h)mJV^53DHG`K>YX)GA)ay?SRu7x81(W#NY)}(J9F4wx`_y@$%Qj zU9sB%9)SJNP4>9+ev5Li_^oo@p6U!PU&~I%5`UDt4gPWE=SX-tXhqid-Fc<(^S9Jr zm0bDK<>FrD?ECOHfsMBmi@ z5eU5b6!$+l#r>J5xbM~Xb=F=$>dWaLEOKApC=WKIGvPhe4UD(%mD=Gd=%j972mHNK zJzNFXsT(+__+F_Wu7ZZ@Mgnd~1#uPBQa7-J{a&ddu7b+yMr+)VD&i{mL%Nr|qGXk< zg8NlDX86*QQ+yeT9=rt-Rj`gPl(_O&N}6dOyzZiYy*qFAwO`LBTIvn#>9l?o<&UWO zeFnGhYH5Ard2fIAP>*j6o#bNNK;6pjli|BwJhn2g|IY55?z>zZ_RuSgB>M&(!7g6! z&u(TS_zE{9f><5FXS~LFEpSHZ&Q&@k59z+!lT-3mMW(db;ClQPsYIx9Xk52BPl8GF z-HzrxBO$#gEg2bzz;A2$O({y_K-^Ld!y1_Paqa`tWbw@P+<{984< z5&o@~9h087CcucPL$5y!yPg$xE$u;Q_`Gu0IV02kBT%XE`YtNdr_6?=EvIjg$?59$ z^?|dEU{l-?7jU!@Y=_a#_JNa)5GTuNiVHZ{2)4i&;P-)ZjbQV85ia0ZBgCGmc-e0PfbD^79$%~RZeTHj~xuG$;l=m6ho2_P;2R}*kWv~{e6<}gW1{d01!FFZ`+L;w>XIQ;_*E^eDP@Uyt z>Aq&tWGu(E48ZS4kIy#dJ>DqJzQf~dCymgn1j@2+)=kD!I)b)3f^j;6t4tg7pa$xu z`|3+0)rSF!IsAJR1v_xENw>5wX>E48CU%wbE?6h+%a=|wghzYA2Q&P}AzwHP4lPR^ z`AfV!#KGwYDZWnf0#ANRTB)2ImMJJWT2@wa)3LHLu~Wfz*mm!8IGm#7n!{yf81u_{ zD}H;?67l(Ccov)RS5$=4>yfGvzOL@(%W-;Cc6E7DfW3VkJiYPEr@wbzDvt@D%DzMO zB4ggZ1gGEgu%>?y++(f?(!E9M30&2~Pcy4X23E&8Z5eJ9hA&}{=xdT=5aO33`q>-L z;QApn*SzJ_E=sh5CPyn! z;eX;}1yM?YqZB-96s$R;g3^i78SQ-18RgTUp9-U`^ILW5@km_uVHF5y{KcB zcp^r4J@NN2`5V8Z^zR_~ZCRd` z7qf(Iuh~BzR=SreHm023!w`n(m5tQGMrd}CW^)ybud;@uc}aOz_NxoK3b*BVv}RKk z8&{4USDww%Y@ue8H5;YagmP?$@+_b8pwFY(Dw^H!ENzuoj;&svosLqJw8m(5?QmtQ z$za|7`&*~C*_Vxn;0I9Dc&xq&zLf623k9~_S%#3Z>AMl`sY1(__B;h+xH9XJgHaJB z$I(tn%b1F|;5j|%Ie0KqKGylO6J@xYDR;3uw_^dm)UfnMBnKE$3u)eYsrk zMAZ8F0=bTcW_?|H0M~7T*T2cNJUeLlk8&;jpT6EG*Z-1hN$Zi-JS`mQaTV;t=r_aH zd02X0o5YdPQdh1-T1&R#cDjF|ST5baEEhj1Ww*wpk6$KtmZBU-Y{~F-$H_4`rUe1y zNhGE0wnR4${izc@Vo|z(>?kzE*UqU5JEi<0)i65-uO^p%fLD{Dqa;V-_jT`yfLR{z z-%c7{*TBIkOj0k%N;V>~ragClMVG?%{4M0e@k%lJs=kK5p`#@}^5*u9%5=V3!MC#A z-l~Hjapm8Ejn_C4r}?_Yo2sMy{q~#31W39BK-ng|hVHkv?}C#2x(Mj@S~r1Wcmy4R zpo=fTn`;QaA0Ip`vuZ&qjQ!XWVZOkgZ@1U3W|+l0@X{Zow$kwlnH|3gf)|3Kn8*@-hg*oV1R3yiUBUxj9ueLVY-pA|Gi%` zCNnjao*LA%9a0)#AoWC4w6SS)&$Vhg`Enw2HY zZdI6574s#Tkz`;4WTF{vl@RM(9CV1p!t zG&Xn$!Bq_Yq~poQ2$DeU=3(&k{i2tSB4j49JZrRN(mpOZnS@DtPa5*XtL%h6F9 z=1+`WQ9cXFJf|7!Nivy1#>y9FffOyCdlWN`On;rW*!##-G0ft{7t;nE0D>80H@K7DoCV)w9(FEoq_?2WAr z5H`qEjGxTanz243(;f``;OC!%HmHl>I$KHWYl@!3h=(@l%zpdeJ;K;;8phb*+uxa= zS!7m{feo%AGaHPt!61N!c}X$3WS-KDwUA8DAY(NRVX_p{k4$f!w%D6CN}1L)j8fo@ z-MgDMh*wM!nZ}y2E@!*5d;o3m2|^k_*pC6J86OOc7aJTx0%(J_Uy7b=GWHn5nEcEG z2)`~pUzktHzyCc4H}=zAw80UK=8(2m$Xuxz>(LF8wp1|i13y9<8>~QZJ?={yP38a+ zpxT4^!W`)*jD4$N%pfsW>FGme2^nb*n6`Ofj16J{8YWdSZOKg3jJ0u-=*bE)))pKK zV3;Vy)FsnZr!Dpgj$LXQMg{i9P5}s8Z{Tn-=|~MJpZc1y29jBOH*Ih?LK+)9i{M&a z(zj&xBGIZn_(IY)nvC7hFeYu?l%9{td`t#5xSUKP7-NIoI|B;rI*NIYOrB<}C*Bu5 zyR!m}H8+I$fkVHfQDnO4w8ai2Gu<%82KNGl4Q42&7n#d6W8Fl*_JDyO*a&HCFc`sA ztLjf`Pv#fomNvM6dLqc!|Lo9=4s0hVJrkppE`C!My~SKbv{&oGQq;Eiv5FBuo?;d!}Jbo45%>DcIoMC`sGf zWMG4STZLJAXCOb(SpWmiKZ+?NGg33wGU^!?WUP2$)PtPeQ!y^4t%FWm>>X_1;tjL- zx9XC!*j@jo4eBYzLp?6dSOaP6Z}A>EY%m`oOs&y z`Wd6CV!j}AqfT4w8ZvVYqaLulu^$739~{K62x)tt%=wzJDy`gXQYL zLUq{JDXb;2!5Xt-sA{;vny>SCtu@84gjRJF10Ce56&YJ6FSaICHByYR!$e@zC;3y@ ziE3i>Qj~_|%KGSSN#Qn3f58};2u|B0ILD_-W70k{>osFHXC?QMv1=K|Bu|Y`lh%@% zMh2F6d7bFF5sWU}=&!#IW~sVL+goJ%X~t?o=1`9SV?7tbe2%dW%rJ>eGo7~Bs$}LE z#u%bIKx9hBVPNhja}IYF5RZ_?1{|Mi8{AB0jb`kZH%NY5WNha<%@`Y~ z@o7>cGS85K4gTSvY$cACFgBP2&@jaqw;*jp(xrU*XvVTuik^`{#=1X*c~vo4WUkU_ zi~apgVXiievB6aUVT1mPd9kYK`5UE28;oIow&PF?*x<;wK^t&t&&GnX`r*xMSjU!$r?#O&J@hK5r2W%)|gXfh+oz!DojmEbt??0Rh_4pE6LQ<$&2kuRj(_?xWzPJ)F=7F zfC0wXS6hs+6>dgj?0Z8}*c}+$qA!9Qx0r(9T4T~`GBY(}f4fYW8f5G%6;m!(U6iUP ziQPvG#(0{lmShHU6}^2+K!+{k86xTjiJ{LRSewXbr9uLZNU%#m`$tYoeK28?ox_ke}!uzy6Sj$Dl;)=jg1nT)+uG39dQpi@V#Hdtc7uEb!B7l`J)p25#2mONjnS7_U8731NZ!~Zo9PzK74uG{ByWLctn-TborEw+6bX25C+8%At1Y5|SmrmBmKDy734`!r}| zZ9O_(SmIVD?`6$cQ@IkdCY_e(i;&7Ko<-o$%q3k)Y@o*M{WHaYBZ=8@3WHndiKQ+| zm5WRZGO$D&wt-iJF_zfA5th)CtQRZhV3{m!mZBbTa$1eAwz~t2HA@)1ShWq^C$hAa z%z83tG#jwaPch8mgexU;vHbwT3@<8X0hwuOcT{ItPL z+O2<(u|^7`A2+057Y8RJ^_s4bu~hO?+c3rzt^)`g3{}kCOxrV>vC^sM^NzGZ6_XzX zZ;jx_21#W4XvS_xW*ixN?FM55y?AgK-5=8SL#dSMRXRV>oB1fz5{$9IM1YG6W&Rw` zL5lg9%-^Ugw1J=X{Fk%+!SD}L+gS}W5u+kp2cKfgPj~F z&oYd$!3O~02Yb=|AZ>NYOwf!KO&jz813$<`NMi%(PmK-!IWD%oO*6Kadd??fry6E) zOk?`>!%ELiGMDT8MBhW^)09AdqAN>&G;_UT7PS)_{E8Y$8#HH`J{)AMqP0Qh7&;N; zXEvFIWMG46GK~$R6nJAN0E7)bRm`1C+vA$Co~NyglWBu)2x)9kh~PSjNy%h7YsTKn z{5(a*u45RJpH50oBGY!M&QEl6`c4NhP=NmNyCT!~XfsH^h%EinR?M&q)t6?dLF~^P z1E#a412n2Opw|JjRWtT2v_v!+d(RrpERI*+U@1M*n57t3(pXf$Yv!CVwL)L#3M)dqx0m-eGU3X3K7A~9Iv zHYRVj!jLYu+t}B!ik4`qm>4qmYR0;Jfn=#C7&ycVghVP~iNk2#l}6S0Cw=#i7(G#A z_Tdi&JCB(CxWb@O_m=ZPizUb$M>8O~ieAZ9|6lEbmPi3;m>k8tL1wLHtXIiAq!{=_ zbr9uz;yQ&5CH6EiSYkSNU0h*QnGSQsN?PJ5+HEB7PBM3C#)>ENOB|&{(2_Von?pi!alR zl}6@3n*d{d{aLU^RaZV?a0HTaPN7D^6ET*3Bnz2-W-UAFA zA`2mzL1 zlksTA`kJ}gdOa=C3?Y?63_xI|Q8y9}4xcWwEREUoh)p17A6TvpXc~#jm8zX&cA|}< zB?`&31p^&uBHjlUs>9xnh84Mbi`ZKlvl?*ve(!Yw16o4?noV=F6!SWn5oBPAe{&xG zRmG^F-q=K=55^dvum_3Vs4?r3XT^Y-z~C1Dd>V9%YY<#}Zqhwu&ex3n8k@cn;1f52P}b8^z0&SO z)xp1|poS2GC1w$eHLA?==J93p30pBGWLj&+8b@YxE1F?FLYmr9ik4CD?n_!jriy0l zV{BLo$k_M*bjc;FYdR8~w&&hs|Yj8(wL?Ji*85YrLTSYiWO zM)QniQO{8{Zt^T=Z)V|ECS%{Jm~xgV1Pe?2_?HyaN@D0Z)cXB`7C}qY0c(cW9>si3 zM%rz$p0$TF-h&hapZIa9v4r-CXobB*tfx+4?2XTeo7Xj}Op7@kw4@&m9+LMgnRv}u z#q^0Un$r>k5fYX_;Fl0MG;>LPi0w!7NMkG@HkO#(SYg4AL)v4g>OtlcGO)yCGA+PB z2Ry=AQeKB$TVZj;9@m&PnAonwfB~&J02k{8_F}YLP!&z4vrb-YL$(voDaOo44Kn&9 ze+v8NPbsU~8nZ5VS`6q02DfOA;KnWPL2$ioD`_j4U1(BiiSOwa$FCK}{%bKAWjXH3 z#5n^>)hop25rZ+N5PJt0b-*0+!J4gMKcf{wu3jcHN;B4Wb{}^u25vDDL^)M&C~P3H z6rI9YhuB3%mDw%Y95gI(pJMJN6RjC*6`3{7Xo<2&&t{RegjSMXD=2K$ytHBscj00#!+aD^XI++JGV>P7pwqFxqtPUZ} zNX3*KlEQ7P(-ymv4f+(rn9b9b0KyFI6tjU$HO*KrbK^-TFmQ-Xi-Haz?W5T|J&(*+ zXt!yDk|!lU$C}b1rW!^EwpXGFf(`s+ULgY;tS0jw7-NI301Y!yG53?XPczp1*`lX^ zkg;kDqrL7H#avJ3I-R!I2dJmEVT=vF`It6vDW)lzN}93K$$T!;C|+weLYhkPE!q&% zR_@}w%0{%93}eQK&jExDO8$`Yd4UXUFrJ%CTY@n*XbjNUptoX{kr}8N z>*ZNugI}%+FxK9MVDw17zG9vy(?X{$whb3^UNnrElY0vw{9qT_0;H`0^HYkJTJmFA zY)`s?fel6>B$9~0?;>!yR`OR)UleJ~{_QPEUIa0_jlxhJ^upU9rD{EyDP&-VJD9u$ zO_(J#3r9aHufuMluqni(A7YoWa+0XJM`7Fy@d-doEld)?UMyd1L zZIqrlWG0b;87?McgE8K)ZUGeNne7v(pvcctWO{1GI^Yu2-I5+u zm5lx4hnmrW?P#UvDl&y+V1qI~Vtmplke}$60UBmADkyAl-&OL&-c2*su_q)y4+I(O z?hxi##dIeVr_&bOnE7d77-NGtfUrR?#mqY>zOxUV25nGzhUnSakT&@3gP;wrKyYJ& zDP$ID#;(s++e^m&z%V91J5fQApYNMUe)7q{2JM)iBrwJg9s+2X*A=sdOr~b6kJWm2 ze1Ng+5N5DqJ|I(1r!96R{rYvom}iSW=hFt)DCP|^4tfmQU>x=I0s}wz3?Ypl{EZr> zT{Y>Q17f!Ynz65Dj}lGBo?sZ`*B=3d4W^OFB?B8Yrk)j8KY;=?37vq2HaqqRh4m$t zt}!d~6)B?O3S*N{4WLogRxy3ZSUP#J$GQC6NHN9{ir&}y;0?!6agf5s#C}AFLrc6~ zD5|zyK}$?VaAS#82yQma9pw}1Tbi*`m@6L{yPIK5^753P`~>la5oBPAYgk)v1Y^A6 zVt{5a-AOT{$lRnEYaR6*Y7k(oZSR56jqv%3+1FI`T%gky`z-s`IfgOM6w?6024AA$ zzy^2xCMEklIw{&<{zS1sZ!qwN0SIYqFdf15a3-l8nKv|Jk9k)Z7a2RjFlOx2L+Pna zW;hwxpcnP5j0@x^`j>a1fbV|z?aLJN$9_rM4VtlRG9!bG^|mnD2HQ~yke^X}Fs-4} z7JDI?s|{mbF1ZgNY%ohP0~(9nzCqVU8$7`Nczb=?pfy4o8w^2k^KwZ~GOuaI{$zsK zUQGNx%~*F+&#}t`j5SUe zJrn$)V(O8prqdRiMCLuisNMJ8*c$-C1|t;{L*^^=YqUW+ZO|VK{Gg`E4}vEnxZb~? zRJc#d=M~M^4aw9dV{e*gY@jEg%HWpB&qHMHBLf@EFA%$Z9vjF{^iu%M{K-niq?5T$ zGuAbnZXTx?JVD$JLbW7XRldS5B36d3O|lf*ovIRzD$_W+KqFsn#hgdxbIn*S$n361 zGyMDQpetO6;5wB_`}T?%p3{td0h#G!?3so!k9wQnnJ~j9GX2TG40o{M_JA?2kOj~% zQx)?LnQJv;EzB3wMFbfuUKl+;-BU4zWR9T|qz$g1o&}d_J!Vh+uD57|dWz}D$CM(? zSiij}dIo`kE6hhoQyqSWgXzhTq{d{XXvSX8CaxYCJI63)=43WN*x&*(eaXNEZ;;t^ zY0w6(0Gj*^Qp}~y&()f-DovNP!CX@dfUG&bP)RGBil^w9O!6ryIuPM~zRD-XhbR z3~cZLt57#E#t))G^3z_W?P)TNHDletK}=MTu{O*N+8{zPqsSaW*GU`HU=>r$5Kq#$F>2w}FsU67xHCE^DM(AUxi z3pt;fY#6gb(H9_WFkLa5$Sl!}Rf%c)^Ag(N8iX`9;P_N8Pwa0X-N{7F*v;tIbII7h zzo8kkO+$@OlfEO^j32xY&@j7E^vF+VrmenatP!jWF+s-44q@ghrUjY3 z=%i_be)P9hmhl7Tz#H2VAZ##1F_)3~SToj-^tVx9;0KW=KM2n8sop-^g!#$SjQ#6# zQWu(%u~)xtY@oNDsPSo1ESWB3V1w?|v!hnf2KfNZR+U94df1>Ynaea|wIDM!$XMKVhX`DCBG>lTEk+xN2-qwuuIQ3Kk z0~?G%NMnQf2(FvCq<6@S)Qr86ZSSHOVeAycm^N{k(ldcf2Qsk16ZC^2V2mF`NPcu* z-%2rq$;fzylPM#pCoafXt7Zn7BQO>6<0ey#fdg&Of_k>Nj34NJArByIuv9VeWaenb z8cU`S3~X>KLK+(sAh@wX6*3QN#y-kA*Pe`R8OG!%Rq5IBvy|zLWMG3v)N}BHpbfUn z2q>_l6jMaze9c&ob1`9dkg=wRFdJYh*x-FK+c4Om4LUPzJq@E0<&EtD5H^^sm?>mt zX~ufuG4Z#WU|@rW2x)B43&D*I9w9SSGxi&750*#M4@zFujIlu-rKcyEc4T0KpExBc z-?=w_Fc+YiF8u-7MtJG!Gz~0z@UZy2lD8@tPS!Q1lWl5uuom$oMp4T|s6N7+B(2goGuK zuFsMD(99)`CDu)2_AyrVBw}`Vg#~@005o!yLncn=Dta54-=mCA)CLx+!|tfC8;F%) z+(Khyab$wV)YK^Jn-_xytf83e$$UfxmRQQ3qPt?0t-Z0&0i!<29}mKaD?^1X8~aEmuUlvA}8u_IS|_>Rq7Vlc*+BSh8a zYFd?fq|5>hOFXZbM=ups*_yF>(*p~@z!J?6(paJ&g6qkQq`%esKbo=Ua4sD?yTlTI zJg*ru^U*-*`ANP1qq7v=cWCi!l<-@E)63oDOUlD@PdB zc-e0%<^}4RO$Ii2k<9IeF^>|h0Kx_jDCS8r!!%=!By%1Z*r1Zh4}xEZ;96bM<7C=v z#_meyUsY&>HPej^bhZ5p!H}O3WTMERt?ZH`%?<57TG^OEEjPiwy>8#@ha{ zFc*S>4c;y_3y-=v{&PMsI5He%1NBuk;={9*8Gt zCgV|h=LPRaKh66}Z&vVr)$zQq^wu)>q4y!iukyS0STMhL^S;tM+T2HeZ)H46Z({I% zbPDe)z5kEBw-1k^y#D{QkkO#5n^dBq8cj54uu!wgDrsEJ$S&^6Zb<|b6f6<2#DXPt zL$QhyldX)yYEsccD^^-?E2Qqr{ZP1#GPZ>5x1EAOWcTUSMt~{akET2;=0(6 z#C_$c<=@>&E8DolooL&Y4z^3&b4@$qw!?1fy!MD)-Xz;4Zi8t@+=c8%;$CLk-SgQl zaX|e?|#I`GSY?rv-AGZAXYuJy(U0~bY)ohozHMU(**)DPO zO*`Ux*}ueHb;vGnG212X?@T+&o5y}6?oVvH+r@T?yW^mhPo)zJadb*<&ySjR#O;9H z)cHEwuC%jV;vP9*`SB;&kHme!w!0UyUE+?h?aF+%OWZuuj<_xCU&_03zg^x2woBZ* zO*_h4$9^Pkf7|Y^VY|fb=(O^wRI^>;K4#hxS7rYaH*DJ#FWV*Vv3-^we=+-!xC?E& zJCE%WcY;!?GpDz(~h_`>|f&6*mk9w?GiWNv?H#{ekAVdFD(CVFWV*Vbla{J zvt8nPO*`V|v44sC+2?k7U2K=Qb4@$qcH+{?)H!O~-5qR~xGvkSw6k5}F8a*!Uzmj5 z>_@e>U0KL>iCbve5qCcOk@B|hvdi1Tc8MFe?MegNC2qNCM|tbmzm#|Hr&fNH8n#Q^ z`KBFltJ#ml9bwzuD%&M)58JMI*)DOHeq#AAEN1@__fFfcPRrXA&Nhuze9|4u7EN|Nmo_wS}1aTl^5iF>ncch6_Ll=lqV zuC%aS;x5}^`7dl>|5Dzmwq2=XyTrZ3v?Fc}`;oXGe{7exn(Y$z54K%V*)DMhn|74f z%l;+qx7)4!D8+1-xc@Tkh?~cLB<^jt-R)w##68QlE1h(yYRtcFA6fnjJ770;zQ?vJ z?QEC0{Y*RJCfSd~-T9$iUb^l!>vy(oSLU-_${RB6C~ph1-4zOX1l~)v(55fsIq^FJHxgsUbaiz0j3>si`kFFO>MQyo5yyE z`-E**Tx^%PRi+)~?ZjoWsdKh%S31}(ahGhd{QKMKvf8*_m}J}CNw!PeBHOMkWV^)O z^uAr*`RrfHJJYr+Eo_&#<)$6wZD2oA-o2Zx{J87bE^(i__6>Y1`e!Y?rtf*mfn4?GpF>jdpom>|f$OWZRWaT-%%T@71Oq zew!EKU{B@w}$;o+*!6=sb;&xtu*Z@ugZQTZs&Vee%xNROWbE{yHd<{ ziF>1IM|tzuzr;Pwwks~SOWfDjS^oW-udiD%Da1wl^=Ht+a>Okwq0ppyTrZ0w4=Or>|e^;-L@+=Y?rwI zdDrsquVz0IccN`~t8ACJ=h}9~%XW#o{vEr##q3|=HrRG0kL?oIXWCI-7yFU8>D5+# z+;m^Z9H067+l>1g9c-7lKR0=lw;gs<=We!LNwQtyzWlc3-@lOkNZeoAcK3X?OL+@y zyVAmTiMyuFE^h<-m-0@x?MfZnC9c=Bqr5fjN8*06%F2(sn(Y$zaoet_Y?rv#n|74f z%l;+q@s(D7lw!6^+?Px{;^wg*iF>K)~6VgFLzZe`MR0g>09& ztKPKy7tUw@Qr_R$cBO^w68ER39dR4jkCgY5rFMDi*e-D&x9v&|+a>PxrXA(2X8%Te ze#6R-qOx7$zGT`F*UNq+?(MeSUCefg`(xX#yMyf#_hQ?ww6k5}ez?dkZxVKM zyqaa(m4$4VxRs_I<(N$(~k1C!*1%_-L@-9woBYs7FhoM3)zpvooL(L^Vu$Od)s!U zh3yh|?Z55vHn4vw?|rsisbjmuz099dYZ} zkHo#%w!3TCE^*JW?MgM0#3)#QKb=h`hKHDYkqWPA8e+&DO^48jRcLUoc zZlP^g>ew!E+n=(_Tf_b(Zrrvj)ohoz<)$6wRoRck-TN0SKW;DECGLFNt`xIf;*K!w zC~qG7m$*G_yW(QI#9jKN<=@{q%htKhw!1snE^+(VcBP%|5_j7?ySz!*&G9N>+m(fE zm$<5FM|tP7A1UvlC#?LqTi7mfpR?^s1KTC;7}JjO*0FynZ=P*eYS=DuSN_@Z@2_S* z68CP~?pE0@ar@hL#mjby+wmv6yv6Ka;yz~El{~gf+^}g!d0p&B;vSo8<;UHrll~HS zp>0<>*e-D=n0A!69d=Xa-nLyyvR&e?on!g;FJwOwx52i%=d)en`fR(>!gh(9{-a&q z2KF!IooCyXI<`yPYSWJL*03LmtJrpTHQOcbtB+gxR8+Q0+{vaL<@K_EiCb*jm14F_ z+|7?!e*AgtN8)O>-R)w##P!>DrSl=uU*dMow#(ZAyQ%Xtwq0pwyTl!3+ELyl`;oYA z+wNY-c8QyO)XJwapY0O2-n65l zRI^>;9&NG9tFnKI`=V`Eylj`aHKrZqEoMIwH{Z6q^VlwNS2tVvR9tMAxYJEL%G;^g zI(u!q(!q9#``IIwAAdXS=DaZ1w!4#Tm$*^et}JA`#C4f=#GTLnrM!zCwscTh*e-D= znRb-7f&EB%i)_2Qj_ne6Q^LyUJyqC7wE8bfR%+zXV_nz<)l!E)Q>nv@wwCZM#wXYT zGysXiohdq2hOru*<;)iG3C>suVk z%)@4JHXF$deN|%DFstuw#X#Xl`PkVm7}o<=3jWzYE(>SkhtJ@4&{GE!=xs zCi}3kM}E(FAbp=9HUt*>F1#a?eHm|_09XOm(6^4*bD4FIxGs|&EPk7XC4K$G?u(FL zUwJK9OW$z;u5|BVr+dk-wk#SShU~HiJ5umCe9AVEq&(` zJBe9kQB5Y>IgiWMDlF+cnb=BZ^XCrEWIq;mmawF6IkCN%Eu42}Cc8%1k;0O`3bCmn ztZ%i$@0-GwfHm}Op9b~~X5Bsq`=YS>nwTYh=Mme?tZ(&L}v!;-9)*zwHz z*BY#*JW5=`cQ-M%zCL0Hf`z{GCuf%JR&h2Q$&B{vBDN>9O5DL-D{PUlr0?3_g57yN z`OViH>_x(U*~orL-?_xT!ffGW2YZUJON1qTClEUmEZT49?V0)A`vli<6IerEFR`PU zbsw6P$*vc+N?6kO*i^7(%=(@qzm~oi3Pk$;Lz1l~Hk(<0A|R}$9C(2BZ6U_i_c3C( zhFRYhN7?QbXRjccp>GYbFEFbF9qf2vX9!FB_9u1*v-y1;Y?ZJPVM*Vk^`Uy^%=*_-z47=kjJSmFGh%Fg55>Sv1B>>%&{@agtQV3Q`X-5uFslS7z^^r? zE);g>3}#8+1hGZT=J$25j|=;Pu%z!OVh>(Nc_>`!U}p$BO<2;m53z59g}&8eGV?G_ z*Z^3g{dV33_6cU)KF4@AMA%$mN#CW!PGQzJ>eftsKfRwF^7t#sG-3nH`V-dp@G@}; z-`T|2`i>yB04(&aBi7Q)CC*|D#a0SS`tJP=*j8rqU%e&M z?*?Ie3QPLFO6+WA3;U~?>>I*vy^r%i`o@W!2p0N!9eH?4*r&l7`c@Nr6|?R>j=a>1-$G(@nf0Z|W$HUfAkuf7Bum$U-4&!f_}3b&rkqJ!!Z(Z*E&)sJcXVdi z{NilWbW7g`VrMa{Jmz5g2>X<bJ$xc;HdsU7g~Wb@o!A&3o^kkHF6??N;J}i;(}`WctWP7> z8Xx{95b66TNfsuyiCO<-gVmI~h{NCWBF5G?pV*OLp|97G-#f(F03cP8v5oDdoQ!@`l~bRVu!G0!jit*?*v=LtgrXTOntixMEWk0WX};>!mNM$ zO~PXRi&Yz#=ZLZOtta-#wXAQoW9)laoXtiuLtmBHHOwlD$gkCQ>VzFDEa~ee_9*R1ZNl~wmh{~=8ElN%!pV-h2nl-xi!$Va^nHfd5Lg<2{h4|23cCWVp>G|r=Q8Wg zcg&l;g>4p=^z{?FPbI&;9^}_*zvBcVeUJQ+tFQ;LE131~y~@=0a^mnc`o!4!Zk_~o z4p?fxH)iH{gE%{gMVX=Rd}1dtt2{$~Eqz}XwpCctcQUb+%;v8ik;(o;*jd7ozU9RB zVzzLM!|xnnM+!^&D#WHLS>GCm-+P2D0c+^n{wuI=Fze2D_#G$gJ}ltClD_kZZD!Ut z*D=2>7l`z|N|MzQJDyp;`({($M~O@LeoBn3uaDS)V4?5)QJFfNBhH2+nW3+X*q+QP zaR=K?*dk#`-?evu-FXf9&98N^>BqSde2E1d{F1(NiG79H!v2o&VXd%Bge83^5IYkr z+HVWZEmj?$^8x#90&D2&C3ZBk?nT2g*|UYM5|;EmRtvU_S>N2BiDu+lQ!W&U^c^bM zSxsy&zFg_SCGumw}#jkm{nHN7-f~sE$j?o zN#Fj&&R{lw^$nTq*N?Fd5n)N+qZ7dnXSQ(r@JzN{*aBfm-<8Ccf`z_G2fIYrU0A>w z`nC}Jy`NZjA4eYM3cEm9(svB8>zVb1%QN+D6o~YVNwU7gKFzFuX|=GLGK{!{?>1s= zeGmN->@=`wzb^7?X;vl9dLfyiZ<5#uv&snaYq0}_-H8PpSkgB^Y!S2huMW&)3x$0_ zSkiYCu?MfBJQVJ&%4AOwcABuHZy#dc221ms!|%b_TyFuehQ6J*gMETociiE3tFXDk zlD{ZOVvzJ4hhX zx2Ggaj|aQ!XOstjp}}JPOB}v_@KJ}pi-=tU7W(En>UcMSnz9KCI78nCVrMa{OmO6P zjj&G%OZrBM9m{Nf*ulOm>?C1H-`>OyV7Acj7_0vz>_A~j-_OQ@%>fI2iyiFmh0O+Q z=(~{EkIIR4Z+2Yc)C#*E3plW(?{s1pFze&%Axq!C2}Jr1mSkaKo0#>#NaG~8-@Ayz z8`Q+u?Khv;kzk>33$a$8zet=7Kr%z$j@!WYV^%p7$z*ec%@UUMeUaEKX7i5@$Yj6% z1J~OcEa2dm^u3$dO#>+pg$ak>jl#|mmh=r0`z%=KyU^kH4PnQFHT2CR_FiV)eH?zD z61GfO(sz3e*eYgywdB{*x4S^3?|qW&Ibutg^)DSFEY`nRwSk#LjID1yu}7|CeTyCW zy;+>iMlwTRmDn}RD)o-F(I8>R3QPLBiG7OM{80|JOxS+HlD^xH7?^A+R()IN0MYTyHDD8v51|doHu?XB=zKPlat3mh|-#yYC9}>(hv}^c^P< z>AOOb^&oZyvwpY1YRcur;m?*4W9z&57hvarMf*+uJhPqsRh%8fqRh~DKCzRSRaQDQ z(}Zmmmh_!WY$db#&pFuN3Oh?!(zl%0Ud$GbarB{^g&ip@>8lW%^0B_fj{F9NEdguj z+kPw9H<)#Aj%JqaFYCE3_F(}Bmh_!RY%{aI9+Y28-{k_4zTY)-vRY!tGwYvDYc3ui z9wiQ6;ZBULuaDS)U`b!c^NT@}hv7(O=<6c3C$mbvBftNVz(vB6zH7&T-8q2#=4;f4 ztZ`?auwP;U2fw86Tw-5gws5+moiz!&L|D>y0uXV5+*D)Irmh?S(3)tbz z7Wy4^(I#wxu%z!wVoSl&{N`XElsxRh0?yF4h1l;eBi6mhq3>P7E)bUV9YgGTW_?E; z`Zfwg`i_>nI@&`I$wMzBGxSXo8(~)I z<6tk9z&o*k155fQh%I6^e{L|d?Y#Fe>-&PRr0*zV4|*vNh4UPB(Y2P@X~L4eeTaP< zEcBi4$ipARZvd>JZ|5kmPcZ9N9C@f0Hdk2EcPX(`nDsr^KePRQij^B2lD;=cGL6^( zv;KM3^NW{>!~8~Bw)GuBYynv4TSI=WemqXf7DF;a-(q6FEF)IwbA2XzAi+9R3QPL# z9SOFT+5Dq}GTE)d_7s-%eU;eR%ogtLm&q;@b}JTe$OGvcCw3xO=$mvrv;2p!PlGk| zttR#=X5G&?*cM@@2uu1F5}V7c?`|5`t?^-yK&0!XvY|-UbRw`hIpJ*c`CX*Xy|E-63o?SVP~1#D4TsV%_-;cBQcEv48_h z`c5Zy0kggyR5nZBzX?S8&X;6iVw;%tFSXk5UBo4PEyURR<`X*-EcC5&^q~fEHUP;C zeLF^g?Z>P#!ttEp4q>x|C4FBcHjCN(+DkI^9VzS@Ea2dm^u3$dP5mhkg~uFqQ7P;k zVM*U0vCo2qz8wy>zp&%M8v5oDdoQ!@l@9hSVatRieYXz>Tg9xemYxS#`gRwH^gXI` zbw5XJ3A6tG28;DCR&8KX#Mt`Q6MLke=-W3_hb`i4Hj)|os>H5gR#6;n{WW373QPLB ziG7OM{IsKN&k5U4SkiafFt9OZ3nx3)B`v}p!J-U#Abp=9HUt*>7CYGcgk1sF(6^4* zbD4E34tAWd&BBtteq#6ig#7w6x)!nY9VZa!TOrAM5W9j||73&3`j@zbuRk%izMF3V zI|nSCA0bEj&4(p>^>~uz>>c6h;3%p z*Zbm3eU}SF`raeSYKa}stbZxh8|ni4ABao%enpI}uaDS)V4?4PM;+fH&W0nIp|6YB zp3Ew72kRHMNLY%twhHXdzT`K**1?tt`z01|@Jss6CH56&3%S2pW3@-vCBl-v6NsG& zmfG({nf2uu2oA$C2pz8(&J8wDbLOC(ueVxMN#KZf$l`VJ#5;maq+*7r~p>@=`w zzpA5b$7gbT=!Im4zDZ&u%ql**$8WW>&xGBH1sqt?H$iL>v-w9a%w*pa_61={-%-RK zyomBpxZT12N7!k?lD>V2eH$$FO*+^ogbjc-^zDp*eS%qcAIE%gx3IawlDBXy!jiswhk$KmHovc<{a(I|>#e7-r0=W5&Sti7-UXR?NIl5xRxIF<2hulA z>_o88x7u+%zd_ii!5aEj6MGf2ZiVidTV+cMJ4IO1w~*LeW_^7r57ziFNFdVp8A+DD z9_+3X%7fo+uvq^Rm+;La#@2Tcu}i>0-_GL9JUlGUHems0=-WW-EM}F>j(gkFg?&m` z(l<)%SZ4E&I-ZSB5_XcXq;GFx2QXV0b*%et5q6-kr0-{8usL99{B`L2w^pu;Y_NvD z3yJ;cLSo&09A*2XutAc!E5`a4t2QuS6JzUJPwbIm*0;gY zk9UZ(*+^#Ss}j40S;cpLroLCc#ev5POZvKreTv!qZ4MnS7q*|Ur0=%DU}MY{u66W_ zONBjxMH%uy`aVN!2rTribJUyRcLi8O-#TK?W!4>}anc$eiluDL!jiszV)qr1UtjHc zV6FB$P9V~^tBH%*gV+_!`u)aSi1jaV*#AI`t?%X_*g0U)ev8Skm4|k5b`Xm)L*Mzt zPGVM39PDCYTZJWkClg!AY<{{h)9U`FB zzQgZe$wLWPL*MoQ*f*GUD~>uoU;OUF0uC(cJCE3AW__c`uchyDfk@vXNmfhjcxL^6 zgT?xnIIJ;*%Q_ebA&Atmh@da2<*=D$Z!7Y zb2IgwChV73z`-x+JD1p3m@SNYGudAVyF^&hcLK39!J_>(IQ$L~wh64Eub0@-%(^Ey z*eiss5|;Emb}iU4W_@8|EqyN(i1a;MlC35-n_2%n8qdJu{x4Q-V6us^^?i)kt%ad6D6AL)7q;G=QB4+cqImXmWgndC+(svZG2hX8A6u#(azj?w=6PEPtL+smNp>Mlm zOg-Mf?I8fx(6{p%uum}SUgTi+2%9S`>ARHJDa`u9ln1N*eu|YF9Fo3kC7DKSfLZ@` zqb@Y%W#SUPHezgjM-W>87Wy{y&(!xNaTY@|L*HUzzx*+=%I306cFU_=wn|}1-@R9Z zZDlsUhohanD{N0;N#9qAoy~0FUdK8$Bzf411sw7~`o@W!2p0O*IPx$+*r&l7`c@Nr z6|?RU4t@IwJ4IO1w~*LeW_{Zz50<`z1R{OQBFT5B|N>FL-=7lemO$05P_{ zi-=tU7W&pW%2pxHHems0=-WW-EM}FUgS|%Br-UVaqr{G7Hb4E7%(^iAP7;>%?M>_e zW((avH9Z4^M$2vcY#P>wERDa8JZQqM0Bh)5 zN9?)Gx_yp5^gCgjg(ZFc#O}){zrG%n2TR{^0+GHqOR^rsu3*+5?PcnFIdKVJ6*0EH zn+JlO1D4vaqi_C9oE^lX%+Pl}v6Glp7STOYOS58OTZJWkClg!AZ2q=0GuhLHoh2;k zTTW~*W($`(*zcxu9gh^2^i_yW^+~we(#s5b678NmfhjcxL^3t?Rc(iA(q%BF5I&N9;hb(09Hg4>55z9LWrQ zUBvceR(Z_9-Xv_1u%z$WE5PnNllv}{IC}-j41H^eeSukJrDN`XS=brElD_?k zoxyB=Uq|13QrL*Fr0>xIV23kX*x$iEENp?Wr0+^%OTj|l8pr+AcVFVd@4^Dk(6@!y z@AHUtFUrlVi?@VbAS~%ShS>GY`uKjTrEjA^r0)Vr)|c3)ne|U5zhJTdmpJ@g2x4q~ z4_yv+8d$Vnm*e@{%i^pTk{S9YiH$I;jBq?V_=m7Nv48_h(GtWKF`IwXlUcUdJ*>kE z!jitDh&`A~c_^IhXp_Gdzte;zeftpmHdxZv!Tw6v09Zrc&db0)!K^#zV1FrWuCS!< zQevkt>+4IbrSGR$xxpdnJ5rKq#0Hr4_ouS4zAqD(@V)dqhrT0-EdUFBI~-%`<>D-c zWQM-Q#D3`^RypKozrP`;no=n&>ATkpww2lZ-j1@37q+Lcr0=W5&SthSaYklc+$ii; zEZ~p_(l<`*M6fi!Ir4jruup?E^sOfLDrVh5hu@2YogyshTS#m!v%Vh2npUpg1_?y^ zc9Uf3GO)YOpgj1GxlMh~Brf6Gf44*5MZ_)vOZpOP%~>4;V*f7|aE87O#Li+?Q5Kid`MjcBF<4A!n}> z*OmV-EU)6NvCA5dT(I;4SYnEJWA(dY?v$@5lD7@2VwVjoD2A50Wz6zs{ZaBzyKDmf zc#|>)KN`N>@l$-*I2-2sUJW(+!|38!v43Oo&wqr&)ZY_I+%pk%zq2zNu{WS8#arud zhj9vwud{Kf7^_2xdrNwD<*&msqVY&c?6&~@jWBid%udeKpF)gKVp2&iN;&A?O4dw$ zJ}j?gA$K9|t5oiSY%0}{y?fK4F5`PJw6;{=W5>F*m1*2@?eZRe4S)I#@Ykuop%MXa zT-8WET&o(NqF+dgn(C6XEbr<)&HUGHZvUzI_i)sk)EklOLs(a+Bh=x@$YLz#P%8~z zrr;noYiTyVL)1s>%(g&D2~1h4J{UC-%MUfIAmo-Y>S%S0daL@2<(~7iBHA}8`lC1W zM|#GhTIoC|Am>#$*Wo0bxHa?|{t!{tKF`84>z8;@Gl7y)a-E8veyr=wG90}{pNF-T zsdsyD#fP;Oo~HdUlA@)^@#XtS{1IsD6zUWX^_lwCZd6`K9}Ps?9nroDXkA^ya){W4 zv}$9UE7Z6$S8eFp3$Ffs5`Sz&hsRg(M+>PxKk-#|*6TVXgQf?bUxL51m=*9W&OXJn zc=#!~I2wIQ5q=IorA+m%SG`*U-VcIWGMr3h2fQ29#+@FuvBPui%;DK(-Vf9nN8R6S zP(6#2+Q$0VLWw6zsHsugJ@qtdyOEMI?}m^TDai>T2RR{acu9e0@qn{IsM@~DnX!_y z)y92Sz`?%M%F~fT2M}sph9Z2MTmLRHdkw8X68>yjq<;E3RaD{kSkyty@n52RL229p zI3AlC^k#OJ7ATpR`nENj3ff)Lz6~DcNvXeadiNVRk7)OnOpEIG=R~v@N@gO@LGRwM zu1<_-ZrbT#H?DN0`XGPd#$#pmDU!4j2~zuaBF?y+NO{`xd+JQy z)>rZO=%}q8cs_^*y8)kj4+r#|JwJ-*fqgll##OFh#XwKfX;f3?o%g4g;Ey_G?NOGX zZjq-ikj>PLL17l+OIY^qP7hV5tF{-SXUQ1NY1wye+_<;!K34CqPF-E9x%}# zjJgKs9*mY>p#(v1S87Fns`4GFNjW4mssrU4a19r)&6QCdqq#b+Km~>yyK?I{p`=bF z&f$-aZuxD|va|T~Fyf7==xZD-!u_4^}U2c84X~U9V zq6D5euAeCHsaMeK(-`8q!g_NEf<*N>RrrOhQah=PXroI)LA`kn%1!lKrRp=Aag5e9 zT-BG%ro($nMpD-NQb}#D)QldS>vQW!om2x-TLh4lN!hO`6tDj*D) zy*6iY$2ts8dbA+E+7mxYvGmDh!T4TJd;l`@CjM4#)>}FFky^P8l^t*8UfKg61@tjx zA$@vfF#e&ZiAD+a&CY%M_TAnb)OKI5_uPW-=khcyhdrRHxe>j0KxHhTicTS zBHQ(?+IKy^Dr#t==ZdiI4Qbx6*2B}JgAeM%a>M%R0d2kTDh`r6vjeVWYTpg;IwWz` zriku|YNtoE^JAm+I`XdVGvN(t@)N)t`o2%!M3u-s7}f`dwDPc)6DteqL&WvlMpoWW zexB{xul8++-=T?KYodC$sMbBI{n!)7W1cRvj4H$omT&hwfM<+dZNV~9CH3@HbVqGM zr72ib3OZqY#NhF%XYqR>ZEH~bJd{l3s@ex?!{L?l&Ta54Mp1SbsI|u*b!EB2+J}I` z$vs7&%7UK72O|2IN-t7w3)H?xL@1dqRlV(MZ6}?<@#=v0{Xp$1I>VR|^zKt@kBBSy zNev8m->cn1=idE++6{bw7P%}~yPu8&B+?;O+dMSUZ%LSu%u|2Ij!l0pU3)b!;-^gjM_5lV$6faDL zN)@Tz?@^|=(MN){9|`j{N`p1YR<-s3XUMa72Nm7>en|TuQ2RdFP^?gL_rRd{onY-J zWC(gcQft@Hk+(BY+fE0ncLRpv+GTuflxVr0XEBJUQ? zcN^uyv-k+|T?!}fz$isnAFSOL5sIqIA0dXMTo9+a94dfyJ#t`~5(QCF(> zeJUc?^f#T_mWZBx9N+j@e^z?*_r^LQs?&EsdYXp75H25?Q~y;^>+mdY3v1iehEB?O zIJp;<5){!8^AK0gHk1vOgI4hY$3*FZ-UDjwcXTEhETs&3w*+drXf(ovEZ!2t zlvvwJV8ELS)b67rWECYg%0dOlyh(Xy40&%4B?hbuapicL{*6JIT2}15+s*MkWY&tO zsm1uTeosU{JEEPHs@zOd-k73j;#XbK_}+*%xyaLW4q9hKcaKhGXQ@jt5@D`WZo)~l ze68pA_u)LE=ctXXu25oH4s28JjOZagn1F*^vW&(-0UZp(K@lBXkAqS=P;pR32Lo|1 zkPa@zK_wkrgo6+r6yl%?5l#ywuB#$LPqp#L+4VC~Bx*+$(So417K0xuCP<^;Dy;Sb z+Bz9Wr*AUG(N&(N`5^TA0t}<2@xz{`QQ(5!4W9F7pb$v0A!LrDzsEU-Q7k5OFZysO zepuBu4ozf#Y!7a~&k4hGV}B{-<0gJK+n=m2Wgg%IhqNTRw5hTm$2o)z_3 zs&>fJlnv2I?Q@WK?XXlzYJ*)VyS_uEj6t!c=hD=+0n+0ST-xjDfVM26pSuOKi>K)k ze5mS!AbeOqhlT%;g)dnb)~_lFYZX!L+>+P?CL&BAnbsagkBI1JMYJVnXsG*Vo|0|&PsjKPBU12uD3Pa z`7MnqGfzTzKi2%d2(ufM9;#CFOsN2?@La-J)&3g!5AE%8z!d?#{s%wa_SHqpc^KqUW)^C z!{pR*9H1K}roVXUfFgaCeJbre)9;gVG z1+|r)rod6^ei$IHM!o{tDyiw?>+PDp07O8K8p{}T)PJA=Xr}=T;AYQz5GJGNlye1l zp@N5)^_LgY&WQa&zm9vJ$Lx9Qv8q|ctC}mrTDjHptn?eubKj5ZSbX=OWy$%@^xFH; zM6bhGiA1zh!`jd48_Xv>=_Y8Dk(mMTVJP=S@{kw>Wdnvho%6+Jab4SW!c zG_+VXUXa@N9w#VGU(5++5Dx)pkjfXjQs_N@k+yO;y@AGLTIYEW?|Dev9p3X2uh`SC zBTX}1-nX4fo37?8)Rf3vWc)6r-)+~?`8ow*~cfzm!1eZB)JWnmp zxR7rfG*XyBW94__4El|KK&BYKry0K|((krLx(0(nU2TIR@$(3G}6W`#8FFzCgWZgQtg7?HP!kQ4b zg2vJkfUT#l(=etNb3xhe;dO39b@D_G3tl(OG32fZiLGS zhR3jWB-;0FtfIQ(it|)Vn@Aqj*5V_qUu%yrOY8G+;}I98O?--@Zn59uXZP5x_?aCG z;-?bpho7g!&J62)ksKX2hm#(q1WwcEC!02&Y-&B(^dd}#Z!2qaVT+XGvKJqCn!fXZ zNL1&9^*bo%_4k3pC!3>*QMq(}C(d)D+IGww1$2HZ&I_X2XVFAm5uIZms4a?WhoXtQ zOX>V-oR>zmW8s8aM(01pc^PgbgcEfG>HIvDvl6x=VGT1S7Oiz?40ioS^a;ocU5=xw zPU*`3{vzD3!+8}ieV?SP>-SfsR<6M)Mg!+8Dxm(`s)*K=TEND`v3sKWeK35J`ioGp zJ51tXgBWEJ(+wgN)`yahkk+##H4(;;-m4@O-w?z4;y2hz?$j~>A00*$c2HrjwgPp7z$vZ zzT=5wlNTkyiun%eJf1l2(2}7P2I@VY`1e@f!P|9}jQ%PJ*X z@n50o;W|)1orW(G9)laE$-TyUA*k)SUcc%CZjq1UlaPLCYUXO1WzqHShXEZ9YlyE? zcfp92A+^5&XjxyRZes(tzpJT%-oWQwv1nMolv>`k;w9!cJ$MZd{Y(!0ESg!KFLL9XNwf7?qt*JC!3yy$?$Dujqcn< z%5lRDA9$MlxZ4~}gwQj1nyJ4V96nhaO;k~ftFOg525Su7BdNjFkHR?yYYg6FslC;Q zagMNah{1X#&SkLX{&wOxJ-qk_ z$LYeh9~h@|*qAX+e}iiOfXC-rjL)^yWjyguczjM` zd?vxI@p%Z3V;KXqtQYux>{YmPinYui(e7w`PA&g|@p&VRj`4XJ8|?A< zdwgy&JXquN48wytK2H%3&hc6DO#^fQPZA!)dujFneGL*s^t(o4RIWtcX>{g`hPFXv zbQ-1W93SplM-#WB7XFok!}LcOYxy}rbiLD+D#dS_g7z)T&I;r4MNU*7j~|$f zd{I1YDj=o=4DPUA2PQr{`5bDgQ5Jt6f-BlQ9!^+Y3enWQdoroQ8Z)TbG#e`BP+#7MnA$vH1_rtWt_ z>V8J*0Y>UCpOkXHBB@KAslURfndSZ%(212sK2J~(T{NNqbvWyb91uN zU*U|_7+vh8ka=K`knFW<>up4bQkK(~~ajp5bRAgK!^W2%dFd zSWDtVtbWkBnkWHoEqsNWJ)PXY=HQ&yKNN+sDC-~GYNz!Nj5G&f{c|NrG>*>?$8L@4 z7g5%R@%gS8u6O$J`siBmLj6lTcnuHeU+kgS@Nll-Ax}J@m3rd!y!;8!{Q$|lJj7V( zd4QfdVF4Y({fGBbAHS6iVi@k44Ji%csX zS1uLqWhoqw^RjOJn9KFBQE%%(qg=6jOvT@V!B{u2;{WFJ!?BwU#s9+RyJFXyb@s5~ z0XMLu&ZZk4N{u?3Y9Ix5x#UHRwrMkn|J_W+ya{0usuYo8x4!1)mS z{3|*?hP#3W|1q7{VB#^(*U|Zz_W7H1z7pv%|HNnD##-9Xw-hV0$gu7J4EjO7j-d94 z1{Tr>Nq<_13{yVQkI>HcaedHrEcK&G>`idg$E7f2*2npLZr6v0&ok=d_#5KEs*k-e zkO#9qw)6Snm{}id`FxjMACzCptkr*pagDT6`)W%)3H*QVKS3>x>!a0<{xcD&PU=6y zII=xH4B~UU|6I=J8U5!1@nZL%Ji~+8e_VzKv;TBr2LJ}(|C9dnCXxj7bEpIHlU}-H z-|%48 zSD|>wtS`>3R2QDv(tU6|F!99SLTjZCWcMCC_^U*|e@*=c!+ciPh|=^WUt&F`ZBB3A zE5GZ}bg`PS$HQURk1?_brj5(1cl@##@Dj5ZV9z1 z*Wp9@mtF?L?ae3NZ=_p{-d5Tm!(Hh;M4^Z8kQ0@s}04XM>TNnQYy{pHx;Q<;$; z{nUs)6f4f`ByNIxn#wQ$g!MdJ;(Fpf9Mhe*h?b1t88>dK;GT-yO^nb3plV#8UV8*j z^*!;QV$l@hn<;cR5l4K1iW@1oK*fy|T%h7c3NBFPMhfmtZ=w4qob&(^gz0v*Z9;xe zG_5_^^xDa$f52oova1zz0^_t@S^{d8wqwV!O2-&y%h#lk`|?x7Pod z?t{Q~1U_)?X}SxoNyb~;7T|d#q^mg*y{amTn+kox<(Ji;oqio+TI&Ot@MHm&sD1-M z^%&-QV1BA!6>4n5MN^xn>0bI&TOQIq;lAI68~5P)Y7g#zeTw^EtLy&~Nesnvleaxh zBM76%POp-1jo;zQinPH|x7hFSvwN%tKeJ;Y{8VC>;wRrt=z;RUktdFCG~&ygux^>I zF-&OT8CGn|JrTrPASar-pKRJ^UAI{gwi_lc0cY2ao}|z8a85XJH<}W1xIhfKFrYeN z_=^|{U_gDs@UR$)U_gb!FkK9#FrY?Zm?VZW7*M4!+#-g7FrZFhxSkBSM@(6wKMT|4 zZC!5n?*q#ZV2?sOL`xR~Z2rIf>;Dt|tMY%-zXF5n~x9 z!<^L5UdAdyD-E^bO#u9BtK=KAZI!*~4AuhUcaibC)cDP}1XfiJB&O1^g^b@-#_y5z zyRC98{aRHy9&x&3Qq93eVe@(}bH7}||F1JJvug)ZhaaJJ(1fgDe3vJ#Vj#}g8u!na zXw`$Qakzil3m@tAn60sU0E_lR2%|3Hjd7;`fcA;?ba^#C)-lxSUhRnb%}(r&!_#Fo z*?|pg@ASolb2yq9ehd@Gk9n8IY4WHqpif1LGk7}}C9yWty^qmtXd-e53G%ReCaig5 z;{!S#vgzIcHeDJ1-&e8eEkL{8HX^`~#J$^bJHvx#(IL$f8xYWM6zAA|C;8c^CO-xL zf$Y8;nuu-2RDliJSBJGLJn^eBd>Z9d8&}{K`$5kGKZdO>n1v^zS*iOL(%pl}xu$ka zXW~&Y&zsmPwa45im%?@`?6>+@ZP;h+ll!V5So=0@FbZiO)26HBSG-RS$yQ+lR<7z@ z&D+m-N0@As+hA;I0+O+%31`^E+h%U5M0@29 zs@kTXCrUn#%F{1T(?uvzxB^?P^3#V=&$14ny;q*5&uMPfR>-ET`aQCVqHX~iMjH~L z*;<<@vP)>24CWtW69p1CATj=2;zPLErSi6E?4pR{BwT*f^ZR=#wLXwG-b4~3b6}e~ zDWp&1gK;>(rkSHtZ^i*O%^aOtjRS0&IXX3j18kZ(I`tYHVAIUesaN0tn`Vwq?T-U& znmIbP1P9nOb95?J%+s)=X&LrX48o?Fqf<{)8^6VlCR%A$Ovk>N@3C(NnWTG&gR%We zJ1)B^7W~_2`Pj^~3;E1w`ETNs_RTb7zl_!1o%@&$@;)Z)Q|h(OYU0>UVeMnW=c~lNH!FQ+&N{N%s$!2w5Jz6--_Z= zHC8P99(M5_nF(2`H~&TLw?5ZiAD|^;e+5Q?%OOa{DDX5$9tEINTM+8q18_3Me#%L-=ssM`n2H+dewmt&#Z7jUtKH!V6eg&Fk zeXl*&8P7Mv+Tjq}V!lxMtvU5yV?%5RHzTph>=;(ydr{Tq6(z0=@5{k`kfR#kl#%;` zG8EkY!U;pcMC_+J1tUR`JrWdQe=WR)bY%u^beVe_-S^-mjQvgbg>)A++el&*I)8HN zopj|v2NQ6BQ6M>WG!8HdB&TAhw~A39IrVxRU=&DBRdIk(AUSm)4loKNr{cO*#VC-R zdJzsV3M8i%;(+%xh7&_D3M8HT8Y_YYD!rm{42xpA67nId=B}z|pEue*W)Iizi-?toojv~O-8w8u>Z+V&(rfn z_zjN}KE=39EvrHR-}Wr&`O z!lTuWEm&1qgr(EO(p8mZs1z^$bLGI6Svf;cIjdto32CZXIamwR>t5D+*qQ(3&0HTF ze<;7$Hun~-ukp4CS`cL#ZAltc>h^!I^dqS`m4(orFb-iK6W$9d2}P)hp?RSSPz_^q zwTYMmLPa4BTL`piFjo$YXd&dUDue>^Nr9TKR+*9HF%(Fx%8J4%e(5-tmU^i+v#UqlU09u#{B}i9~e4x zYF6sPtE~HhBfDkX4}5-$+z-6#?{YuzN_&jms_5rXz3k_f|Vf!4hp9}jgvERh@8Dh`IJ0Ht$(c02)FF%Hxx-vhH z2qk`9K$${O(I&o5o&Eqyi#xB`A^o15uKXvuPNk9+c|Y{iJq+ z#OXOZ?ZJzGfs290?{HOcJKA(qADR58@tvm&-Vx%fp6Pg5=x@E)rYs`cvlDY2gpyL ze7WbzB>imqBU(!NJJWNtccdYQutJLJquX+D@u6xf@rI-%*r+0OpnM}<3`B|mf}esb zljyk5B*7#~utC*U1@(E7;6o%>7AVK<*3q0`10~oH9rrmU2;sJE{AJWp`ah6@>$QA8 zinHJN9J|P)dZaCf9X=-x_rT%uK=~d|Q*R8?f$|T?;Rlo;5yCq{l;AxiSQpe!N>Ff8 zf^PqFf=96DHZwwFYj?_WQxB>*9fkGc4U&wqR(hUXMP-fSmG9;3E~OF&d?9~goa zkG(<$D2SE!+pcwKdrAUezWufgo$ABlM`>P^vqs`Ab6(< za+^)ciiKvChT;?}53!_Snd3#6-f1XD89Yt2!|uPtTKw++KGwH*GubQ`ngazeGtb`b z5{&&n@S2UGl6E{M_<6s$<$R+=@_Hkjf02WCylI>;=TCmeo9mUk^}kV*T&bwI2wpuk zDlVM3kt-J!m{GNOd71Ogb-L)C@4HleG1V!0B2DqRU`K~EMzPK4udcSDe@M%mT)f9CV*s`1<+uWxoy5D6stdyb2Be2hCyh3Q%a>4i z6%qtp9|X&HlLVWM1`*QWhQkb{#*LU^wCf1B>+3n(Xgn%JnW>I+oy+HmK5o_p|i`;1WK2Ot~h=h0i zJWcOF1iWdEYwMZlUpVR(Q-|`Hg+bymLr2U1NAMr5NN{-`Z^e=+rMiv<%6Cui5zux^ z&&3u~*AN*ln0Y z744nKxSiodB~30!Nz>QLABcS#QvcW3G^S&=;VS(zE^N6Bpt%_TmSWIMh^cjtC;kn3 zlAfU1rtv5yjucKS9x>(`ZY!#5S$YFqep~yI@E!%4ALg0JxKE>rJ82y1-uNmxhJ*R2 z3RKCgJMf#A6p`|jr|C@OgSQG^g5^rM@wkgNo*wTOE9N;GQ=yeUMd=TCW*x_nEDM7G zY8~r>WoqLRBgS8e+31R3$Rm>PMSwj#DMGE{mVUqy30wexp9v##V^9WfW3 z2k{yk%QeK5>(?yT0A6(B4vpIQno;+A*ylrLuZ32}028Iy^?ZXtvI!g&5af9$ry~dU2kfbI`)9M&N0hN;Adb zXaq+h`GF=e?Eo!`0gTJ#MM+_4E5r0uzwBXj$Gei=pCU`MgqFeG4H?H>#ZS(baIdY%7hI9=qV~9S%EV83+|_&X0Z%00%4SHRbA`Rd8mV;jXBm_ z9D%cMd;TH`&#R3hVD`3KnF7z2WB7HwjV_tE&N-pxYRf(GYiT~6dDtBP1A1Im*+;r! zXP}VI5iC>8K>%H3y{G9O&i+PH zVk0?7M6EG0s>e_WEcCb;U(e~$d{HejhGBr*=4tv7JNR&VPGsEp5=ir5I5DCd1|g*0 zl7m~Ha*4n$PBmRvc|d=|ICefMT;Naj6k3{2F+UB}Jg<R7F4HgdBH&2nAP^=`TfX4`*8e!f8GuJ{k(xN4OJ zetIKpQr~vIZ`((H7iQ)g*FxzbFynoFo7?*J4{}MEe=z>GALf@i_<;VR=#5)oP2WJO zK*hh!oX{krx(=kN_gi|~%QGEjS)S3o6fCuau083g%vRz#W=1{k#tI}@G0#xWtjA5T zHp{Trcm&b!z`0rxHz?BgeSC9IdKk=h`7*{yPg8%aG+JU5M#hb!Vfz}6I8`G=VVV2cDF&8rTIB{6HVkx$GpX%D5 z{sqjaFI%4t%$Xx#l13rSn(5bxv(~SUe4?4rw?)g_}NwvL{&)wW1UT-E4uxS(d&E21lzul?bfCxCx?TtV$oEcJ&yK6?7kzd~zTB zgAry``T)w}7@cT73d(pUb+-){<>_;s`7MPb>ZGqrUXtmvIky~1Zn>_9UwlQ2)k#;S z-z3%Syo^I;)e0VuWFTHo4U-C)q04mSAG(OPEX%K)CHk}N1s@x;XKT8N+}Q2=3Z_mP z)6R!E+_nPqcvt!rG|tTN?NoYC>fxTKjfnn>9JS(1V;@|i5>J(e=0*~cHay{fC*1d) zaB?^HIe&7hr-|lve2*JGFHp;oUDhCf{1n=b{Et9#NTy@CyDV5d^9b);_Q37 zAHeg;arjoJz!qGVpF;bPn{^K!tUP=k)C=K8Tc~0RHi-QQX9*SR-30Xlq+T-Ix83}f z1o^`jn}DC)V>jSucI+DbRAQz0c}gsg645?>PV@p2 zIShY3(eRMd5SyNX$EIYS)J4jd#jqcx8@Z0%62dlpJ{p3fTt32%6l~3>Pp`yL5g%b^ z+O?&8bRmw)_^3CIpy#qmI;(&70K}YuY~Z4c4lA<`7|-9#-)#@_#~|7sq*g^u6wlP! z_^VqgVF+b@_v~A9#Ig?x(?4x}sPT&>w=stK*tyhk$DDXUTD@fY1KNY|E9z#?N4==`V+?rSQ zpGFen@vWa4zBdjRGj!Pl6ypM>FWEwRT*z$h+f?iu6>yJ3(9G3T9> zhQ5D-axsuykI4?;JF`+#Pr`7kh_O6idN7BwS$z`p7X$hddg#%fl*xW4LBBH~-fV?0 zi=|A)Z$UGO&|AT(HjnQ+C+5+3g8E7A-ib@S#M7TqQ{k$eHd5P-oi|bKi*Vl^;l{7= zzQ)%W$G+&EqLmtzg{F;gVjiWCI{FmPIbg$^XPzeddK`SWs4Mmh{OlI{X#ka!iX({O z9IgY}x2cU-nUODgA5*=?SDDrJsQ8Pi+(A5@fCjnL`DA>WPo*!mQYehwi10XH{~W z_armMTgXN`H&Q<_{a1~QCZ3^6)i0wj&|5^+eBTSH)6LIOtskIgq;8h*&(qh{VaJ48 z&JE)J_whYx(~$|If#B@dIBS*x;2@s7W2=PzM{?TuZDkD4Ph9Z>-j@b6_IuXY-=xdG^cuU5@Nm3j@LD^+UHP?N(r;&- z-_FG~dZGAx4U4SW-1kaL^jyQ@+u6I>`&xddAJ_Ko*wjT6=S#R8g|*WtWZIB`hdv4= zf`wN+IF>q%r&oDVsvE^+rfer2I!xQ%%z%^mi6)RDHdekY zdclln`KHh6E3dO4 z+miDK#X4usV!gWTEu3S$-C_NY(zN;a9ZPvES%z??Elrg$1MAGqwr1j-5`8Uc>er`w z;*Itl`L{h8UwCw)2Yn`t(NYcQG(j3o#x(w%QJKDoa%Q=lHRf5h_<+Ypf z&#WC)&%svL_RgTpMct>Dhgj<~V>&bC5k1+GtOxhWN=Lak6SKRsIH}G-|2Q3`3T!ar zs85|1#dkDSo`#KPdMv_TDsP)RU&m#lu1=~om7lKFA^fsKaI?=hCHLwFKSd{aDg7E% zS;BkorPNjGEkorAGSIwHA#E%2qy6bSnk!CgC{7wRz`q=Cn=~*3{mY?YDDXoQC$rjW z>yHsYC-NJ^BH!&y6{VpttszCF1HIPywH7Ci?XUmT5a_c`)n#jsqgf%{Fv{z^_TrI|MjrpR5LxPLe zgfoo5O0a?Z<}&BB6`!t81m0fdWjH38!LnrQ!_so*rFm)f%q8AICt4cQ-dnDjPog%> z9D1&6pGdYouVTDdnT-88*}BG65_Y`%9-f)8Z0?bE=U3!)H@BzofOD~%gS5jB?*}Pt zQ*n}r;+0RIq0_%I|2~fDD~=yy&#!S)(ZV?xdbs0BbvIux{UW)gV?fXtT;#09<>!cA z!55_0HY6GaZ$SQs48{>Q7<+qkYX9-zMufjjIw~Ex#dHSF?OHT2dy6a2cbIOV*TkE9 zgk@PSA|_bWck2(2KlA?HqrW{9@ADozy}v8)VA_u?t^mcHzFinfVLA zxixR}Gi&^* zUWS_gGp~xkzfROEae!B%!IiM?=B&H4kM5}5&LF-LS#kz1YW_cNH2($j>F_-DkiT>E zw`am^{qdZkm>#>dotR?m{_%J67n@&Q5Y^xBQ_H~qN`9m14f=a6067N;`g@@(74-M3 zUWTB*aj%M?zfE2VzrRseVnBbV%=dk`FvrPeoM^~i1(rp(5t!#u6r zPS>q~-bobuuV3}=K8g(N-@h6x)W7cl=-0nnT&bXcU-vQu{rj3%MbN*=UJ1W{Ev`hr z{&`K;bjH;;=P$`yzYz*B;iy!fG2IrbbQJx4SzD(|y?J}}dh3_`S=x?UZO?DyuJG6B zg87+0H&+ko30u^J+vN$A~j$2?wij4j@P%3<_}npuLI~eUr$<&&B1(i zdl`cH`n6X@Fkg3jCH(nX>PqyRFTeG!f1ZDuU@^|5gt_0D(5T)8(U=4;z^ZifB&+Q73q9n9BDmf;QgLvi!XN>MpakdR7?h?_s}_)z~d$GlNE zSaKN+vttU!e=A@7M&aOE-{_wjh4Zj;&i~(~aGFx%Ce`N}M30{$iU)?(B+?#$8N0v$Bu&<1sESJ!W!{t5K^F^-!ArZT=%;Qm7im11DLK=Q5eU7bZ?G>e#D*idefJN?IlZd^f_ledw z1y9D_#ULZzx?B%f(ly0a!+C107Dv9ec8Mh2`4vz6`BO zLsp`vojWx>F6GgE&h#~hky(my!KGuv;sulIa!skW1vV(A%elO9J3EGfd!SM zKMB*^Q_M8?1g9Vq>TEo0Paf|{&Ns`_Bd!IZIo^#wfbI8lJFlJJ1X97SJRL+`v29XZ z>qV$wvv$Y3dbxwWLKd91MtM)Hr=~ZBKqfLaT^Wx_ve#X+8Mj-QnVW)` z2zjw3*}BEHN9?g=>tim}Rm+}mrm0ecWSE^{xo>Og>`HT^JbalB>`f0!jg!5pF6gyj zB`9b+eDYwF$*b)Cbry>ld8{!^%rW@lmWe4iK_5y#Tr8*`TJ4FilSuVCT3+&Pa}%IzK7@J`Li9Vy*ns9m4{yM0tiT&0XR9Kep$--1(lfxjOIt8R^o&x(>ZJ*Oh0kto*Ayt33B7 z^Pjxhp8ImpGl$4UVW-Q_r}B$y{0Y}yN6&ob(`z1aeLE#e`Dm(?Y!b2(J>#wGL~&hk zFZAh|+1~e|XN;PhY|rb}p9P@Wjg?aj&?kR;=0EHxuK<3WtV4(JtN}qnhYjN^m55it zSNsaLU9BGW<@WO`*kI3_84Nc&$lF|N18n2dGwh|F%7bKw@~Qk@f7yq|HS{SO7Y{F9 zx@x{w+*DZqKK_Uyd3_^UTrj_~P~R*5n~-<)m~f6adS7w-*zu2_a{S{A0jNX~4Fm5d zO0!ty)8XS8Q`y|F{Yv9`?;21Qy}kJZ8PbEo8k{9NG|uD27a)vcnwQPM5;tQw2f&bUMcprytp72Sc>X_(pU6dn(G*7Nq~ zB(9|sxt2nyZzeYc!qh27r8|P%qtcP=LOqHK5g{I1BZAwAbkXSVM4?6OazZv+VK2FD z8hg&|%~X+W4*E35L;E63yEZSM;QMe-qDt|7IY2YMIXALYa1-++Uu&H7Hk6_2MqeLOf1aoeKb7Ar? zm$7?G*S0vSL8JlIg+8q;M6`(^9YfndXQd0XS3I zt8@m#yd1t)19z=@-nl?lJoLMO6=4BRj^a)L0gt5Y}&UP_yg z1@`anWMp7D#b1HAA$m3)J`G1M2?C-LM=4VpEM(Ae>d^3oE`zE6S%W&jH z+SP|7aWo0W*pfilSZ`S7*-lT8@!=IMEc~TieWV{2x$uiYydew zrC(;W+XACB-&B|Hccb=xFlya4Y7O3nc%3;|^BtOb4%S9)O_xrz2%-2_E0I4@nn?jJ z#LvaIxDtL$QM=?S0O@lX(Z}2)PLPkKvsAyuD^>R3{*250%{ZT0oh|K^DejRj?wV_2 z=~J^NaQmjLBJ7uI3ZB)Db{4u`|Kyq`-n=<-%NH2Io@7)PVH?2c#Tr2I?eb0jn6=C3 zODhqYB~$FoV!GzSK}PO<%C5q#s|@u;?)`+o#__HyLSp3-vgLha3|`Y}KnW)S6poF@ z{sIE}BvYE&yLgwe$9(Th2^Vcr7hr}J?Tcq7m5+r> zbh3D9U&xG`Sf6jGN+WVCRQUWTruc6)EaRH z63xkIWXWYL!{Ur+<;P!R`LXmWEB}bs{rm2w19kbmu}UqzrOR8lQJ;~H$GM)z+ve5} zB1Sg~AmaEi=|d|QTJgThdHk(D%p2nmb9{`g-p3OQ_&pA%4CY6E_}r(t%`_z4nu1^R zP?C3$3NDvK?YxI_e^M5_9>+!6-47*NU$Nsj_F)#U2Tqus?%Dv`hql7iF-8vGdj|4i ztb7GpcA@2DY)!oN&ng^yg2n4a;uTUA8}#(@v5#j;2aB73kbjHfLiCOL?a>krp%MYgo#gL61aQe2g8D zDjjzy+(DzwGUbE5Ksw#LxsXqnj=?=(8iH7lm!=`rl$b$+CB3Ygy8p z3#XD`NpCI?PT^XX^yUJm(6ub-&4n+MU`cN-987{Gy}7VAiOF~e%#>%bqBj$15$AxV z__%yiyvR9tru3!w+e!=lh??J<j_We< zVu+HsndPDNd*J&u)H%cBv=C&G*S5U9*KlgaX?g#((u7#F*E=qqZ&#DFypzqzrpS^D zS>8#Ob%uLV9RJK%i4i@ zJeJ2DmGkdw+`q1kiZ?P2y9vjkU&)27$-A(f#bseiLv9QgwugT|3_~;CjdE8uTJ#kN zw+S~H-@W(Su06V^H91iACOYNsCnCPEXzHqpfTw$AAU}bb&rM8j=zNjE{g@5&@Dv@Y z{O(1yN_h7#0JEjhqbq;+dnq@dBlTA0%Re!pm3(-&OZNdz-~3d`Gy+W`%im5*gIZuYELLb<`-hC6Rocbjks$K ztd`Zu*dv~F#Uw7~2r+Kgoum`i2pPp=Pw6ga@|yS-r*d=bLr@mEK)+<%ne{pR{2dQ) zNA!K=uzQ7^e@rjy@+X>h(&Djoxydrowh5LGBlGy><{?!&vw^t)L%&wJ`v!Ad^t_X2 zAz{&c|D#<9WzqT*SQx#(@c1;Sm(}Aopg6Uz_vhjJaxh=G=Vrdd#_{HBRCvCIq5(Ew zzP|puV7{*V*V=sj9W`ja@J1xI+II7`!k;gqUo&485FN5)MR>l5vu)9@nXhMwN$!y= zNFU+myXe=%S%1sT*JB(iihlh}GWJw3Ve7qH`f9tKx|!YKbWJLa=#sVtI+E?00`8UR z`rOyErQtw#IA1sZwl-g1*L<;U4!ZTX5_BQRG6z$r@F7^4+|aidH*@?z;(0~Nim2G1 zUY~3AXSOkzS15|^>CH&%Yb5oR;eaW(T?{kpgR z*ttcDoV!G>H9rE53BE^AhjWWZ;y6qR z(%gVAuvR?DOzEd?Iil@WX zgZlFjw|ncBhjU_GX%#nirF^2sWAH2i7`K*=!yFNSEW?%4TR6L9sQz| zbM_?Oq@sxB#t1_K$-h_Q5P0WAaar}i5I%<6m@aOCKcE;|4d|touJ9NHw@l;25CvY0 za=8vM2o|vQ5pL`>OvjBF1WA-o&yd`FRy4Zb_Phe41I=tE!G2+NqwJb+;W5A=xid56 z;|jkP6Yxy89WagT+o#wQ>%6&7+`!zg_*%ygVMnCRRS@AMbNj~^FFKm&PTA5l6l7&+ zQQReqeGQQnA8cW^Dl5)07KGtP#&T9PU7Ch|E3SspJ*P#h&g?%Vimo`5Az`8HWIU4zun` zhlnmD4?crB_$E5bMDeD3Nu*K`3Qj?^mlil?fxrKf#g7O27lvyv$nISswgGop7=Wjj zPg)x|PmZ+P0xnIbdd%gyr}fVd-R0%aij6YN{0sk$b<4l--&(KpFYI?S-qr(Mwl%Uu z{)J&5I0wUDnyTrVQ5&>Fg>Xt2j2_Fdc1&QHLL)ew%r+01EVjBF9dYy!@R*id!{s8clNi9eXu&-^(qqYZt-2XvtRHT6MRgn7~_KP46%}> zYfzBJ{ScP~SER;25cdU_>zlxT!*FtoAKKh3=cJkZ47l=pd>xx01n{|+Ks3aPhl8+t z?&vtpq4FIyhpPSN;QBpFb2?fWvLvhBbrwl*Lh-}*w}FHTHG%qzQzW6fa&*c@&!}6i z%sJ4Qps@9+Vl|B;CEscDXToA0%3=R@$MKzPKASg4&=kkESVr*08f~e4`20_jyF-nOuNJN!5l|-Ww%_N$XXd*#$zQ+n*CP848 z#|j6NNGY*5iOFpbae16LS~c*!4*}Cb!NM;o+c)Wk2#6|w6nY&i!-1v zDF;FA9nRyP`ETq>^C-o2afGx~BJCa8sJa4XO0g{;(rt4Wee5eKMJi|(hht{EbQOK_27gH1gHq+|;RSRR=HT4h z60=Ca6zD3PL&Er6SrRY>x(Wypowx9DBwz}36^V_n;OtG{?)ERO&a@Q0X$K$dSb6Xl&)X zXL@L~dbnNffr%$_2oLV0(FK2f?~`!FIpsmHlQi)hnfExF30kJ%u1$OC7FC4&4I(UkNAsDyY&&|NP6@MR5^_p`LI z;|+Jt;{|6lU3C-FXHB9GSDc_VTWm`08gXoKY7kJ*g3skuayyS#l z92x{kSr4Ln#l&M$;erMIEbzBI4D56k8bQR*f{0Zh>FE9%y`PM|<&ngu36XH3Gj}Ig z?d1+jQnzd_K9eesK(^2<_T_9d^4JUfT>RKm3C)_x%SIG+GsRe?JtM}^0&W;sQtf>; z9KUS&GPKYMzjw*l{1n7Ka1Hl|x6`5(@J4Y)Q{^lbDPGdz(ZAxpghXiGJv&=E9lZKT z;X1;;!DsFSu}%ZAK2o?;9IR}K7#=sk-rl-zZmOV@L1Oxwq8#Y_k-{k?KqdN9Q%oc(h~fS*!u{*TJ3N-Ms5CW;X!<)CZHD@@bsp|tjSL4_VI+&aW2Sgi zzRhoCprIx7U7f?d*V>Msiwj7bCu{A**s2}w#rVV8i@Duu6DNEAJonygqt^A!&?7rq z*Dr?GwVY5xPayezmc8z+XZ)D3G9~%OOx&~4@)v0`_IlE(063Adh^p67(n&fNMKZ<} zaka>jny4H$lWw@C(A$4qN806p+t#*BP`Q5v>zmNGdL^^2UdY!>`G~t_XuS@q+?8g| zOAF95dXivutnpQuViv078uIH5%3>RkEze+8ezI?FZnk+{;qq+hi~4&ZuUM7q3dCW* zgjKn&Fqs6aa$R8}30CF0!pS69mFo(}kziG>E1-XW39E8l;fo~L4C@N$GhD=G=-wq; zzG5%I|Mua`h+VBI{J)=1yBT@+BF_?DwI)=MX)qZ8S&^O|7OwZNvUn|00Z4fNM) zacsmX@i@+Iy;_(Ww;-X@hbxK=E6!i8CQmv1MG!KhiF7Yt7ci{-<*q0=j|7^z$Yc7K zf0_mRu8||VBa+Ftd9BorkK;>>0Bdu2&bR`= zE0yniMG!B{up&#m9Pk@mj)GSQI-yrt9hZ1TAnRO_vt1FYi*(3#Nk>zQU|>OC{dE~e z*D~=}=fIiODEUJ1x=ItH^nl3e7q6%zRCJ`h4w{nsX+4+1!jD|`E1`aZ1K%8igPkZ~Qq z6t99%u;hPTU(Ytb8)^TM4eDDOyv&#lskRLa?1sT@Z(*~%Hvd4nynx0NJnA})sZgMV zpz==tB{eT_~_`c%qrEqe3T2D$WXFh=>Urc5cE}cA z17MB ztyyGGbk?H8`t+^o&1oMk^Y+oD41R4NEoUErsoXxoLhr!QnK5{J?7xo)jRawjGxzp_ zzmcA%ziuP_FPCB?6|`^FY#jt3kDo zl+o5v2=2#+9SGMx+EIS(qaDGuj|8`#`THpJ9T&fnrCI)3Z6BqmBSB*w0gl-`y3kQ&iRmqCai>JA1uNE*>@%nrvYoue@>!7q6+D z1xTWy&ja%V`m-bZ!+Xdc?$6!!9O};<0K)xQ`*Af`0Eo5@tMmwc{$IN>W!H5pHQyyr|*k&c}tDCu$^N- zjC+L4U#DE6Gy|^8F9IpipU4kI|6b(YQE?TQWiF*}#+@80wk^^6kh>kM^wdY4 zi0Jgvl`k=u>vQ{g^uV|*d`N|LOyPlu7y0!yQ4x59OIF<2i( zT^BE9hp^`6j{D{h^bEr$U(ddnHSRy|*7LM@X~76C)sx2k;Wj-_g!xar`Oe(QiE+0q z734Vd14nY(%pIN>_su&6`C>fstF8S1c-$Ypq369!nI=B&#OsD*Vt@+G!LhZ_j>Hx8 z@6gU4370WX4!W+=dA`X(anIZ@*J4^YT|Q;}o{nTgHq3R{U4#C)Sh*w+|SL1i%j%doWsrT$}&) z=(4%kf1~C|M}n>7^)axW5k20MOqpDv9sLoa=Mib{5*x2}MXOT(gSfArP=VFUibpxy zuA_4DXp;Ju?HcTYzG9w7u?+-#jk~L|0=^<@oF04DQ^<(i`!O+H`*|%vuxl#to}zU; zwl(hV!HF1Z0Z(epYiICbivt;o0$B_B+M%xW9xnPWi0+D=FCky^8%=KMJ9nz-H#;6~ z;Y3!0&zhf(G)+8Q)W1qICVLin7@S|-uBHDbdBHh3$Vz2(h4d8gXcYk8}iJH99DHsdKC#^PHx zad=8#GlH8iJb8FC!*jE1;a+*|#cO>EdM{OE0UwitvjgK6wva21&K)=5M>HbEJ>&){ z6z|oQCradjFJ@#6!%f-Zz1lVmZpt%gdoQ+@xQ8>=)A8(a?Ng3%Zj_1QRjJCuW9_y) zy}Ez!?v36zO)^#;4oIt^Hs8VhbJLX4bt$Ms9X37a;3nb5&d-*9JK7<9xU#Z_V;y7B zAn{Y&St@z*Cr=5H*WJb5u3pH|cUa^I$=-0=6s>0+<6RRFGu$JiJq z=uacAbM^wy$F@1d9$PKNMKcVD%S7NkTltTt`AY3fa1j3*UO$@Z+fcB~6!$}h<8F#rig6*S-%$bT^a>CF6s~=4#@}9fF81H3 zm~qf12|DX+A@Qwp2;exn3bPFb-i)em7U{seVEo$m;Dq$=*Jm^^+wT)Xf|EQr{e=th zw`7Vayk03=WnU#E_DS5~EslR&B}h*Mk>bNHv@HaJScI$}+3;chXQz6qXzEMU^s-4L z&mKL`L!m)P>}2eD&)6gxdoSshhY7E3Wt0zp$M{xKOc=#K+q1iHAc>R`&^!}C<;#%4&4TUO4V!*x68YPF zoHJveq75l(>?h0*isX*r`ROsXW$|8sxwUQC%;@>)(gPlvf}by^W2l-2e9!kYr2`*F zz#eJWB|A=wB}&^>ymmxwnevs2I6sw@zE>94c)3dvwpot-lw)o2SzOjiNdl5=c(zzC zVcdUF1Jv6t%657uzq0-5MPx{iq6+{%F0Pc@G3av>NwEiCh!;2bm=!g2vhcPM zt%0%lE1Moi@D!H*OQj2?&*xRpqsB2=Lm9$j#7iH-;c8pfw~_V*k}o!2UZ3CK%s;FTG}rvP$w7it>G=kYF1`cB zNjJe?;nGBV}?pm8=#-Nw3Hs;Ae zha_w63x@8`L%Mlw0dK^kbk1kWXjt(KzZ$C$5*N$DRtfwNqaQ)yt0WM4uPvlWG%C?T z0+ILH0^W$HBl2EbIFbasw6%ppNu-oGkc8*HAdbj;ZDCi*+4A2o`YAr{0(5AKFToo? zYOCEcinbPCcDwG@rrJUI50dJFC{ya6T@Zf3xj;Gcj%Ar32R75a+(grg> z;z&e$XdwM07X}Z(Loxa(mOJII7vGM2>R&v6ORb#}dwKPe1VetZ-WZFRs+ zk9GQ{z)OWNF>+y6)5T95Ce8O&rOfWmJx3p(Ls6eTh8c$q1X2On@FZElnbC7#3;Bu; zb0Y1!M50JOW&*eR%_ys6N_9lNsYjDUc(to=QMN?Hu`c0NjHXF|S6jfVUBas^;MFeS z)fVt-m+)!}c(qG-wFSJ|CA``KUhNWIZ2_-#6;KnLkV0n#h9PLR>$=<6SHi2aF*t$H zVP_d$J%VNhc=cb8^kx{mx(Uq&jhrKebR2GQGfV{0U~<1zn_S=M0pget=V^sFN1trC z7Xv+2^6VB&j+9UaWQ1_L$L3D+rq`>$$YTp}?vYHnLw&0tXE%Y1i!;g>tbjQMflLha zagmPeMY05K4Q5#`DtgD!?>N(8#MKU-qpIy&u0KT~y(TEy(i z!XrciT{(JQbsg+a@AdlL*Sv~0SO0@r9BJKQ^?Nvaef3-(g~tQ>`m-sO*-L6>+vTaV zWw)KhSE{5Fv+LO^+1YTi=4HyGSE5#%X?_*k3d0wm<`u@;Qz9K+_Qg`0|B3Ue*KILjGhPe7QnC#)B_Y$a5VH z-AiGN8a-S5c5nXRPw=HyjUalgK?M2zpITFhS4{8L@2fRSAN!V=C#k3Ks7b zLUIGAP2g<#=i!@d|e*3zAmsk=y}Z9>#=FM9M#W(^PWrf*Ve`h$kZ@A_tH!^s;>~rXoykjiC;oNknEw3Ud+a&H@BJqL zG&A5|-{BST`Mrz0_ddUOu2(_8@15xt@cF%Gx&k47uiC9$?e19k&y&Ryj5a(V!(%;| z{P0zAczD(HR8Mjq4d+}*&e7kVi!F@ssF zp5|2XQ3aJiD7w|=V2oh{Emh&{lmb#;$1h?pei3`|i`a`_Tc-OVtF_{iB?#{$vJHdQ zZVy_yJ?MAagZ>$iUy8*GQ^r$**Np z{mGsz?2BFnM`k@)*q&a2gS-MexdMhu3M>LgfBNkXcsBBf8{m`2MvE>@PN(7eJ6V5Y zo$$1k2rhwGbYedeR!<0AwR4I!9spA_oB~0TC^=TYjakGjKU~lb!#xb0Zk~glsEZaxa z0s%89cLTpW<>v59h!}o{q6QUqrtL~Y zQ^evC{o+99dLX+OhTz-NH7@`5bd7^=PuDp3_H>Pde?DE~-q+}w8^U->bj=N#Cm&CV zuDL;T<>M*QH8*I!d^{z(<_67~kEcY}+@N{$@s#MA8#H%5p6cG7u9=@HnTIu>wCQ5R z1AY!%eH*`Iaa};)e1{B~(kYc!qryvllFuKNLD6}&J>!4Q^qG(&KL~(ti@q5L9;y7w zD*%0i1CYMTKY8z=Z_NMP9bN^{H_n0GLazYyjTN}s73fdj_?udCv}E&ZktLJEC}|u; zAaQ0Be_~#$$96x>2Rn5v)?fbN8&iMIERQCB$@3X%XdiDlVSgJpI4RHtr$Xu2#mDJq z`IHW)|EUe|HMUw--H+Jz0i^?CfYJdmKnJ}LDBt)o%! zWOVuRbLoCG0QAT0K|cfJm-3r-r(n&?O};u+y#trAwbkzYjdTD?2g(LlAUt2eGeNRe zzzNdw%NyUvD4F?&Ew~>|k7kvBvLOuY9i~I+K>18JoN*Y>P&zNA%Ja1J@(0lV7GPUN zO|cX`1)s$CsSN!%WF(E)mBAat~$7Fosm7@ z6Yr8Fd}4QQ;geL`#~wZ*<>3=j;1hnqC;Wm>`1SFLyCn6)Cl0hdK5_8v@ri?Pk53$Y zdwk;H+v5`l|9pJn-q-NS|A2dvF%hQD6GuZd_)@GhJpAz~_~SLBYn*=1QI)$76#iH* z{E_F(-B`K90GqkLI+|q>&ny_>57Xb7YwzF4ot`bZkOnio8k&8Kll4k8dQ{MO%dk0z zEvmU_Kf={uW)x!GEcMzeGs$@K<4(UvRlFmh&|7OH$~ zPNd9INEv!<{sw!yxd&8bbmql3+GMnhd@GcXJ5Rh!Ge8;o`>Qd-Mc!4f`ph(4K9?gM zihJ;&zFN6TEhx`#@|b;|Z?3>T*z=x@aVwxG1*op2QGa_{JR+=RwjKe`(cj7swhU&k zVH2DwUJ+F&jf)yn#l6g>YhW*drbiu@!*$K3-r*Thc>e8d0%a`|Vl1Vg6)J|Dhm$$|7RWAef7*4q>?$vOhx0+(EfE^xr=HAw&*W^GSs$V>SzWsD|Br$o; zVs!+8A`!F^>Y~$$HUN27wdSx6P%}%pXr==2-lQ){g1xi zjq=bq^?6RwpWt;}b$?qN?t2fa;gx5OcTUdb+s4)Vpn6gHPY-^20GE9WN2&Jvra!7X zQhH*%{{8D}^ul_Ln165awWhS+xYGy&ieJ^X^~mC~{L8UEmnqnf5ZXPzva9}R**mHt^n7is@k&7e;|2M@;EKE>xn{+Dq2uJGQg}bUBnBp8HCICsI)807926|XEH(b+>XdKo@u2? zHtKonlwn~B!$PzhPnET|A4iL2y$U;s=2nX{k!}EQ6OS#LDdO_&?aH0+8-9W2^!)I8 z=UepJ2j-jkQPtg8*@h2%`%M&hS${HplfK6x zsp5W>&OOltLtivoK1&)Nnc~z2bXyJ2?0wUhrLxy4fwQes&**Yq8odneAH($bB76ZN zcw&uY$gL zjMcZrt{cJ_CQ&31fRs0gOt}U#dGz(hn!a9rZbqCQ$&7v%XNV~`ZJ1gP#>yJ~56{h@ zU%L1#>R6u!`dhN14;MCJ&*H)ZSUpZk9Q^^}uody08+2ajJEd)>mcXjN>9IAL6l3^!HF31P^KB_?Zv3(xijul&N$G7rvlU= zre>;q4ySTgYRnVfy$sh04$Qu}fx9N>%%26|PL`X?FQKXVB{Vg^gr?@#7-!tYC~%?) zsZ_=hj`>X#hKR1-V$Vs{E!})X4&8zXtF~pU`nJ@f$@n8D#Cz0UZ+n2}j zxA-l6`LB?OD)9vpTygtkgetyDUp^wy5D)51?%yw6ip3oKJyE1saV@Cpo8or4&hl8V zt*H*kC%fGY;=B_4=Ml6oK>3urVDu>2n?FeoQ0JqWVkIkWulMCKEpqQi$No1|`X;D>1#IGTwA8TsmSb~wB9F|8nWr|6y8w`Nd9F@3Le z@vutg?$E)KIr0ToJGP^c#&YaI2xyrFcse8Ntg=n5hP57cQgr8;XQx^iYQ&+ zgGo~1E$kw7VJV`tpr-($PDqjWs~qvR)!Rq}ioBm<9R*S_cS7g$Lb87*5+XoHq-3#X zp-q7o0#yYqS6`9D)OgVuJ+nNd7mo{>;_x&|UD#)X7T8L9jpK_aPcM&HlPQhK6puug z0X39~_WA^`^y)LqBbLtf3ZM8;9uP)yFVdRzzz~6B+ z3+gNT(<8SWnI1^H!+TTBsNtL}JnhZ;zTgPy%Z^zamNmJE#})$F%eN7-1OXEKmNvRf z3b{YO$o=`X*y)Ivh@FmzX%7>0nRy$_>Rt-=1N_@Sz?}mD5S0Ckd|d!l=r!g-o-^e$ z>NCxc=5kiK7I4ND(|(V1oZ=p|=OZ0Qy9e$2NXMb>L3AMY z2*GWS4Lp0_%-_~e!`-JRY|mG}$8qBDu(V)7#GSb(Y!SuQ$JSOa<}LoaYB-{LDG>L5 zZS^#j4bCr*K5^C+4ebb4{()6#_AT&R-*On}dO*5&q9pW6<%TkC=I`I_8X`C%?Nh86 zu`!4O@jsL3IH39~Lp+OFTU;zWzYzok*Ge_JdXMf%?Xm;9<6o4ky!Vhpc1U;35uE_N zVRXm&5DrFnpy%f34)oj{-N8&dx&u8oM|Ys-=I9ROyN>Qae&Xm3%x?$M9ZNlW<4w9C zdP6!;KE3hd;Wc_=1@Hai+>p>_0GK%ZpFwZ*)H`~Edu>0mIKdQ@h7n+TgsBOS>ziB; zD{4eF3x4tSWgT6T>j`KQ5ikX>!rps)`lRa7C$T51AG0IbOzu3=#aq`G5ZMI;#$cU) zW%jnd$|c;~bq8ykKf5lsPvso%u{3`+XcsZo@3gDQyc?NyNg^1v+n=I!9H9dx#9==w zUA}S!oODj@L7ZdaJEn^tvAH50rsq(6Co|^1u#lHw2=?z_$;C`6slU}iekIvMN=uQB z-wy=*WFSB)$Nh?EltO^~byDI;H4_{K^Vp+=C!B@+tZ*jwK_EppJqPGPXCXh9H%O(N zg*<%!KyscxmcVj^97fJRW}k z0$Pqzm*e+y{KB|kJSBgT{E$?@??(nB4K(BTBZGn8KfpZR@%#Ik$2)$%%;Rm{{(o*C zZ+)xjIRxK#{Qm#n?Bms}nqE}DLr(Gk{_lQSoBw}tzdT}2a-f+0?|y+{Wq8-g$Jn~U z1^>tG7xZ0-)Szu6F^Y~ah5eZ>Pxp{(H{l!Y{+E%gKuh3#0j6yaNd@S>x-75j+d*nBf?X+MCjaTg|W5 z#VUCrB_Ys3p%2r zTd(fYtLC#uH)RO_+P(+sG3oNxIl&jw*}i-(tIL1!{WPkidcK%vhPRq6pE^puA^WiQq1a?O$&6=!5-QLPkoGETvn$pa}bB?VN>${%y0@eQ>6Vca$_kxJzKh*%LLZdNrt&*XsB<%&+UWdDSp;NX6qek-;+%6cOj{a zzguO*pf6tw?yX|gB(Np2_$-~iJ67MqFg|8A7O6OL#9jjJj%M@VDh+!zN{S!SciLoZnQ9P5gE%lSV;%2=*Uuvg#C%CHT#RMHjKlqkM()L5OqHloGS2gi z24U{N(vcC+$_#SS*p`HI^;+Z4Y%y2U&U{gJ)@H>AHzxL>=axGj!$0h1*`S({p<K=%og6DlHj4SOM*A9He+HNb~z(>D;}XI_*aw@U}gnRAfefy z7YuyFQlA}ZZ?SI-9n;{sr-h$(C}~}3=i|o|iyw5DQMKzXwBmKt60=Fz6?Ym5W38V_ z!dUC@Mdik{y8vHQZcMui@I~duw7URbG;XYQ_@Z)S+Ff9y$K{^Zc`@xS)SG)+?tSBu z(+Mkx$~P-P7u_dWm;OcfzE6Ba1YYEQqLiI3BxLRozez?jhu2L7WKyj8jk}#^S}QlT z!wCb-n9KOOJaR+L^P6WqiG@5FI6>rzcEn~lY1tyowBcC%D3l4V;QaDWf{loxe2j(a z8JGK#vz^38w3UaMmMtH?&Dm$}A%BN1?y2A6IO2i}F~XTq8S@UR1L^v`4$ z0Jz@)8Uetf0`M~jXadk=fWLQuu>fFIk>geY+8%0gyRl;qkGO-Aos!*ekOzSEICx$a zOG}eM2-eu)9Z1ilQpID5-otTT zdFN?{WN@Z*5p3a+%Tc$}fgO#sA2=LjP&yoIDO!6ds~|JxwH>&cTMoC?%OoN3-+qw} z73^W6gxG?b?i~pDw}AlDp9>dp9L}JQd?76_Qz^m$MDc_ZY0pBKrAlMyP5%7QxAN?> zR)oFsz_dOe=YhMlyf3ZKAIk%j!Phj!`7iT;cBi~9tb zbKjIid908zrU;)3ebqaB!ue94l*8%Lye52?J(g|W5NUrKq5;RAB1k&UXYjJfYmgW8 zqYZyW&$DbB(Tvb9mREX>kb7Wko$sW~aT$DF9GAh@#c>$~A&$#rIsn<{7uRQ`*Ej&Q zZhMd@yaBnSA2I;+Gl2#)P4kj%ei|@-W9VMGjKNUpMkDgjE4u-`#+PyFYDC@@JcB{E zr9C3=e4bISe29o3S#(6S_a_9IhjwX$U;0cNhPRg9FcZL97Q)2#%n@9w&-?C*g<`oFth6 z@yA9sm=n~8CFl|TVN!M%h)43F9{iogJ!}7EUKF}#5Ve~(g!mS`y9;5i@x(#xFKY)j zPpYrQ?;0Qva()fWSM08pdp;UWk1iNJJ5!#3K)5ptisbmZ3pxuw+?T`tGzmElT`nb^ zZtg5xpDqnH@9I-HwK@yv1x~QU*GO=Dbrw)gn85MXS(rqEgP??^KkF@YN?YS?&*>Y|Ak4@0rn$W=^tQQ zKJ*T-?nwJu-iwJ(OK#H4k@e>S#a21I8VW)w4C$R;gCrmBGzsq~H3{zp_|fKg!r0&Q z(~AIDuRVVpmL;h;v{H?V{I{EO*$dXyCSK0DU7a818X;8PAANB}~(BTmm`P5N# z_{2xAf0M7*|Bg_}m=Dsp14RsJeh&>>4B}|Xmd_+BEXADAjF$5nI*)5ZaEOM76jYxC zW26S>TKOH4JA>b$xg+>BJkp#kK4ul(1C?Zs?n(jZhaPBYwgxMDFdO#}{F={!pZhuR z_~*dKc<_Gy_Cnto&iicXdi?EO!&MyIx0MqT0QwKt2>(Pn-gW@|?Oij<0M9r8{`RgB z28wj7Z~*-6T_Y644c7tiw|9+jP^9Bu8~}fN*9ZwkI=&5n(ZK}!(GXwG^D-9c_>i+Y z1tm$e>J=PMSL&$!HItGNc}|Q8QKO^MI3L9=SsKTQI5uD^<$;uA_+ARjnj_PUpW8_L z^){I>TAi;}FYf*;_T|_40HR3ntg3? zDM~z9U15*N{>zg@#pSsK&xN3wWXJmbJRm5TWXJly^AP31j`e@yp^*nW*1yd|6AyN* zcknQl2OaCqg)dD=@1ZY(?b2P=`rdO zQC2xmmF?=Ym!LwiVr}Lqu^FEVQ6}~hK7$;gIoFnsh#YJZvSYfq3$t9-Vfxv{{Aa-E zm^^htS?u=Xxo)7(&Eh}L0p4MFG`Es5ySb2%D z1+Q+-pT{$V9nW~L;2C>?dEmMg=`w*=c*f7$JP5l-)8)w^)y;YItLH)3;T&WhICXP= zf6WCj8LaT^3|8EEm@b{OW4f*l36ki#LyfM3+B05986qxTS_D})X^ybS0wd~D^>|$( zP%x2na9sI;w0%U@d1^ftMCW1W#!qw_9-QEjqTgehkBX`jBY?U2utCYErne_gPL32r zg{OZ|K1D!ZYXqSeqRsd16w;&IVqVxkmUB6^bPY?xNW1;*JWbc+?b6xt={kjBsyz43 zU}kjMY?!0Y*UYThgdTBJ-JLKUo!(=4{8G~C=4A!+wT2l}LiT^l3RfZ~w*>O{iBNUR zr0+Kos&1L|{U$=yEt9_AM5wxD()XJPRkuv~eiNbUmPy}lB2?Wn>HAHDs#|9IevT<| z1619z!mdWux%rEan`mU6?j@qtz8fOzqV&TUq`-wtlBH=-b&DK1u7d)iE*w<+RzMy} z7U=uo73;ZL*qm9Y>={Al^!;2|9la+kaHhDA{L2_S;&X~e|9bKKEq)6fMfY%I$qb|D zWIgda!mNOvlUF)IgF~cA#B1IsJUdO9;SBITVR`F~pv#h%d+oJCFB-Wg z={*cOXaL>INP*ckBBTcA@IV6_?{t0*f5=!fTOz8~qgLVXb$H5iaSimZ+k?L4fjoLH zD1H6sz`yo6@bu@v#i_Gagzd>gP1=L^*%Gu|xfObjF{^U`=($#*ok+(X7kt-?H!jt3k7V3PI@tpo`Z-J@3J8~X2W*GT$j;EL7^LLB0+9X*rbV=(;A0h3nmh&Ij%$?=5P)G zF?X~PbNdk3zcL+UYhtM%QgzmLN=x0W~$!|-z4R3o;Z#eE&H!MSy zCg#3mr)agCOvtB8v!;v9^^qo@y)A04v%1Qju7a9F8G^(3QHn#&W$mQz=K-W9827u#rxyGt!yc5;D?(wa2)aiB6<_g_1JO ziL}3trf(I8XZW;qDTL+?LjpgoRrb%%9C%-Q59 zV38Vm2#rjYrqsh*#I8rdZk?`8D1I*X7_EcN*v8>&6{~a&R_Kx3a^847VH^XXeF*v<^D5Ue3x8Ay~X>tqP}iL+UB`3rjq4yky&$T zEEQ>-8poYeP-V+aaAtRyO zo=ek3FA8Dq(2Qhp8x@tDg)!toCLjJXQoYcX?$V_u7ph#kj<@1k>)tY_o^XX2#?9tf zCsyIrvq3EggVtw@SI>^L|B;o0cJ+a1ojdJn*lGLn0FyLw>q08PL$b&Pc}WIVxEjaC zmLOi)6uiGZUATY*-rt@sOd%0f0{VGMqY`lvcz=7kFqQ<~-<~cUMWRKCFOf(oaS#d9 zuFjZO&8G_^oOZR_AIWj&Oivb{jkFJ8%NU>20#X;BagP3e_-btryvDXnmaeuvAn&1gx3EBAwL-&AvK19XDD?A`K=Wi)lTsXb*AFsHzT-`+qygq)3|0gTDuKF<~mcwUsSbcp{ z^ckBU`)Qdg{>i1^=>4rl(F&ah@|R*~!bj2_!5Oa1l*XodcBWd8ZBnu01M4*sQNj5; zQh&|h5Bo4s^}!-42o;nqB3)@)J~p%pO<%8k(7I;uJQhz;#m$a%$Y>!`KH@hXbfh!5 zi*)<}cmn3q$jWyy*jj1tP*wBO9-VS_GZIPfj zQz~q=tc_$%we>;k=)z0NJT&x~hlW1$(9mZd8u}nuGo|AR)vV%HRATD^ARV0pK-#1O zK)>A{^kYC?-9gjJf;HpObPJ&=SrnP_X%NVEQP1bd#f7&gQ$Eu!ychG#h4=AH`5Y0R z`LlTj(V_W2(=NOTo}+|vO_fix3-7T!bK&j5K*uh;m_ih|@IIR=pDCgri#{ju@)L6W}; zggs6GbAB0?!8HM2gy7CEL%-ttY+vKx?LqIcarF`Fi1-tsN}u9ghL}$op;a|=j-RLe0W&&Ee7V+PWnzu;D z406Z-K}|BHOq;LD&cD=L<)%r6gO9xtX%|lrqL6Fhh|2sKmaatCLU;nGj^L%o?_~c; zp?UxYa4sg_F=*! z7!2C(s}!lfdKYz>X?^*sdW0tVeVpirZ0B(V=nc@^k`xlMQ5?gooCwS_jS{n@__${o z#oG_M6xkl1yc>z3+|8-}IFhiy1vUydu@4dB#hpBh{Lh)Q;BBoh>$HY7vN;j^vuymm zD8?{b>%4g2O@5%P{`9nK8<+QLa6-h9r zaFfwyV452pqQ_`;vEDKj*e@`n%3$=lpTV8qqE+U184mBpclBr@32dzNG;L#X5w+!& z%9UK(sKdh8bpr1F4_A(Cw)XxVnATixyMs$#z@1-DsZZ9S;tT!yG`MEnE_+*<{o9EJ zzXypsr=#DK;A&v5z`XC4j~H`|JGUA^jBBc82A&^QxrsNu->l^IryKrn{O0+iq?dQy0TTCR%DeTx3t4f| z$eXi+9*+0DwiJd;Zo+*!+?i4EUeCk^`2&dmQNNVGG_tWXvd1tA9|*@LH?r`U*fqo9 z*5u)B%^JafXwX?hQ0+?;56KZXS&I@c?@uZ{57P5!vvoa|^EX{;&??!3FX=mx;5)r{ zG5GHO1bp`z{N|-R?`F@i*D+~l5ZpWgA5nwX?o+^bt-((Y=ikNP>Q_}J{Xsp5EWG|! zcMrq$MK=!B&7jR7|1g7FdtMI1MM1^?Xz+)^aG32r{Fh<)kQ%&Z-$nZmuE7_E^B+`$ z%f2gUk8CWxcFLqbfFDqU%Rh7g-@jIm%#;K8el_^cVYnO_c>US{l^NvUw+4SE4Bw{) z|IaXd?;89kVYn8bSO4u{_+B-5Aq?NM2A>&*?@@!F7KV#pj{h;rZ}rIS;kF+33B$?g z=ikOb7xdS`E&p5F!)@Ll3&WvY{CZ@s7}Vq7R?m;Nhg&_j25{{9vmFs47cw8|hwx-&%FlLEHLtnSI(EIfhO z+pAl02XT*#=JxfGo5L@9-}Z5RzM3e_8iE2_ZueyKpYv;(9QVF7sXo#Ce2(y0`G*pv zX(PCD=7uJkpUB_WwQfYb>$RPUmoh3ooIoM3@0lFFIyt;6IsEzf&GKD>sq$gqfXE%w znPEUf7DwwLqzv>Y2VyG$`jJ4l&tqMZYv(%US`Ctj+~9Yr@t%hf zdg%BHSgJ=MH0pYG()~gAt66;Wtx`3FmmKLBM}}&G zC-sv-7&IhKyHgsmJ0vd@sICRj4_VET+s|=B9WhXyjqA_dP#;*Qf-ky3uCrPcc!%-_ z=uO9yV1b^UwIzCX`bU1N>ZLE&zxm@mZ_!NMWFNW8ePnL~ebGK57cW$Gkbz!u^&V^w z54wka^w4pYeFO*}`JO&+Db3(RPA>tAPFGe0`k@)AX?c20_xeBG_BNc^#`sr*oh&O z`=-bpKLt){UIXgmj~b$fj$){^;W^=H-Zt2nUtpz;LrDPxjRnN}UG&f)UFn{k-3YDF zx1+A~FdNJZt@O?A+jRyy*_9q-0`SOadetgiWD8dN1`qE?bj*kZ4( zdg%CCs8%hz>hUh?PPTR*b+r!HL&x!s9j|h~@JGNJ@H>}vFM5(|q0C6@(*2grb?Hvkc)NYV4M$Xf1t9<*sHhNQ?f7*F(5)PIhl)HTz#X9+Q2`c)05*_`Ee-6j|5m60{l>bMFwzRi3)Ia2w-D6BUD5-##QNW`76)bF%AId%*~%@ z+9FG|%wQN)k#P{jAS zu7(Vu(TFeLsq9JTPm7CSqyr`ZxAL6ytv7a(VK5nBt4`NPl&wJ*$l3NpVvZ7#Jrbi+ z0?+fo^If8S^kOCWCk^fvIf2Z7397BpAH99_vGQ?i-(>WjNL_T&?WsXq`rg*~h+kUy zlpABD!?_6Pgh{bEwkp<_D5tifnY9H3!p+L3hfu}rc#jX^W2(OS8RXGQ_mL)_R%zF( zqq<((v+J!9!&i5`y>nuC=kWK2ZynDIknR1f$;chML&uDFw9rn>bmWd!0Y({)Jxn=n zA36+xql4~Lj@#>);_;3Ox`-U(9SwAvlA?g}C-%rL21mSgIv;IbjQAPF;WmKy849Rv z++ZyFNU*+a{!%wD*EC_YFMn=h-qv{J-mF2%*StFaRI$4{)W{CzT~non6u(c)uQvb8 z=;6%hDoMfjAaqM^|H!TPu%hI}cNfT){Ot+&7-#EevVJns;f~6n4s(s0M&nBv{aL+8 zWzgN4Eydb7vXPos`2Ym3X_`b6G`DS^L~~z=EV)9Jf3izt$u})gf9-Bv~A_& zctwwuf6izX-!M$MO3t|97{C zTYmXJbbJfu$1Z?2Kh;aZaJw)%cs2~T3#Nk~7lzw~)WHu5!|ej=;6uZ3yYM>rdPtR^ zJ$6BM@TbFY*1kVJe+t9*tHJ**47UrrtEU`>+Xdf^Pd*GchJb_52*VGm)t?N*jp5+x zKOzigf%)y+I}B$h`S8zJq(Oh#*FOBsFr4k}!)1vVbj$Een%8-+b6q4ZvBq( z{!)2uJk-nfMS}f9|MKs2T8UjFw~E@W-o)GS?gl3kKXS)!cs<_T-v$ds-`)h89q(>$ z--H^9-2Sit?(P-?Fy7tVMk?vqRy4zVkTyH@CjAsC#=5aa1z?`8vs2ISfD##-ff07j>tp@2&btfR> z*-DK6kM!|7E>uDO1Gv#Xu4KpHa6!YVtKb}ucULl;=Th)`6?7Le32Vo@>)69&3x;5Y zzPMBc-EC|H!w|V+CD8HiE>^XV+pXbS;evqcs?$`^U2guQk#|>{R?Ek;y0l#Rj#56x zm#&XdzCp(Jh==o8eZyQnjr(UVpDs1~h4aymy6P)<-X0H@pgvvP$Gbb-`#^gJt0KN@ zm%868pS#jsqWav0Zk6Tp)_~pU?ohtkg_5SWFv35!d|p3X4lpYBrle^h<$Hg$ct zKD$nxqI?vH=8n?D(TAy)$7`GQ;eaqi)Jt`E7-DN^%jVEjSqt7Yh$^6ub|YA05U-VX zt>_9v>|XIJgLq%JdVUzr^RT{NGKe=S!sONK!;o%4E(_OVH>arv@!BKIQk@VkrDj!Q zVTfHg4hchks64wF#Op;=kiTqF-#v)6r)m(dg?8z9)*xQLR;kpAa2~7YH(`j4{ErRd z)!e00cZ4CfmlhbrtJ&(gA`G#9og0QMQ#}(6;G}*M=c(|A!%VS^j+(Vz>5x1JbsY{q@m@AnylxGHhQvAEwxK202{Y z^2OY0ju<)2t}SDs8&fpReBVyC1iperO!~mteqxTFm}dztG);D)IaD;VyU<*B9+#Ov zyg1-8vsn3|-&@y;e$Nk+Y-un*ZSO8VpUYaiUUQ$k=YO;JF7Qzm_xo^Aph3Znikeo@ zXxADlDpb%=#U>@u6W!P-qEy7DiWIB1R1!$*Etm~(x}>HRtG3vt7V8ZwRcxunCMXJc z0}&DLl&b6+LA(K8Apht2&dl!Y$)3&bBHG{knvb&Q%$YMYXTJB#%;4WZcnSZVaWH1Y zl3`rp!0KWY@SRfX`3`4C$@K{>(4h~q^!pO(_X~j*as9rn9Ljq+|0(4^CsM!15!-N~ zQ@@{x!+e7*FQIy0P4ynR)>zUQ-S=Ik-d8F0zL4tuVSyRkPhQmf3)#uX`IGlD>OBu) z<9T~94rBZB+UOyUrJu01c)6v|471BE{bzt(Zs|+5-Q!sL)kaJ2b%<$N|9Q?XC&$p` z5836!UR{2hU2f@z&33t^PuAJxkdkOeXknaPPITAh6?VC;-`eE^67~19%PswRyQTL! zmcGq&tN1)y`uS6KxuwrPV3%9^|1Ea8WiK?@<(7SMnO$z#Bcttd%YGSQms|GE;dZ%Y zAN8}#Eqm%iOYe2am&z6v;osORUCT*5vfM2`KPWKu@3HHva;bkq*K&dHRdzYqtM2!r zuI18BRo8N9XP7A$J$DT5V!Pv?2`!?x-p>2?p`K1?nU>I3xt<{Qij*e!o%nkc&wC%< zp0yYfT|dpejtwAdz+DtjvY}pBo1D4$D#4nQ+CW;UGmm{~TPm%9Xml!@8bt zT`#n*+x2x9zFG~w`WvL#Bsqy1SQ~tG?=`|#v7QXOQ!r1^eKmR&4kd-3gr5!X3H^16 z`T7s&Qa@7+6?-DK=#djRiuAQ#Es3wH6Xa`)0@E);8)U8h=sLNt+zkh*An~_F|IWg% z&0`k@`K5}@stFCbvt))sI3b?16LRMSIWy5#y}|McV0siTV7Um{p~t}VUijCDim$R{ z#@A6viHd)cuh8b1aWKl9$O37N+wUr9ha$S)$SfIUC^B216^hJ}aX8K8NPdD`tKqvG zEf-5-_a{gNXY0ETUQ@#i1xqO);0eOv+fLx#u&xZ34qu<>U>e%xb+`n@#Sx!hO9b2s zR+hk5J^z*{xHi>uOC(&7>bWHvlH*mneM>|fmg;>=RP2`Oxg|2zg9UXNKZ#h2j)zk{ zw?xRTsh(S+bbxdTxoT-BLZbL>8lRUB2HET@R;vZi%p4 zQ$4pt*|n*jTO#cO|L5dlvG1mOjt53G9p?XB-rvptx!~XWB>#z~FH7_>Ue#rO)N^V7 zR{!VH{NM-N`-O(~zt-vac}_$`ed~2?i0EfkWj#1N&gvXJH?_4@pb+ zKMyC=!Yau=n4H=^fWN;4vh_q*A*JQ875Kjs<53$a?S&C&J+7x&LgH|{+!7Az7!S-F zA!!MP579xq9ZMLzVwYP&;8DBWV*a-O-?5nf4R(Et*#w*TJ&unp56 zX4kiv`2f4zV&c8*a*KIy1aptigT=I;v&$`J{g7R5G3ndva*H`P+vOHhuCvQ6W<1U= zx0rB+U2ZYoqwI2v>F#HjTg-Mln0fqrEhcOG|80BWDZ9R6y27*`u*=C1w4Q%U*K(5wh|B#JUV{(Ru?*oggo=WZ&d_1qK2;YdoI$h=@RhXPHP@zTKGpMV5gh_`Ssz7OM7T8RjZ;!E*{0dW#-(&IZ zqwI2vZ|`T9TYP)F#mB~2eESW%+~V6$+2t1Be!wm#1!-md7Q5Wy+f8=4#kViB%Pqb= z+Ag>F_6WP&;@gMY~Tg?_)}=V~6l(RD8uFIvqt&i*Se70lj z<76tS^l@D-?b!ObE|+$83IC3-cf_*xGWS#ZQ?Ohg(OB(Ix#Qj5U};$E4YoZAgI7M1 zdBJ*IQ{TYnC{IeE{{yTX>SD;`hXpFa0fF>gTqf#D~9+@!{`deE7S)PGO_* zR}kO6^tV9H*z4JS`1`VsFND9lkEiDEvHLRQ?{jrN2R!D6m23VEvBGUQowS@irSp7I zaG8h;rJz$%Y?FI0XICjH!rWE3`9F zs4w}ulJ`&}jh&Z5fBy{q>06mi`JB?ZsOTHy?~g=gEA1WeQ0T>2f(wnl z9BMArc=32J8afd=YyXtGIyB*#_z?cl*U_Rb<(ir`|Lj~!y|vR3P#YbyjP@AmX;}Nx zB*riHKjNeB&QpAU9a`enRyA6yAF>6RC)mvld!RtON7rjnfpdz>2K*S^oSHR@If^2E z9SA>xl1lfz%7JfH4u3H)o#&xo8*#^78ybjn7B&YO|Bebn+AFb1$&VR??N5_|?Ns%6 zQq~uT20no;%AQ8=)c4ov4i@5KvDXb9 zM#YsqumK_77_t$`mQPpqSRR`j*Z-5ImII>gSF9#DF|%d{rQ^gjGV_$5$865R=*=Tk z{|nJL&gkedWFvb=3>jUs!QvRVVbbvpqB1RND?S|pftdBh6Kf9+OfP}MoJq2K$@VC} z#LJ9n)bgK6{O3}^Ms`xlg$N~bs4E{##1Yt7h%hVIfF3wV5(p=k#1Wk)+l~dA3eX_N z<}`BM2bZ1&rmw-jBj%%0AdD?{5TNOWI!FB)1u8jq83Yi#XZyqIt+==ypRTv! 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

Hc;r4afM&1gc_#)Qw!d21Q)la}D4##q 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 sourceSet) + +{ + // CSR BEGIN + int V = g.num_nodes(); + int E = g.num_edges(); + + printf("#nodes:%d\n",V); + printf("#edges:%d\n",E); + int* edgeLen = g.getEdgeLen(); + + int *h_meta; + int *h_data; + int *h_weight; + + h_meta = (int *)malloc( (V+1)*sizeof(int)); + h_data = (int *)malloc( (E)*sizeof(int)); + h_weight = (int *)malloc( (E)*sizeof(int)); + + for(int i=0; i<= V; i++) { + int temp; + temp = g.indexofNodes[i]; + h_meta[i] = temp; + } + + for(int i=0; i< E; i++) { + int temp; + temp = g.edgeList[i]; + h_data[i] = temp; + temp = edgeLen[i]; + h_weight[i] = temp; + } + + + int* d_meta; + int* d_data; + int* d_weight; + + cudaMalloc(&d_meta, sizeof(int)*(1+V)); + cudaMalloc(&d_data, sizeof(int)*(E)); + cudaMalloc(&d_weight, sizeof(int)*(E)); + + cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); + cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); + cudaMemcpy(d_weight, h_weight, sizeof(int)*(E), cudaMemcpyHostToDevice); + + // CSR END + //LAUNCH CONFIG + const unsigned threadsPerBlock = 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; + unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; + + + // TIMER START + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + float milliseconds = 0; + cudaEventRecord(start,0); + + + //DECLAR DEVICE AND HOST vars in params + float* d_BC; + cudaMalloc(&d_BC, sizeof(float)*(V)); + + + //BEGIN DSL PARSING + initKernel <<>>(V,d_BC,(float)0); + + //FOR SIGNATURE of SET - Assumes set for on .cu only + std::set::iterator itr; + for(itr=sourceSet.begin();itr!=sourceSet.end();itr++) + { + int src = *itr; + float* d_sigma; + cudaMalloc(&d_sigma, sizeof(float)*(V)); + + float* d_delta; + cudaMalloc(&d_delta, sizeof(float)*(V)); + + initKernel <<>>(V,d_delta,(float)0); + + initKernel <<>>(V,d_sigma,(float)0); + + initIndex<<<1,1>>>(V,d_sigma,src,(float)1); //InitIndexDevice + + //EXTRA vars for ITBFS AND REVBFS + bool finished; + int hops_from_source=0; + bool* d_finished; cudaMalloc(&d_finished,sizeof(bool) *(1)); + int* d_hops_from_source;cudaMalloc(&d_hops_from_source, sizeof(int)); cudaMemset(d_hops_from_source,0,sizeof(int)); + int* d_level; cudaMalloc(&d_level,sizeof(int) *(V)); + + //EXTRA vars INITIALIZATION + initKernel <<>>(V,d_level,-1); + initIndex<<<1,1>>>(V,d_level,src, 0); + + // long k =0 ;// For DEBUG + do { + finished = true; + cudaMemcpy(d_finished, &finished, sizeof(bool)*(1), cudaMemcpyHostToDevice); + + //Kernel LAUNCH + fwd_pass<<>>(V, d_meta, d_data,d_weight, d_delta, d_sigma, d_level, d_hops_from_source, d_finished,d_BC); ///DONE from varList + + incrementDeviceVar<<<1,1>>>(d_hops_from_source); + cudaDeviceSynchronize(); //MUST - rupesh + ++hops_from_source; // updating the level to process in the next iteration + // k++; //DEBUG + + cudaMemcpy(&finished, d_finished, sizeof(bool)*(1), cudaMemcpyDeviceToHost); + }while(!finished); + + hops_from_source--; + cudaMemcpy(d_hops_from_source, &hops_from_source, sizeof(int)*(1), cudaMemcpyHostToDevice); + + //BACKWARD PASS + while(hops_from_source > 1) { + + //KERNEL Launch + back_pass<<>>(V, d_meta, d_data, d_weight, d_delta, d_sigma, d_level, d_hops_from_source, d_finished + ,d_BC); ///DONE from varList + + hops_from_source--; + cudaMemcpy(d_hops_from_source, &hops_from_source, sizeof(int)*(1), cudaMemcpyHostToDevice); + } + //accumulate_bc<<>>(V,d_delta, d_BC, d_level, src); + + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_delta); + cudaFree(d_sigma); + + } + + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); + + cudaMemcpy( BC, d_BC, sizeof(float)*(V), cudaMemcpyDeviceToHost); +} //end FUN diff --git a/graphcode/generated_cuda/bc_dslV2.h b/graphcode/generated_cuda/bc_dslV2.h new file mode 100644 index 00000000..87a2130b --- /dev/null +++ b/graphcode/generated_cuda/bc_dslV2.h @@ -0,0 +1,52 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#ifndef GENCPP_BC_DSLV2_H +#define GENCPP_BC_DSLV2_H +#include +#include +#include +#include +#include "../graph.hpp" +#include "../libcuda.cuh" +#include + +void Compute_BC(graph& g,float* BC,std::set& sourceSet); + + + +__global__ void fwd_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, float* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished,float* d_BC) { + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= n) return; + if(d_level[v] == *d_hops_from_source) { + for (int edge = d_meta[v]; edge < d_meta[v+1]; edge++) { // FOR NBR ITR + int w = d_data[edge]; + if(d_level[w] == -1) { + d_level[w] = *d_hops_from_source + 1; + *d_finished = false; + } + if(d_level[w] == *d_hops_from_source + 1) { + d_sigma[w] = d_sigma[w] + d_sigma[v]; + + } + } + } // end if d lvl +} // kernel end + +__global__ void back_pass(int n, int* d_meta,int* d_data,int* d_weight, float* d_delta, float* d_sigma, int* d_level, int* d_hops_from_source, bool* d_finished,float* d_BC) { + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= n) return; + auto grid = cooperative_groups::this_grid(); + if(d_level[v] == *d_hops_from_source-1) { + for (int edge = d_meta[v]; edge < d_meta[v+1]; edge++) { // FOR NBR ITR + int w = d_data[edge]; + if(d_level[w] == *d_hops_from_source) { + d_delta[v] = d_delta[v] + (d_sigma[v] / d_sigma[w]) * (1 + d_delta[w]); + + } // end IF + } // end FOR + grid.sync(); // Device-level syncs across all grids. Ref:https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#grid-synchronization-cg + d_BC[v] = d_BC[v] + d_delta[v]; + } // end if d lvl +} // kernel end + + +#endif diff --git a/graphcode/generated_cuda/input.cu b/graphcode/generated_cuda/input.cu new file mode 100644 index 00000000..68e1a538 --- /dev/null +++ b/graphcode/generated_cuda/input.cu @@ -0,0 +1,62 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#include "input.h" + +void test(graph& g) + +{ + // CSR BEGIN + int V = g.num_nodes(); + int E = g.num_edges(); + + printf("#nodes:%d\n",V); + printf("#edges:%d\n",E); + int* edgeLen = g.getEdgeLen(); + + + + + + + + // CSR END + //LAUNCH CONFIG + const unsigned threadsPerBlock = 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; + unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; + + + // TIMER START + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + float milliseconds = 0; + cudaEventRecord(start,0); + + + //DECLAR DEVICE AND HOST vars in params + + //BEGIN DSL PARSING + int* d_prop; + cudaMalloc(&d_prop, sizeof(int)*(V)); + + int x = 0; // asst in .cu + + initKernel <<>>(V,d_prop,(int)10); + + cudaMemcpyToSymbol(::x, &x, sizeof(int), 0, cudaMemcpyHostToDevice); + test_kernel<<>>(V,E,d_prop); + cudaDeviceSynchronize(); + + + + + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_prop); + + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); + +} //end FUN diff --git a/graphcode/generated_cuda/input.h b/graphcode/generated_cuda/input.h new file mode 100644 index 00000000..1a31c12a --- /dev/null +++ b/graphcode/generated_cuda/input.h @@ -0,0 +1,25 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#ifndef GENCPP_INPUT_H +#define GENCPP_INPUT_H +#include +#include +#include +#include +#include "../graph.hpp" +#include "../libcuda.cuh" +#include + +void test(graph& g); + + + +__device__ int x ; // DEVICE ASSTMENT in .h + +__global__ void test_kernel(int V, int E,int* d_prop){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + atomicAdd(& x, (int)d_prop[v]); +} // end KER FUNC + +#endif diff --git a/graphcode/generated_cuda/output_generated.txt b/graphcode/generated_cuda/output_generated.txt new file mode 100644 index 00000000..fcc715b8 --- /dev/null +++ b/graphcode/generated_cuda/output_generated.txt @@ -0,0 +1,10 @@ +0 1458691949 +1 5 +2 0 +3 0 +4 8 +5 9 +6 1 +7 32767 +8 0 +9 0 diff --git a/graphcode/generated_cuda/patil.cu b/graphcode/generated_cuda/patil.cu new file mode 100644 index 00000000..5a14d089 --- /dev/null +++ b/graphcode/generated_cuda/patil.cu @@ -0,0 +1,102 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#include "patil.h" + +void mf(graph& g) + +{ + // CSR BEGIN + int V = g.num_nodes(); + int E = g.num_edges(); + + printf("#nodes:%d\n",V); + printf("#edges:%d\n",E); + int* edgeLen = g.getEdgeLen(); + + int *h_meta; + int *h_data; + + h_meta = (int *)malloc( (V+1)*sizeof(int)); + h_data = (int *)malloc( (E)*sizeof(int)); + + for(int i=0; i<= V; i++) { + int temp; + temp = g.indexofNodes[i]; + h_meta[i] = temp; + } + + for(int i=0; i< E; i++) { + int temp; + temp = g.edgeList[i]; + h_data[i] = temp; + } + + + int* d_meta; + int* d_data; + + cudaMalloc(&d_meta, sizeof(int)*(1+V)); + cudaMalloc(&d_data, sizeof(int)*(E)); + + cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); + cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); + + // CSR END + //LAUNCH CONFIG + const unsigned threadsPerBlock = 512; + unsigned numThreads = (V < threadsPerBlock)? 512: V; + unsigned numBlocks = (V+threadsPerBlock-1)/threadsPerBlock; + + + // TIMER START + cudaEvent_t start, stop; + cudaEventCreate(&start); + cudaEventCreate(&stop); + float milliseconds = 0; + cudaEventRecord(start,0); + + + //DECLAR DEVICE AND HOST vars in params + + //BEGIN DSL PARSING + int* d_indeg; + cudaMalloc(&d_indeg, sizeof(int)*(V)); + + int* d_indeg_prev; + cudaMalloc(&d_indeg_prev, sizeof(int)*(V)); + + int kcore_count = 0; // asst in .cu + + int update_count = 0; // asst in .cu + + initKernel <<>>(V,d_indeg,(int)0); + + initKernel <<>>(V,d_indeg_prev,(int)0); + + mf_kernel<<>>(V,E,d_indeg,d_indeg_prev); + cudaDeviceSynchronize(); + + + + mf_kernel<<>>(V,E,d_meta,d_data,d_indeg,d_indeg_prev); + cudaDeviceSynchronize(); + + + + ; + mf_kernel<<>>(V,E,d_indeg_prev,d_indeg); + cudaDeviceSynchronize(); + + + + + //cudaFree up!! all propVars in this BLOCK! + cudaFree(d_indeg_prev); + cudaFree(d_indeg); + + //TIMER STOP + cudaEventRecord(stop,0); + cudaEventSynchronize(stop); + cudaEventElapsedTime(&milliseconds, start, stop); + printf("GPU Time: %.6f ms\n", milliseconds); + +} //end FUN diff --git a/graphcode/generated_cuda/patil.h b/graphcode/generated_cuda/patil.h new file mode 100644 index 00000000..9b29310b --- /dev/null +++ b/graphcode/generated_cuda/patil.h @@ -0,0 +1,48 @@ +// FOR BC: nvcc bc_dsl_v2.cu -arch=sm_60 -std=c++14 -rdc=true # HW must support CC 6.0+ Pascal or after +#ifndef GENCPP_PATIL_H +#define GENCPP_PATIL_H +#include +#include +#include +#include +#include "../graph.hpp" +#include "../libcuda.cuh" +#include + +void mf(graph& g); + + + +__global__ void mf_kernel(int V, int E,int* d_indeg,int* d_indeg_prev){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + initIndex<<<1,1>>>(V,d_indeg,u,(int)); //InitIndexDevice + initIndex<<<1,1>>>(V,d_indeg_prev,u,(int)d_indeg[u]); //InitIndexDevice +} // end KER FUNC +__global__ void mf_kernel(int V, int E, int* d_meta, int* d_data,int* d_indeg,int* d_indeg_prev){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + if (d_indeg_prev[u] > k){ // if filter begin + for (int edge = d_meta[v]; edge < d_meta[v+1]; edge++) { // FOR NBR ITR + int v = d_data[edge]; + if (d_indeg_prev[v] <= k && d_indeg[u] > k){ // if filter begin + d_indeg[u]-- + } // if filter end + + } // end FOR NBR ITR. TMP FIX! + + } // if filter end +} // end KER FUNC +__global__ void mf_kernel(int V, int E,int* d_indeg_prev,int* d_indeg){ // BEGIN KER FUN via ADDKERNEL + float num_nodes = V; + unsigned v = blockIdx.x * blockDim.x + threadIdx.x; + if(v >= V) return; + if (d_indeg_prev[u] > k){ // if filter begin + initIndex<<<1,1>>>(V,d_indeg,u,(int)0); //InitIndexDevice + + } // if filter end +} // end KER FUNC + +#endif diff --git a/graphcode/generated_cuda/sssp_dslV2.cu b/graphcode/generated_cuda/sssp_dslV2.cu index 3763c5fe..2374c327 100644 --- a/graphcode/generated_cuda/sssp_dslV2.cu +++ b/graphcode/generated_cuda/sssp_dslV2.cu @@ -20,23 +20,23 @@ void Compute_SSSP(graph& g,int* dist,int* wt,int src h_data = (int *)malloc( (E)*sizeof(int)); for(int i=0; i<= V; i++) { - int temp = g.indexofNodes[i]; + int temp; + temp = g.indexofNodes[i]; h_meta[i] = temp; } for(int i=0; i< E; i++) { - int temp = g.edgeList[i]; + int temp; + temp = g.edgeList[i]; h_data[i] = temp; } int* d_meta; int* d_data; - bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); - cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); @@ -68,6 +68,9 @@ void Compute_SSSP(graph& g,int* dist,int* wt,int src bool* d_modified; cudaMalloc(&d_modified, sizeof(bool)*(V)); + bool* d_modified_next; + cudaMalloc(&d_modified_next, sizeof(bool)*(V)); + initKernel <<>>(V,d_dist,(int)INT_MAX); initKernel <<>>(V,d_modified,(bool)false); diff --git a/graphcode/generated_cuda/triangle_counting_dsl.cu b/graphcode/generated_cuda/triangle_counting_dsl.cu index f67570ea..73533f9d 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.cu +++ b/graphcode/generated_cuda/triangle_counting_dsl.cu @@ -19,23 +19,23 @@ void Compute_TC(graph& g) h_data = (int *)malloc( (E)*sizeof(int)); for(int i=0; i<= V; i++) { - int temp = g.indexofNodes[i]; + int temp; + temp = g.indexofNodes[i]; h_meta[i] = temp; } for(int i=0; i< E; i++) { - int temp = g.edgeList[i]; + int temp; + temp = g.edgeList[i]; h_data[i] = temp; } int* d_meta; int* d_data; - bool* d_modified_next; cudaMalloc(&d_meta, sizeof(int)*(1+V)); cudaMalloc(&d_data, sizeof(int)*(E)); - cudaMalloc(&d_modified_next, sizeof(bool)*(V)); cudaMemcpy( d_meta, h_meta, sizeof(int)*(V+1), cudaMemcpyHostToDevice); cudaMemcpy( d_data, h_data, sizeof(int)*(E), cudaMemcpyHostToDevice); diff --git a/graphcode/generated_cuda/triangle_counting_dsl.h b/graphcode/generated_cuda/triangle_counting_dsl.h index a43dc415..94c962fb 100644 --- a/graphcode/generated_cuda/triangle_counting_dsl.h +++ b/graphcode/generated_cuda/triangle_counting_dsl.h @@ -26,7 +26,7 @@ __global__ void Compute_TC_kernel(int V, int E, int* d_meta, int* d_data){ // BE int w = d_data[edge]; if (w > v){ // if filter begin if (findNeighborSorted(u, w, d_meta, d_data)){ // if filter begin - atomicAdd(& triangle_count, (long)1); + atomicAdd((unsigned long long*)& triangle_count, (unsigned long long)1); } // if filter end diff --git a/graphcode/generated_omp/patil.cc b/graphcode/generated_omp/patil.cc new file mode 100644 index 00000000..e69de29b diff --git a/graphcode/generated_omp/patil.h b/graphcode/generated_omp/patil.h new file mode 100644 index 00000000..e69de29b diff --git a/graphcode/generated_openACC/PageRankDSLV2.cpp b/graphcode/generated_openACC/PageRankDSLV2.cpp index 9d33d7dc..bec475dc 100644 --- a/graphcode/generated_openACC/PageRankDSLV2.cpp +++ b/graphcode/generated_openACC/PageRankDSLV2.cpp @@ -3,17 +3,17 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, float* pageRank) { - float num_nodes = (float)g.num_nodes( ); + float numNodes = (float)g.num_nodes( ); float* pageRank_nxt=new float[g.num_nodes()]; #pragma acc data copyin(g) { - #pragma acc data copyout( pageRank[0: g.num_nodes()] ) + #pragma acc data copyout(pageRank[0: g.num_nodes()]) copyin( numNodes) { #pragma acc parallel loop for (int t = 0; t < g.num_nodes(); t ++) { - pageRank[t] = 1 / num_nodes; + pageRank[t] = 1 / numNodes; } } } @@ -22,39 +22,52 @@ void Compute_PR(graph& g,float beta,float delta,int maxIter, float diff = 0.0 ; #pragma acc data copyin(g) { - #pragma acc data copyin( g.srcList[0:g.num_edges()+1], g.indexofNodes[:g.num_nodes()+1], g.rev_indexofNodes[:g.num_nodes()+1] ) copy(pageRank[0 : g.num_nodes()]) copyin(pageRank_nxt[0 : g.num_nodes()]) + #pragma acc data copyin(g.indexofNodes[0:g.num_nodes()+1], g.rev_indexofNodes[0:g.num_nodes()+1], g.srcList[0:g.num_edges()+1]) copyin(beta, delta, maxIter, numNodes, pageRank_nxt[0:g.num_nodes()+1], iterCount) copy(pageRank[0:g.num_nodes()+1]) { do { diff = 0.000000; #pragma acc data copyin(g) { - #pragma acc data copyin( g.indexofNodes[:g.num_nodes()+1], g.edgeList[0:g.num_edges()] ) copy(diff) + #pragma acc data copyout(pageRank_nxt[0:g.num_nodes()+1]) copy(diff) { #pragma acc parallel loop reduction(+ : diff) for (int v = 0; v < g.num_nodes(); v ++) { float sum = 0.000000; for (int edge = g.rev_indexofNodes[v]; edge < g.rev_indexofNodes[v+1]; edge ++) - {int nbr = g.srcList[edge] ; + { + int nbr = g.srcList[edge] ; sum = sum + pageRank[nbr] / (g.indexofNodes[nbr+1]-g.indexofNodes[nbr]); } - float val = (1 - delta) / num_nodes + delta * sum; + float val = (1 - delta) / numNodes + delta * sum; diff = diff + val - pageRank[v]; pageRank_nxt[v] = val; } } } - #pragma acc parallel loop - for (int node = 0; node < g.num_nodes(); node ++) + #pragma acc data copyin(pageRank_nxt[0:g.num_nodes()+1]) copyout(pageRank[0:g.num_nodes()+1]) { - pageRank [node] = pageRank_nxt [node] ; + #pragma acc parallel loop + for (int node = 0; node < g.num_nodes(); node ++) + { + pageRank [node] = pageRank_nxt [node] ; + } } iterCount++; } while((diff > beta) && (iterCount < maxIter)); } } + float* answer=new float[g.num_nodes()]; + #pragma acc data copyin(pageRank[0:g.num_nodes()]) + { + #pragma acc parallel loop + for (int t = 0; t < g.num_nodes(); t++) + { + answer[t] = pageRank[t]; + } + } } diff --git a/graphcode/generated_openACC/bc_dslV2.cpp b/graphcode/generated_openACC/bc_dslV2.cpp index a0172bdd..4454870e 100644 --- a/graphcode/generated_openACC/bc_dslV2.cpp +++ b/graphcode/generated_openACC/bc_dslV2.cpp @@ -2,10 +2,11 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) { + int* edgeWeight = g.getEdgeLen(); // shallow copy of edge weight #pragma acc data copyin(g) { - #pragma acc data copyout( BC[0: g.num_nodes()] ) + #pragma acc data copyout(BC[0: g.num_nodes()]) copyin() { #pragma acc parallel loop for (int t = 0; t < g.num_nodes(); t ++) @@ -19,13 +20,13 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) for(itr=sourceSet.begin();itr!=sourceSet.end();itr++) { int src = *itr; - double* sigma=new double[g.num_nodes()]; + float* sigma=new float[g.num_nodes()]; int* bfsDist=new int[g.num_nodes()]; float* delta=new float[g.num_nodes()]; #pragma acc data copyin(g) { - #pragma acc data copyout( delta[0: g.num_nodes()], bfsDist[0: g.num_nodes()] ) + #pragma acc data copyout(delta[0: g.num_nodes()]) copyin() { #pragma acc parallel loop for (int t = 0; t < g.num_nodes(); t ++) @@ -39,7 +40,7 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) #pragma acc data copyin(g) { - #pragma acc data copyout( sigma[0: g.num_nodes()] ) + #pragma acc data copyout() copyin() { #pragma acc parallel loop for (int t = 0; t < g.num_nodes(); t ++) @@ -49,7 +50,7 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) } } - bfsDist[src] = 0; + bfsDist[src] = -1; sigma[src] = 1; int* level = new int[g.num_nodes()]; int dist_from_source = 0; @@ -61,7 +62,7 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) #pragma acc data copy(level[0:g.num_nodes()]) { #pragma acc parallel loop - for(int int t=0; t& sourceSet) level[src] = 0; #pragma acc data copyin(g) { - #pragma acc copyin(src, offset[0:g.num_nodes()+1], edge_array[0:g.num_edges()]) copy(delta[0:g.num_nodes()], sigma[0:g.num_nodes()], level[0:g.num_nodes()], BC[0:g.num_nodes()]) + #pragma acc data copyin(g.indexofNodes[0:g.num_nodes()+1], g.edgeList[0:g.num_edges()+1], g.edgeWeight[0:g.num_edges()+1]) { do { @@ -85,7 +86,8 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) if(level[v] == dist_from_source) { for (int edge = g.indexofNodes[v]; edge < g.indexofNodes[v+1]; edge ++) - {int w = g.edgeList[edge] ; + { + int w = g.edgeList[edge] ; if(level[w] == -1) { level[w] = dist_from_source + 1; @@ -116,9 +118,11 @@ void Compute_BC(graph& g,float* BC,std::set& sourceSet) if( level[v] == dist_from_source-1 ) { for (int edge = g.indexofNodes[v]; edge < g.indexofNodes[v+1]; edge ++) - {int w = g.edgeList[edge] ; + { + int w = g.edgeList[edge] ; if(level[w] == dist_from_source) { + #pragma acc atomic update delta[v] = delta[v] + (sigma[v] / sigma[w]) * (1 + delta[w]); } } diff --git a/graphcode/generated_openACC/sssp_dslV2.cpp b/graphcode/generated_openACC/sssp_dslV2.cpp index e69de29b..bbde8c79 100644 --- a/graphcode/generated_openACC/sssp_dslV2.cpp +++ b/graphcode/generated_openACC/sssp_dslV2.cpp @@ -0,0 +1,74 @@ +#include"sssp_dslV2.h" + +void Compute_SSSP(graph& g,int* dist,int* wt,int src +) +{ + bool* modified=new bool[g.num_nodes()]; + bool* modified_nxt=new bool[g.num_nodes()]; + + #pragma acc data copyin(g) + { + #pragma acc data copyout() copyin( ) + { + #pragma acc parallel loop + for (int t = 0; t < g.num_nodes(); t ++) + { + dist[t] = INT_MAX; + modified[t] = false; + modified_nxt[t] = false; + } + } + } + + modified[src] = true; + dist[src] = 0; + bool finished = false; + #pragma acc data copyin(g) + { + #pragma acc data copyin(g.indexofNodes[0:g.num_nodes()+1], g.edgeList[0:g.num_edges()+1]) copyin(dist[0:g.num_nodes()+1], wt[0:g.num_edges()+1], modified[0:g.num_nodes()+1], finished) + { + while ( !finished ) + { + finished = true; + #pragma acc data copyin(g) + { + #pragma acc data copyout(modified[0:g.num_nodes()+1], finished) + { + #pragma acc parallel loop + for (int v = 0; v < g.num_nodes(); v ++) + { + if (modified[v] == true ) + { + for (int edge = g.indexofNodes[v]; edge < g.indexofNodes[v+1]; edge ++) + { + int nbr = g.edgeList[edge] ; + int e = edge; + int dist_new = dist[v] + wt[e]; + bool modified_new = true; + if(dist[nbr] > dist_new) + { + int oldValue = dist[nbr]; + #pragma acc atomic write + dist[nbr]= dist_new; + + modified_nxt[nbr] = modified_new; + #pragma acc atomic write + finished = false; + } + } + } + } + + #pragma acc parallel loop + for (int v = 0; v < g.num_nodes(); v ++) + { + modified[v] = modified_nxt[v] ; + modified_nxt[v] = false ; + } + } + } + } + } + } + +} diff --git a/graphcode/generated_openACC/sssp_dslV2.h b/graphcode/generated_openACC/sssp_dslV2.h index e69de29b..3ae20c36 100644 --- a/graphcode/generated_openACC/sssp_dslV2.h +++ b/graphcode/generated_openACC/sssp_dslV2.h @@ -0,0 +1,11 @@ +#ifndef GENCPP_SSSP_DSLV2_H +#define GENCPP_SSSP_DSLV2_H +#include +#include +#include +#include"../graph.hpp" + +void Compute_SSSP(graph& g,int* dist,int* wt,int src +); + +#endif diff --git a/graphcode/generated_openACC/test1.cpp b/graphcode/generated_openACC/test1.cpp new file mode 100644 index 00000000..984d4e70 --- /dev/null +++ b/graphcode/generated_openACC/test1.cpp @@ -0,0 +1,25 @@ +#include"test1.h" + +void test1(graph& gg) +{ + int var_decl_outside_paralel_used_inside_parallel_only = 1010; + int var_decl_outside_parallel_used_outside_parallel_only = 8438; + int var_decl_outside_parallel_used_in_and_out_of_parallel = 483; + #pragma acc data copyin(gg) + { + #pragma acc data copy(var_decl_outside_parallel_used_in_and_out_of_parallel) + { + #pragma acc parallel loop + for (int v = 0; v < gg.num_nodes(); v ++) + { + var_decl_outside_parallel_used_inside_parallel_only++; + var_decl_outside_parallel_used_in_and_out_of_parallel++; + int var_decl_in_parallel_used_inside_parallel_only = 1010; + var_decl_in_parallel_used_inside_parallel_only++; + } + } + } + var_decl_outside_parallel_used_outside_parallel_only--; + var_decl_outside_parallel_used_in_and_out_of_parallel++; + +} diff --git a/graphcode/generated_openACC/test1.h b/graphcode/generated_openACC/test1.h new file mode 100644 index 00000000..ec9199a5 --- /dev/null +++ b/graphcode/generated_openACC/test1.h @@ -0,0 +1,10 @@ +#ifndef GENCPP_TEST1_H +#define GENCPP_TEST1_H +#include +#include +#include +#include"../graph.hpp" + +void test1(graph& gg); + +#endif diff --git a/graphcode/generated_openACC/triangle_counting_dsl.cpp b/graphcode/generated_openACC/triangle_counting_dsl.cpp index dced02a0..f8c099e9 100644 --- a/graphcode/generated_openACC/triangle_counting_dsl.cpp +++ b/graphcode/generated_openACC/triangle_counting_dsl.cpp @@ -1,21 +1,23 @@ #include"triangle_counting_dsl.h" -void Compute_TC(graph& g) +auto Compute_TC(graph& g) { long triangle_count = 0; #pragma acc data copyin(g) { - #pragma acc data copyin( g.indexofNodes[:g.num_nodes()+1], g.edgeList[0:g.num_edges()] ) copy(triangle_count) + #pragma acc data copyin(g.indexofNodes[0:g.num_nodes()+1], g.edgeList[0:g.num_edges()+1]) copy(triangle_count) { #pragma acc parallel loop reduction(+ : triangle_count) for (int v = 0; v < g.num_nodes(); v ++) { for (int edge = g.indexofNodes[v]; edge < g.indexofNodes[v+1]; edge ++) - {int u = g.edgeList[edge] ; + { + int u = g.edgeList[edge] ; if (u < v ) { for (int edge = g.indexofNodes[v]; edge < g.indexofNodes[v+1]; edge ++) - {int w = g.edgeList[edge] ; + { + int w = g.edgeList[edge] ; if (w > v ) { if (g.check_if_nbr(u, w) ) @@ -29,5 +31,6 @@ void Compute_TC(graph& g) } } } + return triangle_count; } diff --git a/graphcode/generated_openACC/triangle_counting_dsl.h b/graphcode/generated_openACC/triangle_counting_dsl.h index d2e91c25..5b77b4a2 100644 --- a/graphcode/generated_openACC/triangle_counting_dsl.h +++ b/graphcode/generated_openACC/triangle_counting_dsl.h @@ -5,6 +5,6 @@ #include #include"../graph.hpp" -void Compute_TC(graph& g); +auto Compute_TC(graph& g); #endif diff --git a/graphcode/graph.hpp b/graphcode/graph.hpp index 9aa771f1..b57481c3 100644 --- a/graphcode/graph.hpp +++ b/graphcode/graph.hpp @@ -395,14 +395,14 @@ class graph if(destination>nodesTotal) nodesTotal=destination; + ss>>weightVal; //for edgelists having weight too. e.source=source; e.destination=destination; - e.weight=1; - + e.weight=weightVal; + edges[source].push_back(e); graph_edge.push_back(e); - ss>>weightVal; //for edgelists having weight too. } diff --git a/graphcode/staticDSLCodes/PageRankDSLV2 b/graphcode/staticDSLCodes/PageRankDSLV2 index 64dea526..01c2205f 100644 --- a/graphcode/staticDSLCodes/PageRankDSLV2 +++ b/graphcode/staticDSLCodes/PageRankDSLV2 @@ -1,8 +1,8 @@ function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode pageRank) { - float num_nodes = g.num_nodes(); + float numNodes = g.num_nodes(); propNode pageRank_nxt; - g.attachNodeProperty(pageRank=1/num_nodes); + g.attachNodeProperty(pageRank=1/numNodes); int iterCount=0; float diff; @@ -19,10 +19,10 @@ function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode p sum=sum+nbr.pageRank/g.count_outNbrs(nbr); } - float val=(1-delta)/num_nodes+delta*sum; + float val=(1-delta)/numNodes+delta*sum; diff+=val-v.pageRank; v.pageRank_nxt=val; - + } pageRank = pageRank_nxt ; @@ -31,4 +31,5 @@ function Compute_PR(Graph g,float beta,float delta,int maxIter,propNode p } while((diff>beta)&&(iterCount answer = pageRank; } diff --git a/src/Makefile b/src/Makefile index d3d91456..041125f4 100644 --- a/src/Makefile +++ b/src/Makefile @@ -28,7 +28,7 @@ bin/cu_dsl_cpp_generator.o: backends/backend_cuda/dsl_cpp_generator.cpp backends $(CC) $(CFLAGS) -c backends/backend_cuda/dsl_cpp_generator.cpp -o bin/cu_dsl_cpp_generator.o #openACC -bin/ac_dsl_cpp_generator.o: backends/backend_openACC/dsl_cpp_generator.cpp backends/dslCodePad.h +bin/ac_dsl_cpp_generator.o: backends/backend_openACC/dsl_cpp_generator.cpp backends/dslCodePad.h backends/backend_openACC/getMetaDataUsed.cpp $(CC) $(CFLAGS) -c backends/backend_openACC/dsl_cpp_generator.cpp -o bin/ac_dsl_cpp_generator.o #omp diff --git a/src/analyser/blockVars/NodeBlockData.cpp b/src/analyser/blockVars/NodeBlockData.cpp index d5e7e000..991e5508 100644 --- a/src/analyser/blockVars/NodeBlockData.cpp +++ b/src/analyser/blockVars/NodeBlockData.cpp @@ -143,20 +143,24 @@ set ASTNodeBlock::getSucc() { } void ASTNodeBlock::addUse(Identifier* id) { + if (!id->getSymbolInfo()) return; use.insert(id->getSymbolInfo()); } void ASTNodeBlock::addDef(Identifier* id) { + if (!id->getSymbolInfo()) return; def.insert(id->getSymbolInfo()); } void ASTNodeBlock::addIn(Identifier* id) { + if (!id->getSymbolInfo()) return; in.insert(id->getSymbolInfo()); } void ASTNodeBlock::addIn(set ids) { for(TableEntry* id : ids) - in.insert(id); + if (id != NULL) + in.insert(id); } void ASTNodeBlock::removeIn(Identifier* id) { @@ -169,6 +173,7 @@ void ASTNodeBlock::removeIn(set ids) { } void ASTNodeBlock::addOut(Identifier* id) { + if (!id->getSymbolInfo()) return; out.insert(id->getSymbolInfo()); } diff --git a/src/analyser/blockVars/analyserUtil.cpp b/src/analyser/blockVars/analyserUtil.cpp index 0c99041c..8eb0ca0f 100644 --- a/src/analyser/blockVars/analyserUtil.cpp +++ b/src/analyser/blockVars/analyserUtil.cpp @@ -12,6 +12,8 @@ usedVariables_t::usedVariables_t() {} void usedVariables_t::addVariable(Identifier *iden, int type) { + if (iden->getSymbolInfo() == nullptr) + return; if (type & 1) readVars.insert({iden->getSymbolInfo(), iden}); if (type & 2) diff --git a/src/analyser/blockVars/blockVarsAnalyser.cpp b/src/analyser/blockVars/blockVarsAnalyser.cpp index 01d51322..2ce916d0 100644 --- a/src/analyser/blockVars/blockVarsAnalyser.cpp +++ b/src/analyser/blockVars/blockVarsAnalyser.cpp @@ -80,14 +80,14 @@ void blockVarsAnalyser::printBlockNodes() else toString(blockNode->getNode()->getTypeofNode()); cout << endl; - for (TableEntry* id : blockNode->getDef()) - cout << "Def: " << id->getId()->getIdentifier() << endl; - for (TableEntry* id : blockNode->getUse()) - cout << "Use: " << id->getId()->getIdentifier() << endl; - for (TableEntry* id : blockNode->getIn()) - cout << "In: " << id->getId()->getIdentifier() << endl; - for (TableEntry* id : blockNode->getOut()) - cout << "Out: " << id->getId()->getIdentifier() << endl; + for (TableEntry* te : blockNode->getDef()) + cout << "Def: " << te->getId()->getIdentifier() << endl; + for (TableEntry* te : blockNode->getUse()) + cout << "Use: " << te->getId()->getIdentifier() << endl; + for (TableEntry* te : blockNode->getIn()) + cout << "In: " << te->getId()->getIdentifier() << endl; + for (TableEntry* te : blockNode->getOut()) + cout << "Out: " << te->getId()->getIdentifier() << endl; for (ASTNodeBlock* succ : blockNode->getSucc()) { cout << "Succ: "; @@ -149,8 +149,7 @@ void blockVarsAnalyser::analyseFunc(ASTNode* proc) addBlockNode(func, blockNode); analyseBlockNodes(); - - printBlockNodes(); + // printBlockNodes(); } void blockVarsAnalyser::analyse(list functions) diff --git a/src/analyser/blockVars/blockVarsAnalyser.h b/src/analyser/blockVars/blockVarsAnalyser.h index 224a38c4..ebbb59f3 100644 --- a/src/analyser/blockVars/blockVarsAnalyser.h +++ b/src/analyser/blockVars/blockVarsAnalyser.h @@ -85,25 +85,11 @@ class blockVarsAnalyser void toString(NODETYPE); // Prints the type of the node verbose void printBlockNodes(); // Prints the block nodes + // Performs liveness analysis on the block nodes void analyse(list); void analyseFunc(ASTNode* func); void analyseBlockNodes(); - void analyseStatement(statement*); - void analyseBlock(blockStatement*); - void analyseUnary(unary_stmt*); - void analyseIfElse(ifStmt*); - void analyseAssignment(assignment*); - void analyseDeclaration(declaration*); - void analyseForAll(forallStmt*); - void analyseWhile(whileStmt*); - void analyseDoWhile(dowhileStmt*); - void analyseFor(forallStmt*); - void analyseFixedPoint(fixedPointStmt*); - void analyseProcCall(proc_callStmt*); - void analyseReduction(reductionCallStmt*); - void analyseItrBFS(iterateBFS*); - // Initialise the basic block node ASTNodeBlock* initStatement(statement*, ASTNodeBlock*); ASTNodeBlock* initBlock(blockStatement*, ASTNodeBlock*); @@ -114,11 +100,11 @@ class blockVarsAnalyser ASTNodeBlock* initForAll(forallStmt*, ASTNodeBlock*); ASTNodeBlock* initWhile(whileStmt*, ASTNodeBlock*); ASTNodeBlock* initDoWhile(dowhileStmt*, ASTNodeBlock*); - ASTNodeBlock* initFor(forallStmt*, ASTNodeBlock*); ASTNodeBlock* initFixedPoint(fixedPointStmt*, ASTNodeBlock*); ASTNodeBlock* initProcCall(proc_callStmt*, ASTNodeBlock*); ASTNodeBlock* initReduction(reductionCallStmt*, ASTNodeBlock*); ASTNodeBlock* initItrBFS(iterateBFS*, ASTNodeBlock*); + ASTNodeBlock* initItrRBFS(iterateReverseBFS*, ASTNodeBlock*); ASTNodeBlock* initReturn(returnStmt*, ASTNodeBlock*); //Returns the used variables in each statment @@ -135,14 +121,21 @@ class blockVarsAnalyser usedVariables_t getVarsReduction(reductionCallStmt*); usedVariables_t getVarsFixedPoint(fixedPointStmt*); usedVariables_t getVarsBFS(iterateBFS*); + usedVariables_t getVarsRBFS(iterateReverseBFS*); usedVariables_t getVarsProcCall(proc_callStmt*); usedVariables_t getVarsExprProcCall(proc_callExpr*); - void setVarsInParallelStatment(statement*); // Sets the flag of tableentry of the variables in the parallel section in the statement - void setVarsInParallelBlock(blockStatement*); // Sets the flag of tableentry of the variables in the parallel section in the block - void setVarsInParallelForAll(forallStmt*); // Sets the flag of tableentry of the variables in the parallel section in the forall - void setVarsInParallelBFS(iterateBFS*); // Sets the flag of tableentry of the variables in the parallel section in the BFS - void setVarsInParallelAssign(assignment*); // Sets the flag of tableentry of the variables in the parallel section in the assignment + // Sets the flag of tableentry of the variables in the parallel section of the statement + void setVarsInParallelStatment(statement*); + void setVarsInParallelBlock(blockStatement*); + void setVarsInParallelForAll(forallStmt*); + void setVarsInParallelBFS(iterateBFS*); + void setVarsInParallelAssign(assignment*); + void setVarsInParallelDeclaration(declaration*); + void setVarsInParallelProcCall(proc_callStmt*); + void setVarsInParallelFixedPoint(fixedPointStmt*); + void setVarsInParallelDoWhile(dowhileStmt*); + void setVarsInParallelWhile(whileStmt*); }; #endif \ No newline at end of file diff --git a/src/analyser/blockVars/blockVarsInit.cpp b/src/analyser/blockVars/blockVarsInit.cpp index 4319b4d2..aef60a0f 100644 --- a/src/analyser/blockVars/blockVarsInit.cpp +++ b/src/analyser/blockVars/blockVarsInit.cpp @@ -136,20 +136,17 @@ ASTNodeBlock* blockVarsAnalyser::initForAll(forallStmt* forAllStmt, ASTNodeBlock forAllEndNode->addSucc(blockNode); blockNodes.push_back(forAllEndNode); - // Add this node to the list of block nodes - addBlockNode(forAllStmt->getBody(), forAllCondNode); - // Add the forall statement as a succ of the new cond block ASTNodeBlock* forAllBodyNode = initStatement(forAllStmt->getBody(), forAllEndNode); forAllCondNode->addSucc(forAllBodyNode); + // Add this node to the list of block nodes + addBlockNode(forAllStmt->getBody(), forAllCondNode); + // Add the cond block as a succ for the forall statement start block forAllStartNode->addSucc(forAllCondNode); blockNodes.push_back(forAllStartNode); - // Add the forall statement as a succ of the new block - forAllCondNode->addSucc(initStatement(forAllStmt->getBody(), forAllCondNode)); - // Map the forall statement's start and end block addBlockNode(forAllStmt, forAllStartNode, forAllEndNode); return forAllCondNode; @@ -201,13 +198,13 @@ ASTNodeBlock* blockVarsAnalyser::initWhile(whileStmt* whileStmt, ASTNodeBlock* b whileEndNode->addSucc(blockNode); blockNodes.push_back(whileEndNode); - // Add the while statement to the list of block nodes - addBlockNode(whileStmt->getCondition(), whileCondNode); - // Add the while statement as a succ of the new block ASTNodeBlock* whileBodyNode = initStatement(whileStmt->getBody(), whileEndNode); whileCondNode->addSucc(whileBodyNode); + // Add the while statement to the list of block nodes + addBlockNode(whileStmt->getCondition(), whileCondNode); + // Add the cond block as a succ of the while statement start block whileStartNode->addSucc(whileCondNode); blockNodes.push_back(whileStartNode); @@ -299,7 +296,6 @@ ASTNodeBlock* blockVarsAnalyser::initFixedPoint(fixedPointStmt* fixedPointStmt, // Map the fixed point statement's start and end block addBlockNode(fixedPointStmt, fixedPointStartNode, fixedPointEndNode); - return fixedPointStartNode; } @@ -320,25 +316,97 @@ ASTNodeBlock* blockVarsAnalyser::initReduction(reductionCallStmt* reductionCallS return reductionNode; } -/* TODO: This function is not properly implemented */ ASTNodeBlock* blockVarsAnalyser::initItrBFS(iterateBFS* iterateBFS, ASTNodeBlock* blockNode) { + // Create a new block node for start and enc block of the iterateBFS + iterateReverseBFS statement + ASTNodeBlock* itr_BFS_RBFS_Start = new ASTNodeBlock(); + ASTNodeBlock* itr_BFS_RBFS_End = new ASTNodeBlock(); + + // Create a new block node for start and end block of the iterateBFS statement + ASTNodeBlock* iterateBFSStartNode = new ASTNodeBlock(); + ASTNodeBlock* iterateBFSEndNode = new ASTNodeBlock(); + + // Add the start of the iterateBFS statement as a succ of the start block + itr_BFS_RBFS_Start->addSucc(iterateBFSStartNode); + // Create a new block node for the iterateBFS statement - ASTNodeBlock* iterateBFSNode = new ASTNodeBlock(iterateBFS); + ASTNodeBlock* iterateBFSCondNode = new ASTNodeBlock(iterateBFS->getIteratorNode()); // it acts like a do while loop // Add the used and def variables to use set of the new block - usedVariables_t usedVars = getVarsStatement(iterateBFS); - iterateBFSNode->addVars(usedVars); + /* No used Variables in the condnode */ // Add the passed block as succ of the new block - iterateBFSNode->addSucc(blockNode); + itr_BFS_RBFS_End->addSucc(blockNode); - // Add the iterateBFS statement as a succ of the new block - iterateBFSNode->addSucc(initStatement(iterateBFS->getBody(), blockNode)); + // Add the outer end block to the list of block nodes + blockNodes.push_back(itr_BFS_RBFS_End); + + // If RBFS is present, add it as a succ of the iterateBFS end block + if(iterateBFS->getRBFS() != NULL) + iterateBFSEndNode->addSucc(initItrRBFS(iterateBFS->getRBFS(), itr_BFS_RBFS_End)); + else + iterateBFSEndNode->addSucc(itr_BFS_RBFS_End); + blockNodes.push_back(iterateBFSEndNode); + + // Add the iterateBFS end node as a succ of the iterateBFS cond block + iterateBFSCondNode->addSucc(iterateBFSEndNode); + blockNodes.push_back(iterateBFSCondNode); + + // Add the iterateBFS statement as a succ of the iterateBFS start block and cond block + ASTNodeBlock* iterateBFSBodyStartNode = initStatement(iterateBFS->getBody(), iterateBFSCondNode); + iterateBFSCondNode->addSucc(iterateBFSBodyStartNode); + iterateBFSStartNode->addSucc(iterateBFSBodyStartNode); + + // Add the iterateBFS start block to the list of block nodes + blockNodes.push_back(iterateBFSStartNode); + + // Map the iterateBFS statement's start and end block + addBlockNode(iterateBFS->getIteratorNode(), iterateBFSStartNode, iterateBFSEndNode); + + // Add the iterateBFS statement as a succ of the outer start block + itr_BFS_RBFS_Start->addSucc(iterateBFSStartNode); + blockNodes.push_back(itr_BFS_RBFS_Start); + + // Map the outer iterateBFS statement's start and end block + addBlockNode(iterateBFS, itr_BFS_RBFS_Start, itr_BFS_RBFS_End); + return itr_BFS_RBFS_Start; +} + +ASTNodeBlock* blockVarsAnalyser::initItrRBFS(iterateReverseBFS* iterateRBFS, ASTNodeBlock* blockNode) +{ + // Create a new block node for start and end block of the iterateReverseBFS statement + ASTNodeBlock* iterateRBFSStartNode = new ASTNodeBlock(); + ASTNodeBlock* iterateRBFSEndNode = new ASTNodeBlock(); + + // Create a new block node for the iterateReverseBFS statement + ASTNodeBlock* iterateRBFSCondNode = new ASTNodeBlock(iterateRBFS->getBFSFilter()); + + // Add the used and def variables to use set of the new block + usedVariables_t usedVars = getVarsExpr(iterateRBFS->getBFSFilter()); + iterateRBFSCondNode->addVars(usedVars); + + // Add the end block as succ of the new block + iterateRBFSCondNode->addSucc(iterateRBFSEndNode); + + // Add the passed block as succ of the end block + iterateRBFSEndNode->addSucc(blockNode); + blockNodes.push_back(iterateRBFSEndNode); + + // Add the iterateRBFS statement as a succ of the new block + ASTNodeBlock* iterateRBFSBodyNode = initStatement(iterateRBFS->getBody(), iterateRBFSEndNode); + iterateRBFSCondNode->addSucc(iterateRBFSBodyNode); + + // Add the iterateRBFS statement to the list of block nodes + addBlockNode(iterateRBFS->getBFSFilter(), iterateRBFSCondNode); + + // Add the cond block as a succ of the iterateRBFS statement start block + iterateRBFSStartNode->addSucc(iterateRBFSCondNode); + blockNodes.push_back(iterateRBFSStartNode); + + // Map the iterateRBFS statement's start and end block + addBlockNode(iterateRBFS, iterateRBFSStartNode, iterateRBFSEndNode); + return iterateRBFSStartNode; - // Add this node to the list of block nodes - addBlockNode(iterateBFS, iterateBFSNode); - return iterateBFSNode; } ASTNodeBlock* blockVarsAnalyser::initReturn(returnStmt* returnStmt, ASTNodeBlock* blockNode) diff --git a/src/analyser/blockVars/getUsedVars.cpp b/src/analyser/blockVars/getUsedVars.cpp index cd5b1b8b..70949940 100644 --- a/src/analyser/blockVars/getUsedVars.cpp +++ b/src/analyser/blockVars/getUsedVars.cpp @@ -125,12 +125,15 @@ usedVariables_t blockVarsAnalyser::getVarsUnary(unary_stmt *stmt) usedVariables_t blockVarsAnalyser::getVarsBFS(iterateBFS *stmt) { usedVariables_t currVars = getVarsStatement(stmt->getBody()); - if (stmt->getRBFS() != nullptr) + return currVars; +} + +usedVariables_t blockVarsAnalyser::getVarsRBFS(iterateReverseBFS *stmt) +{ + usedVariables_t currVars = getVarsStatement(stmt->getBody()); + if(stmt->hasFilter()) { - iterateReverseBFS *RBFSstmt = stmt->getRBFS(); - if (RBFSstmt->getBFSFilter() != nullptr) - currVars.merge(getVarsExpr(RBFSstmt->getBFSFilter())); - currVars.merge(getVarsStatement(RBFSstmt->getBody())); + currVars.merge(getVarsExpr(stmt->getBFSFilter())); } return currVars; @@ -342,6 +345,9 @@ usedVariables_t blockVarsAnalyser::getVarsStatement(statement *stmt) case NODE_ITRBFS: return getVarsBFS((iterateBFS *)stmt); + case NODE_ITRRBFS: + return getVarsRBFS((iterateReverseBFS *)stmt); + case NODE_FIXEDPTSTMT: return getVarsFixedPoint((fixedPointStmt *)stmt); diff --git a/src/analyser/blockVars/setVarsInParallel.cpp b/src/analyser/blockVars/setVarsInParallel.cpp index 52c6e268..594c7779 100644 --- a/src/analyser/blockVars/setVarsInParallel.cpp +++ b/src/analyser/blockVars/setVarsInParallel.cpp @@ -8,8 +8,16 @@ void blockVarsAnalyser::setVarsInParallelStatment(statement* stmt) setVarsInParallelBlock((blockStatement*)stmt); break; case NODE_ASSIGN: setVarsInParallelAssign((assignment*)stmt); break; + case NODE_DECL: + setVarsInParallelDeclaration((declaration*)stmt); break; case NODE_FORALLSTMT: setVarsInParallelForAll((forallStmt*)stmt); break; + case NODE_DOWHILESTMT: + setVarsInParallelDoWhile((dowhileStmt*)stmt); break; + case NODE_WHILESTMT: + setVarsInParallelWhile((whileStmt*)stmt); break; + case NODE_FIXEDPTSTMT: + setVarsInParallelFixedPoint((fixedPointStmt*)stmt); break; case NODE_ITRBFS: setVarsInParallelBFS((iterateBFS*)stmt); break; default: @@ -44,6 +52,28 @@ void blockVarsAnalyser::setVarsInParallelAssign(assignment* assign) } } +void blockVarsAnalyser::setVarsInParallelDeclaration(declaration* declStmt) +{ + // Check if the declaration is a parallel declaration initialisation + if(!declStmt->isInitialized()) return; + Type* type=declStmt->getType(); + if(type->isPropType()) + { + if(type->getInnerTargetType()->isPrimitiveType()) + { + if (declStmt->getExpressionAssigned()->getExpressionFamily() == EXPR_ID && declStmt->getExpressionAssigned()->getId()->getSymbolInfo()->getType()->gettypeId() == type->gettypeId()) + { + // get propid + Identifier* lhs = declStmt->getdeclId(); + Identifier* rhs = declStmt->getExpressionAssigned()->getId(); + // Set lhs and rhs identifiers as parallel + lhs->getSymbolInfo()->setInParallelSection(true); + rhs->getSymbolInfo()->setInParallelSection(true); + } + } + } +} + void blockVarsAnalyser::setVarsInParallelForAll(forallStmt* forall) { // Check if the statement is a forall @@ -53,8 +83,37 @@ void blockVarsAnalyser::setVarsInParallelForAll(forallStmt* forall) // get used variables in the forall body usedVariables_t usedVars = getVarsStatement(forall->getBody()); // Set the flag of the tableentry of the variables in the parallel section - for (auto var: usedVars.getVariables()) + for (auto var: usedVars.getVariables()) { var->getSymbolInfo()->setInParallelSection(true); + } +} + +void blockVarsAnalyser::setVarsInParallelDoWhile(dowhileStmt* dowhile) +{ + // get used variables in the dowhile body + setVarsInParallelStatment(dowhile->getBody()); +} + +void blockVarsAnalyser::setVarsInParallelWhile(whileStmt* whileStmt) +{ + // get used variables in the while body + setVarsInParallelStatment(whileStmt->getBody()); +} + +void blockVarsAnalyser::setVarsInParallelFixedPoint(fixedPointStmt* fixedpoint) +{ + // get used variables in the fixedpoint body + setVarsInParallelStatment(fixedpoint->getBody()); +} + +void blockVarsAnalyser::setVarsInParallelProcCall(proc_callStmt* proc) +{ + // get used variables in the procedure call + usedVariables_t usedVars = getVarsProcCall(proc); + // Set the flag of the tableentry of the variables in the parallel section + for (auto var: usedVars.getVariables()) { + var->getSymbolInfo()->setInParallelSection(true); + } } void blockVarsAnalyser::setVarsInParallelBFS(iterateBFS* bfs) @@ -73,6 +132,6 @@ void blockVarsAnalyser::setVarsInParallelBFS(iterateBFS* bfs) } // Set the flag of the tableentry of the variables in the parallel section - for (auto var: usedVars.getVariables()) + for (auto var: usedVars.getVariables()) var->getSymbolInfo()->setInParallelSection(true); } \ No newline at end of file diff --git a/src/ast/ASTNodeTypes.hpp b/src/ast/ASTNodeTypes.hpp index 3f96fd66..65b4c66d 100644 --- a/src/ast/ASTNodeTypes.hpp +++ b/src/ast/ASTNodeTypes.hpp @@ -1805,6 +1805,8 @@ class fixedPointStmt:public statement iterateReverseBFS* revBFS; list usedVars; + + MetaDataUsed metadata; public: iterateBFS() @@ -1865,9 +1867,55 @@ class fixedPointStmt:public statement return nodeCall; } - void initUsedVariable(list usedVars){ - this->usedVars = usedVars; - } + void initUsedVariable(list usedVars) + { + this->usedVars = usedVars; + } + + bool getIsMetaUsed() { + return metadata.isMetaUsed; + } + + void setIsMetaUsed() { + metadata.isMetaUsed = true; + } + + bool getIsDataUsed() { + return metadata.isDataUsed; + } + + void setIsDataUsed() { + metadata.isDataUsed = true; + } + + bool getIsSrcUsed() { + return metadata.isSrcUsed; + } + + void setIsSrcUsed() { + metadata.isSrcUsed = true; + } + + bool getIsWeightUsed() { + return metadata.isWeightUsed; + } + + void setIsWeightUsed() { + metadata.isWeightUsed = true; + } + + bool getIsRevMetaUsed() { + return metadata.isRevMetaUsed; + } + + void setIsRevMetaUsed() { + metadata.isRevMetaUsed = true; + } + + MetaDataUsed getMetaDataUsed() { + return metadata; + } + }; class unary_stmt:public statement diff --git a/src/ast/MetaDataUsed.hpp b/src/ast/MetaDataUsed.hpp index 0a0a8776..53c8fc0e 100644 --- a/src/ast/MetaDataUsed.hpp +++ b/src/ast/MetaDataUsed.hpp @@ -3,7 +3,7 @@ #include -class MetaDataUsed +struct MetaDataUsed { public: bool isMetaUsed; // if d_meta is used in the ASTNode diff --git a/src/backends/backend_cuda/dsl_cpp_generator.cpp b/src/backends/backend_cuda/dsl_cpp_generator.cpp index f9c4b7a6..572eb9ac 100644 --- a/src/backends/backend_cuda/dsl_cpp_generator.cpp +++ b/src/backends/backend_cuda/dsl_cpp_generator.cpp @@ -2051,7 +2051,8 @@ void dsl_cpp_generator::generateVariableDecl(declaration* declStmt, main.pushString(convertToCppType(innerType)); //convertToCppType need to be modified. main.pushString("*"); main.space(); - sprintf(strBuffer,"%s_nxt",declStmt->getdeclId()->getIdentifier()); + main.pushString("d_"); + sprintf(strBuffer,"%s_next",declStmt->getdeclId()->getIdentifier()); main.pushString(strBuffer); main.pushstr_newL(";"); generateCudaMalloc(type, strBuffer); diff --git a/src/backends/backend_cuda/getUsedVars.cpp b/src/backends/backend_cuda/getUsedVars.cpp index a84fed45..eb5cd4fa 100644 --- a/src/backends/backend_cuda/getUsedVars.cpp +++ b/src/backends/backend_cuda/getUsedVars.cpp @@ -85,16 +85,15 @@ usedVariables getVarsIf(ifStmt *stmt) return currVars; } -/* + usedVariables getVarsFixedPoint(fixedPointStmt *stmt) { usedVariables currVars = getVarsExpr(stmt->getDependentProp()); - currVars.addVariable(stmt->getFixedPointId()); + currVars.addVariable(stmt->getFixedPointId(), READ); currVars.merge(getVarsStatement(stmt->getBody())); return currVars; } // TODO : Handle this atlast -*/ usedVariables getVarsReduction(reductionCallStmt *stmt) { @@ -127,16 +126,24 @@ usedVariables getVarsReduction(reductionCallStmt *stmt) { for(ASTNode* node: stmt->getLeftList()) { + Identifier* affectedId = NULL; if(node->getTypeofNode() == NODE_ID) { Identifier* iden = (Identifier*)node; currVars.addVariable(iden, WRITE); + affectedId = iden; } else if(node->getTypeofNode() == NODE_PROPACCESS) { PropAccess* propId = (PropAccess*)node; currVars.addVariable(propId->getIdentifier1(), READ); currVars.addVariable(propId->getIdentifier2(), WRITE); + affectedId = propId->getIdentifier2(); + } + + if(affectedId->getSymbolInfo()->getId()->get_fp_association()) { + Identifier* fpId = affectedId->getSymbolInfo()->getId()->get_fpIdNode(); + currVars.addVariable(fpId, WRITE); } } getVarsReductionCall(stmt->getReducCall()); @@ -326,10 +333,10 @@ usedVariables getVarsStatement(statement *stmt) return getVarsReduction((reductionCallStmt *)stmt); /*case NODE_ITRBFS: - return getVarsBFS((iterateBFS *)stmt); + return getVarsBFS((iterateBFS *)stmt);*/ - case NODE_FIXEDPTSTMT: - return getVarsFixedPoint((fixedPointStmt *)stmt);*/ + case NODE_FIXEDPTSTMT: + return getVarsFixedPoint((fixedPointStmt *)stmt); default: ; // added to fix warning! } diff --git a/src/backends/backend_openACC/dsl_cpp_generator.cpp b/src/backends/backend_openACC/dsl_cpp_generator.cpp index d9422c57..72bbf831 100644 --- a/src/backends/backend_openACC/dsl_cpp_generator.cpp +++ b/src/backends/backend_openACC/dsl_cpp_generator.cpp @@ -109,7 +109,7 @@ void add_InitialDeclarations(dslCodePad* main,iterateBFS* bfsAbstraction) main->pushstr_newL(strBuffer); main->pushstr_newL("{"); main->pushstr_newL("#pragma acc parallel loop"); - sprintf(strBuffer, "for(int int t=0; t<%s.%s(); t++)", graphId, "num_nodes"); + sprintf(strBuffer, "for(int t=0; t<%s.%s(); t++)", graphId, "num_nodes"); main->pushstr_newL(strBuffer); main->pushstr_newL("{"); main->pushstr_newL("level[t] = -1;"); @@ -228,9 +228,12 @@ void add_InitialDeclarations(dslCodePad* main,iterateBFS* bfsAbstraction) main.pushstr_newL(strBuffer); main.pushstr_newL("{"); //Opening bracket for data copy (g) - //-------------------DATA COPY PRAGMA FOR BC ALGO ONLY (NEED TO BE ANALYSED AND GENERATED)------------------------------------ - sprintf(strBuffer, "#pragma acc copyin(src, offset[0:%s.num_nodes()+1], edge_array[0:%s.num_edges()]) copy(delta[0:%s.num_nodes()], sigma[0:%s.num_nodes()], level[0:%s.num_nodes()], BC[0:%s.num_nodes()])", graphId, graphId, graphId, graphId, graphId, graphId); - main.pushstr_newL(strBuffer); + // Analyzed and Generated Data Copy Pragmas + sprintf(strBuffer, "#pragma acc data"); + main.pushstr_space(strBuffer); + generateDataDirectiveForStatment(bfsAbstraction); + // sprintf(strBuffer, "#pragma acc copyin(src, offset[0:%s.num_nodes()+1], edge_array[0:%s.num_edges()]) copy(delta[0:%s.num_nodes()], sigma[0:%s.num_nodes()], level[0:%s.num_nodes()], BC[0:%s.num_nodes()])", graphId, graphId, graphId, graphId, graphId, graphId); + // main.pushstr_newL(strBuffer); main.pushstr_newL("{"); //Open bracket for data copy around BFS AND RBFS //------------------------------------------------------------------------------------- @@ -765,7 +768,7 @@ void dsl_cpp_generator::generateDoWhileStmt(dowhileStmt* doWhile) main.pushstr_newL(strBuffer); main.pushstr_newL("{"); //Start of outer openAcc data body - main.pushString("#pragma acc data"); // start openACC data directive + main.pushstr_space("#pragma acc data"); // start openACC data directive generateDataDirectiveForStatment(doWhile); main.pushstr_newL("{"); //Start of inner openAcc data body @@ -920,6 +923,8 @@ void dsl_cpp_generator::generateAssignmentStmt(assignment* asmt) //When propnod } else main.pushString(id->getIdentifier()); + + currAccVars.erase(id->getSymbolInfo()); } else if(asmt->lhs_isProp()) //If lhs is not an identifier //the check for node and edge property to be carried out. { @@ -940,7 +945,8 @@ void dsl_cpp_generator::generateAssignmentStmt(assignment* asmt) //When propnod } generate_exprPropId(propId); - + + // TODO: Have to check if prop Id need to be erased from currAccVars } if(!asmt->hasPropCopy()) @@ -1020,6 +1026,9 @@ void dsl_cpp_generator::generateProcCall(proc_callStmt* proc_callStmt) //Attac // main.pushstr_newL(strBuffer); // main.pushstr_newL("{"); //opening bracket for 1st outer data region + sprintf(strBuffer, "#pragma acc data copyin(%s)", graph_name); //Copy the graph object to GPU first (shallow-copy) + main.pushstr_newL(strBuffer); + main.pushstr_newL("{"); //opening bracket for 1st outer data region main.pushString("#pragma acc data copyout("); //Since we are just setting values to arrays, it it sufficient to copyout bool first = true; //To generate comma before every array except the first one @@ -1051,7 +1060,7 @@ void dsl_cpp_generator::generateProcCall(proc_callStmt* proc_callStmt) //Attac first = true; - main.pushstr_space(" copyin("); // Getiing the values used to set the lhs + main.pushString("copyin("); // Getiing the values used to set the lhs //Iterate all the arguments inside the attachNodeProperty(--) or attachEdgeProperty(--) procedure calls. (Example: dist=INF) for(itr=argList.begin();itr!=argList.end();itr++) { @@ -1127,7 +1136,7 @@ void dsl_cpp_generator::generateProcCall(proc_callStmt* proc_callStmt) //Attac main.pushstr_newL("}"); //Close for loop main.pushstr_newL("}"); ///OpenAcc data region close - // main.pushstr_newL("}"); ///OpenAcc data region close + main.pushstr_newL("}"); ///OpenAcc data region close (copyin(g)) main.NewLine(); } @@ -1348,7 +1357,7 @@ void dsl_cpp_generator::generateForAll_header(forallStmt* forAll) //Required main.pushstr_newL(strBuffer1); main.pushstr_newL("{"); //--------------------------------------------- - main.pushString("#pragma acc data"); // start of pragma acc data + main.pushstr_space("#pragma acc data"); // start of pragma acc data generateDataDirectiveForStatment(forAll); //--------------------sent only useful data to acc------------------------- @@ -1475,7 +1484,7 @@ void dsl_cpp_generator::generateForAllSignature(forallStmt* forAll) Identifier* nodeNbr=argList.front()->getExpr()->getId(); sprintf(strBuffer,"for (%s %s = %s.%s[%s]; %s < %s.%s[%s+1]; %s ++) ","int","edge",graphId,"indexofNodes",nodeNbr->getIdentifier(),"edge",graphId,"indexofNodes",nodeNbr->getIdentifier(),"edge"); main.pushstr_newL(strBuffer); - main.pushString("{"); + main.pushstr_newL("{"); sprintf(strBuffer,"%s %s = %s.%s[%s] ;","int",iterator->getIdentifier(),graphId,"edgeList","edge"); //needs to move the addition of main.pushstr_newL(strBuffer); } @@ -1488,7 +1497,7 @@ void dsl_cpp_generator::generateForAllSignature(forallStmt* forAll) Identifier* nodeNbr=argList.front()->getExpr()->getId(); sprintf(strBuffer,"for (%s %s = %s.%s[%s]; %s < %s.%s[%s+1]; %s ++) ","int","edge",graphId,"rev_indexofNodes",nodeNbr->getIdentifier(),"edge",graphId,"rev_indexofNodes",nodeNbr->getIdentifier(),"edge"); main.pushstr_newL(strBuffer); - main.pushString("{"); + main.pushstr_newL("{"); sprintf(strBuffer,"%s %s = %s.%s[%s] ;","int",iterator->getIdentifier(),graphId,"srcList","edge"); //needs to move the addition of main.pushstr_newL(strBuffer); @@ -2514,6 +2523,9 @@ void dsl_cpp_generator::generateFixedPoint(fixedPointStmt* fixedPointConstruct) sprintf(strBuffer,"%s = %s;",fixedPointId->getIdentifier(),"true"); //LINE: finished=true main.pushstr_newL(strBuffer); + cout << "fpid: " << fixedPointId->getIdentifier() << endl; + currAccVars.erase(fixedPointId->getSymbolInfo()); // Since the variable(finished) is getting modified it is invalid to be used in the data copyin directive. + //OpenAcc data pragma //sprintf(strBuffer,"#pragma acc data copy(%s);", fixedPointId->getIdentifier()); //main.pushstr_newL(strBuffer); @@ -2696,6 +2708,12 @@ void dsl_cpp_generator::generateFunc(ASTNode* proc) sprintf(strBuffer,"omp_init_lock(&lock[%s]);","v"); main.pushstr_newL(strBuffer);*/ //including locks before hand in the body of function. + + if(func->getIsWeightUsed()) + { + main.pushstr_newL("int* edgeWeight = g.getEdgeLen(); // shallow copy of edge weight"); + } + generateBlock(func->getBlockStatement(),false); main.NewLine(); main.pushstr_newL("}"); @@ -3012,15 +3030,15 @@ bool dsl_cpp_generator::generate() for (Identifier* id: readVarsList) { TableEntry* te = id->getSymbolInfo(); - if (presentInSet(in, te)) + if (presentInSet(currAccVars, te)) continue; - if (in.find(te) != in.end()) + if (presentInSet(in, te)) readVars.insert(te); } for (Identifier* id: writeVarsList) { TableEntry* te = id->getSymbolInfo(); - if (out.find(te) != out.end()) + if (presentInSet(out, te)) writeVars.insert(te); } @@ -3028,11 +3046,13 @@ bool dsl_cpp_generator::generate() TableEntry* te = id->getSymbolInfo(); if (!presentInSet(in, te) && presentInSet(out, te)) writeVars.insert(te); - else if (presentInSet(in, te)) - continue; - else if (in.find(te) != in.end() && out.find(te) != out.end()) - readWriteVars.insert(te); - else if (in.find(te) != in.end()) + else if (presentInSet(in, te) && presentInSet(out, te)) { + if (presentInSet(currAccVars, te)) + writeVars.insert(te); + else + readWriteVars.insert(te); + } + else if (presentInSet(in, te) && !presentInSet(out, te) && !presentInSet(currAccVars, te)) readVars.insert(te); } @@ -3067,15 +3087,15 @@ bool dsl_cpp_generator::generate() for (Identifier* id: readVarsList) { TableEntry* te = id->getSymbolInfo(); - if (presentInSet(in, te)) + if (presentInSet(currAccVars, te)) continue; - if (in.find(te) != in.end()) + if (presentInSet(in, te)) readVars.insert(te); } for (Identifier* id: writeVarsList) { TableEntry* te = id->getSymbolInfo(); - if (out.find(te) != out.end()) + if (presentInSet(out, te)) writeVars.insert(te); } @@ -3083,11 +3103,13 @@ bool dsl_cpp_generator::generate() TableEntry* te = id->getSymbolInfo(); if (!presentInSet(in, te) && presentInSet(out, te)) writeVars.insert(te); - else if (presentInSet(in, te)) - continue; - else if (in.find(te) != in.end() && out.find(te) != out.end()) - readWriteVars.insert(te); - else if (in.find(te) != in.end()) + else if (presentInSet(in, te) && presentInSet(out, te)) { + if (presentInSet(currAccVars, te)) + writeVars.insert(te); + else + readWriteVars.insert(te); + } + else if (presentInSet(in, te) && !presentInSet(out, te) && !presentInSet(currAccVars, te)) readVars.insert(te); } @@ -3154,6 +3176,7 @@ bool dsl_cpp_generator::generate() } main.pushstr_newL(""); + break; } case NODE_FIXEDPTSTMT: @@ -3169,7 +3192,7 @@ bool dsl_cpp_generator::generate() set out = fixedPtStmt->getBlockData()->getEndBlock()->getIn(); // get used variables - usedVariables usedVars = getVarsStatement(fixedPtStmt->getBody()); + usedVariables usedVars = getVarsStatement(fixedPtStmt); // get read-only, write-only and read-write variables list readVarsList = usedVars.getVariables(READ_ONLY); @@ -3182,27 +3205,29 @@ bool dsl_cpp_generator::generate() for (Identifier* id: readVarsList) { TableEntry* te = id->getSymbolInfo(); - if (presentInSet(in, te)) + if (presentInSet(currAccVars, te)) continue; - if (in.find(te) != in.end()) + if (presentInSet(in, te)) readVars.insert(te); } for (Identifier* id: writeVarsList) { TableEntry* te = id->getSymbolInfo(); - if (out.find(te) != out.end()) + if (presentInSet(out, te)) writeVars.insert(te); } for (Identifier* id: readWriteVarsList) { - TableEntry* te = id->getSymbolInfo(); + TableEntry* te = id->getSymbolInfo(); if (!presentInSet(in, te) && presentInSet(out, te)) writeVars.insert(te); - else if (presentInSet(in, te)) - continue; - else if (in.find(te) != in.end() && out.find(te) != out.end()) - readWriteVars.insert(te); - else if (in.find(te) != in.end()) + else if (presentInSet(in, te) && presentInSet(out, te)) { + if (presentInSet(currAccVars, te)) + writeVars.insert(te); + else + readWriteVars.insert(te); + } + else if (presentInSet(in, te) && !presentInSet(out, te) && !presentInSet(currAccVars, te)) readVars.insert(te); } @@ -3211,6 +3236,63 @@ bool dsl_cpp_generator::generate() generateDataDirectiveForVars(readWriteVars, READ_WRITE); main.pushstr_newL(""); + break; + } + + case NODE_ITRBFS: + { + iterateBFS* itrBFS = (iterateBFS*) stmt; + + // get metadata used + MetaDataUsed metadataUsed = getMetaDataUsedStatement(itrBFS); + generateDataDirectiveForMetaVars(metadataUsed); + + // get in and out variables + set in = itrBFS->getBlockData()->getStartBlock()->getOut(); + set out = itrBFS->getBlockData()->getEndBlock()->getIn(); + + // get used variables + usedVariables usedVars = getVarsStatement(itrBFS); + + // get read-only, write-only and read-write variables + list readVarsList = usedVars.getVariables(READ_ONLY); + list writeVarsList = usedVars.getVariables(WRITE_ONLY); + list readWriteVarsList = usedVars.getVariables(READ_AND_WRITE); + + set readVars; + set writeVars; + set readWriteVars; + + for (Identifier* id: readVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (presentInSet(currAccVars, te)) + continue; + if (presentInSet(in, te)) + readVars.insert(te); + } + + for (Identifier* id: writeVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (presentInSet(out, te)) + writeVars.insert(te); + } + + for (Identifier* id: readWriteVarsList) { + TableEntry* te = id->getSymbolInfo(); + if (!presentInSet(in, te) && presentInSet(out, te)) + writeVars.insert(te); + else if (presentInSet(in, te) && presentInSet(out, te)) { + if (presentInSet(currAccVars, te)) + writeVars.insert(te); + else + readWriteVars.insert(te); + } + else if (presentInSet(in, te) && !presentInSet(out, te) && !presentInSet(currAccVars, te)) + readVars.insert(te); + } + + main.pushstr_newL(""); + break; } } } @@ -3250,7 +3332,7 @@ bool dsl_cpp_generator::generate() } if (metaUsed.isWeightUsed && !currMetaAccVars.isWeightUsed) { if (!first) main.pushString(", "); first = false; - sprintf(strBuffer, "%s.getEdgeLen[0:%s.num_edges()+1]", graph_name, graph_name); + sprintf(strBuffer, "%s.edgeWeight[0:%s.num_edges()+1]", graph_name, graph_name); main.pushString(strBuffer); } currMetaAccVars |= metaUsed; diff --git a/src/symbolutil/SymbolTableBuilder.cpp b/src/symbolutil/SymbolTableBuilder.cpp index c0ccd4b0..fac1f965 100644 --- a/src/symbolutil/SymbolTableBuilder.cpp +++ b/src/symbolutil/SymbolTableBuilder.cpp @@ -341,6 +341,8 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) /* the assignment statements(arithmetic & logical) within the block of a for statement that is itself within a IterateInBFS abstraction are signaled to become atomic while code generation. */ + iterateBFS* parent = (iterateBFS*)parallelConstruct[0]; + cout << "parent type: " << parent->getTypeofNode() << endl; proc_callExpr* extractElem = forAll->getExtractElementFunc(); if(extractElem!=NULL) { @@ -348,27 +350,36 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) list argList = extractElem->getArgList(); if(methodString == nbrCall) { - forAll->addAtomicSignalToStatements(); + parent->setIsMetaUsed(); + currentFunc->setIsMetaUsed(); + parent->setIsDataUsed(); + currentFunc->setIsDataUsed(); + } + else if(methodString == nodesToCall) + { + parent->setIsRevMetaUsed(); + currentFunc->setIsRevMetaUsed(); + parent->setIsSrcUsed(); + currentFunc->setIsSrcUsed(); } } } - else { // if for all statement has a proc call + else { // if for all statement has a proc call proc_callExpr* extractElemFunc = forAll->getExtractElementFunc(); if(extractElemFunc != NULL && parallelConstruct.size() > 0) { + forallStmt* parent = (forallStmt*) parallelConstruct.back(); Identifier* iteratorMethodId = extractElemFunc->getMethodId(); string iteratorMethodString(iteratorMethodId->getIdentifier()); - if(iteratorMethodString.compare("nodes_to") == 0) { // if the proc call is nodes_to, d_rev_meta is needed - forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; - parentForall->setIsRevMetaUsed(); + if(iteratorMethodString == nodesToCall) { // if the proc call is nodes_to, d_rev_meta is needed + parent->setIsRevMetaUsed(); currentFunc->setIsRevMetaUsed(); - parentForall->setIsSrcUsed(); + parent->setIsSrcUsed(); currentFunc->setIsSrcUsed(); - } else if(iteratorMethodString.compare("neighbors") == 0) { // if the proc call is neighbors, d_data is needed - forallStmt* parentForall = (forallStmt*) parallelConstruct[0]; - parentForall->setIsMetaUsed(); + } else if(iteratorMethodString == nbrCall) { // if the proc call is neighbors, d_data is needed + parent->setIsMetaUsed(); currentFunc->setIsMetaUsed(); - parentForall->setIsDataUsed(); + parent->setIsDataUsed(); currentFunc->setIsDataUsed(); } } @@ -556,8 +567,11 @@ bool search_and_connect_toId(SymbolTable* sTab,Identifier* id) } currentFunc->setIsMetaUsed(); // d_meta is used in itrbfs + iBFS->setIsMetaUsed(); // d_meta is used in itrbfs currentFunc->setIsDataUsed(); // d_data is used in itrbfs + iBFS->setIsDataUsed(); // d_data is used in itrbfs currentFunc->setIsWeightUsed(); // d_weight is used in itrbfs + iBFS->setIsWeightUsed(); // d_weight is used in itrbfs buildForStatements(iBFS->getBody()); iterateReverseBFS* iRevBFS = iBFS->getRBFS(); @@ -716,7 +730,7 @@ void SymbolTableBuilder::checkForArguments(list argList) string idString(id->getIdentifier()); assert(idString.compare(updatesString) == 0); } - if(s.compare("is_an_edge") == 0) + if(s.compare(isAnEdgeCall) == 0) { forallStmt* parentForAll = (forallStmt*)parallelConstruct[0]; parentForAll->setIsMetaUsed(); @@ -724,7 +738,7 @@ void SymbolTableBuilder::checkForArguments(list argList) parentForAll->setIsDataUsed(); currentFunc->setIsDataUsed(); } - if(s.compare("count_outNbrs") == 0) + if(s.compare(countOutNbrCall) == 0) { forallStmt* parentForAll = (forallStmt*)parallelConstruct[0]; parentForAll->setIsMetaUsed();