示例#1
0
int
main (int argc, char ** argv)
{
  stinger_t * S = stinger_new();

  /* insert your data now */
  load_benchmark_data_into_stinger (S, argv[1],0);


  /* get number of vertices */
  uint64_t nv = stinger_max_active_vertex (S);
  nv++;

  print_fragmentation_stats (S, nv);


  /* auxiliary data structure */
  double * pagerank_scores = xmalloc (nv * sizeof(int64_t));
  double * pagerank_scores_tmp = xmalloc (nv * sizeof(int64_t));


  /* the algorithm itself (timed) */
  bench_start();
  pagerank (S, nv, pagerank_scores, pagerank_scores_tmp, 1e-8, 0.85, 100);
  bench_end();
  printf("Done.\n");


  /* cleanup */
  free (pagerank_scores);
  free (pagerank_scores_tmp);
  stinger_free_all (S);
  return 0;
}
示例#2
0
int main(int argc, char** argv) {

    struct timeval first, second, lapsed;
    struct timezone tzp;   
    printf("Sequential PageRank algorithm\n");

    nodes = (node_struct*)malloc(N*sizeof(node_struct)); 

    /***Run the next 2 functions for a full web graph PageRank calculation**/
    //rand_init();
    init();
    read_data();

    /*Pagerank algorithm*/ 
    gettimeofday(&first, &tzp);
    pagerank();
    gettimeofday(&second, &tzp);
    
      if(first.tv_usec>second.tv_usec){
          second.tv_usec += 1000000;
          second.tv_sec--;
      }
    
    lapsed.tv_usec = second.tv_usec - first.tv_usec;
    lapsed.tv_sec = second.tv_sec - first.tv_sec;
    printf("\nTotal time elapsed: %d, %d s\n", lapsed.tv_sec, lapsed.tv_usec); 

    //save_results();
    
    return (EXIT_SUCCESS);
}
int main(int argc, char *argv[]) {
	long size, vr;
	long *vals 	= malloc(80000000*sizeof(long));
	long *col_inds 	= malloc(80000000*sizeof(long));
	long *row_ptrs 	= malloc(80000000*sizeof(long));
	double *vec 	= malloc(80000000*sizeof(double));

//	printf("Enter size: \n");
//	scanf("%d",&size);
//	printf("Enter row ptr size: \n");
//	scanf("%d",&vr);

	read_graphs(argv,&size,&vr,vals,col_inds,row_ptrs,vec);
		
				
	long i;
//	printf("\n Vals: \n");
//	for(i=0; i<size; i++) {
//		printf("%ld ",vals[i]);
//	}
//
//	printf("\n Cols: \n");
//	for(i=0; i<size; i++) {
//		printf("%ld ",col_inds[i]);
//	}
//
//	printf("\n Rows: \n");
//	for(i=0; i<vr; i++) {
//		printf("%ld ",row_ptrs[i]);
//	}
//
//	printf("\n Vector: \n");
//	for(i=0; i<vr-1; i++) {
//		printf("%f ",vec[i]);
//	}
	
	pagerank(size,vr,vals,col_inds,row_ptrs,vec);
}
示例#4
0
int main(void) {

	/*
	######################################################
	### DO NOT MODIFY THE MAIN FUNCTION OR HEADER FILE ###
	######################################################
	*/

	list* plist = NULL;

	double dampener;
	int ncores, npages, nedges;

	/* read the input then populate settings and the list of pages */
	read_input(&plist, &ncores, &npages, &nedges, &dampener);

	/* run pagerank and output the results */
	pagerank(plist, ncores, npages, nedges, dampener);

	/* clean up the memory used by the list of pages */
	page_list_destroy(plist);

	return 0;
}
示例#5
0
int main(int argc, char ** argv) {
	if (argc<3) {
		fprintf(stderr, "usage: pagerank [path] [iterations] [memory budget in GB]\n");
		exit(-1);
	}
	std::string path = argv[1];
	int iterations = atoi(argv[2]);
	long memory_bytes = (argc>=4)?atol(argv[3])*1024l*1024l*1024l:8l*1024l*1024l*1024l;

	Graph graph(path,atoi(argv[4]));
	graph.set_memory_bytes(memory_bytes);
	BigVector<VertexId> degree(graph.path+"/degree", graph.vertices);
	BigVector<float> pagerank(graph.path+"/pagerank", graph.vertices);
	BigVector<float> sum(graph.path+"/sum", graph.vertices);

	long vertex_data_bytes = (long)graph.vertices * ( sizeof(VertexId) + sizeof(float) + sizeof(float) );
	graph.set_vertex_data_bytes(vertex_data_bytes);

	double begin_time = get_time();

	degree.fill(0);
	graph.stream_edges<VertexId>(
		[&](Edge & e){
			write_add(&degree[e.source], 1);
			return 0;
		}, nullptr, 0, 0
	);
	printf("degree calculation used %.2f seconds\n", get_time() - begin_time);
	fflush(stdout);

	graph.hint(pagerank, sum);
	graph.stream_vertices<VertexId>(
		[&](VertexId i){
			pagerank[i] = 1.f / degree[i];
			sum[i] = 0;
			return 0;
		}, nullptr, 0,
		[&](std::pair<VertexId,VertexId> vid_range){
			pagerank.load(vid_range.first, vid_range.second);
			sum.load(vid_range.first, vid_range.second);
		},
		[&](std::pair<VertexId,VertexId> vid_range){
			pagerank.save();
			sum.save();
		}
	);

	for (int iter=0;iter<iterations;iter++) {
		graph.hint(pagerank);
		graph.stream_edges<VertexId>(
			[&](Edge & e){
				write_add(&sum[e.target], pagerank[e.source]);
				return 0;
			}, nullptr, 0, 1,
			[&](std::pair<VertexId,VertexId> source_vid_range){
				pagerank.lock(source_vid_range.first, source_vid_range.second);
			},
			[&](std::pair<VertexId,VertexId> source_vid_range){
				pagerank.unlock(source_vid_range.first, source_vid_range.second);
			}
		);
		graph.hint(pagerank, sum);
		if (iter==iterations-1) {
			graph.stream_vertices<VertexId>(
				[&](VertexId i){
					pagerank[i] = 0.15f + 0.85f * sum[i];
					return 0;
				}, nullptr, 0,
				[&](std::pair<VertexId,VertexId> vid_range){
					pagerank.load(vid_range.first, vid_range.second);
				},
				[&](std::pair<VertexId,VertexId> vid_range){
					pagerank.save();
				}
			);
		} else {
			graph.stream_vertices<float>(
				[&](VertexId i){
					pagerank[i] = (0.15f + 0.85f * sum[i]) / degree[i];
					sum[i] = 0;
					return 0;
				}, nullptr, 0,
				[&](std::pair<VertexId,VertexId> vid_range){
					pagerank.load(vid_range.first, vid_range.second);
					sum.load(vid_range.first, vid_range.second);
				},
				[&](std::pair<VertexId,VertexId> vid_range){
					pagerank.save();
					sum.save();
				}
			);
		}
	}

	double end_time = get_time();
	printf("%d iterations of pagerank took %.2f seconds\n", iterations, end_time - begin_time);

}