int init_resources() { simpleVS= new Shader(NETWORK_VISUALIZER_RESSOURCE_PATH "shader/simple.vs.c",GL_VERTEX_SHADER); simpleFS= new Shader(NETWORK_VISUALIZER_RESSOURCE_PATH "shader/simple.fs.c",GL_FRAGMENT_SHADER); simpleProgram = new SProgram(*simpleVS,*simpleFS); uniform_proj=uniform_init("proj",*simpleProgram); uniform_pos=uniform_init("obj_pos",*simpleProgram); uniform_col=uniform_init("color",*simpleProgram); uniform_scale=uniform_init("scale",*simpleProgram); print_log(simpleProgram->getProgram()); initNetworkEntity(); init_MovingCubes(); sniffer_start(); return 1; }
double darts(long n) { long k = 0; int i = 0; double x = 0, y = 0; uniform_init(); for(i = 0;i < n;i++) { x = uniform_double(0, 1); /*y = uniform_double(0, 1);*/ y = x; /*printf("%f %f\n", x, y);*/ if(x*x + y*y <= 1) k++; } uniform_close(); /*printf("%ld\n", k);*/ return 4.0*k/n; }
void RunKMedoids(const leveldb::Slice& begin, const leveldb::Slice& end, int K, leveldb::DB* db, leveldb::DB* work_db, int concurrency, std::ostream& ivar_out, std::ostream& cent_out) { auto very_start = std::chrono::system_clock::now(); auto key_centroids = uniform_init(begin, end, K); std::vector<GDELTMini> val_centroids(K); { auto it = iter(db); for (int i = 0; i < K; ++i) { it->Seek(key_centroids[i]); CHECK(it->Valid()); read(it->value(), val_centroids[i]); } } std::cout << "Divying up range among threads... " << std::flush; auto parvec = get_par_ranges(uniform_init(begin, end, concurrency), db, end); std::cout << "DONE" << std::endl; int i = 0; bool centers_changed = true; vuad totals(K); vuai cluster_sizes(K); for (int i = 0; i < K; ++i) { cluster_sizes[i].reset(new std::atomic<int>); totals[i].reset(new std::atomic<double>); } while (centers_changed) { auto start = std::chrono::system_clock::now(); assign_closest(parvec, totals, K, work_db, val_centroids, concurrency, cluster_sizes); auto tot = std::accumulate(totals.begin(), totals.end(), 0.0, [](double sum, typename vuad::value_type& d) { return sum + d->load(); }); auto end = std::chrono::system_clock::now(); std::cout << "Iteration " << ++i << " total intravariance " << tot; std::cout << "\n Assigning medoids took " << secs(start, end) << "s" << std::endl; start = std::chrono::system_clock::now(); for (auto& d : totals) { ivar_out << d->load() << " "; } ivar_out << std::endl; cent_out << key_centroids << std::endl; end = std::chrono::system_clock::now(); std::cout << " Saving medoids took " << secs(start, end) << " s" << std::endl; start = std::chrono::system_clock::now(); centers_changed = update_medoids(concurrency, K, db, work_db, val_centroids, key_centroids, totals, cluster_sizes); end = std::chrono::system_clock::now(); std::cout << " Medoid update took " << secs(start, end) << " s" << std::endl; start = end; } auto very_end = std::chrono::system_clock::now(); std::cout << "K-medoid clustering COMPLETE in " << secs(very_start, very_end) << " s" << std::endl; }