static void do_consensus () { int unique_indices[replication]; unsigned int i; for (i = 0; i < num_values; i++) { unsigned int j; struct GNUNET_HashCode val; struct GNUNET_SET_Element element; generate_indices (unique_indices); GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, &val); element.data = &val; element.size = sizeof (val); for (j = 0; j < replication; j++) { int cid; cid = unique_indices[j]; GNUNET_CONSENSUS_insert (consensus_handles[cid], &element, NULL, NULL); } } GNUNET_log (GNUNET_ERROR_TYPE_INFO, "all elements inserted, calling conclude\n"); for (i = 0; i < num_peers; i++) GNUNET_CONSENSUS_conclude (consensus_handles[i], conclude_cb, &consensus_handles[i]); }
void Geometry::read(const std::string& geomFileName, const std::string& condFileName, const bool OLD_ORDERING) { // clear all first vertices_.clear(); meshes_.clear(); domains_.clear(); is_nested_ = has_cond_ = false; GeometryReader geoR(*this); geoR.read_geom(geomFileName); if (condFileName!="") { geoR.read_cond(condFileName); has_cond_ = true; //mark meshes that touch the 0-cond mark_current_barrier(); } // generate the indices of our unknowns generate_indices(OLD_ORDERING); // print info info(); }
static enum pipe_error retrieve_or_generate_indices( struct svga_hwtnl *hwtnl, unsigned prim, unsigned gen_type, unsigned gen_nr, unsigned gen_size, u_generate_func generate, struct pipe_resource **out_buf ) { enum pipe_error ret = PIPE_OK; int i; for (i = 0; i < IDX_CACHE_MAX; i++) { if (hwtnl->index_cache[prim][i].buffer != NULL && hwtnl->index_cache[prim][i].generate == generate) { if (compare(hwtnl->index_cache[prim][i].gen_nr, gen_nr, gen_type)) { pipe_resource_reference( out_buf, hwtnl->index_cache[prim][i].buffer ); if (DBG) debug_printf("%s retrieve %d/%d\n", __FUNCTION__, i, gen_nr); return PIPE_OK; } else if (gen_type == U_GENERATE_REUSABLE) { pipe_resource_reference( &hwtnl->index_cache[prim][i].buffer, NULL ); if (DBG) debug_printf("%s discard %d/%d\n", __FUNCTION__, i, hwtnl->index_cache[prim][i].gen_nr); break; } } } if (i == IDX_CACHE_MAX) { unsigned smallest = 0; unsigned smallest_size = ~0; for (i = 0; i < IDX_CACHE_MAX && smallest_size; i++) { if (hwtnl->index_cache[prim][i].buffer == NULL) { smallest = i; smallest_size = 0; } else if (hwtnl->index_cache[prim][i].gen_nr < smallest) { smallest = i; smallest_size = hwtnl->index_cache[prim][i].gen_nr; } } assert (smallest != IDX_CACHE_MAX); pipe_resource_reference( &hwtnl->index_cache[prim][smallest].buffer, NULL ); if (DBG) debug_printf("%s discard smallest %d/%d\n", __FUNCTION__, smallest, smallest_size); i = smallest; } ret = generate_indices( hwtnl, gen_nr, gen_size, generate, out_buf ); if (ret != PIPE_OK) return ret; hwtnl->index_cache[prim][i].generate = generate; hwtnl->index_cache[prim][i].gen_nr = gen_nr; pipe_resource_reference( &hwtnl->index_cache[prim][i].buffer, *out_buf ); if (DBG) debug_printf("%s cache %d/%d\n", __FUNCTION__, i, hwtnl->index_cache[prim][i].gen_nr); return PIPE_OK; }