int main(int argc, char* argv[]) { if (argc != 4) { printf("Incorrect number of arguments, must specify number of cores, array size, number of loops\n"); exit(-1); } num_cores = atol(argv[1]); if(num_cores <= 0){ printf("Invalid number of cores\n"); exit(-1); } arraySize = atol(argv[2]); if(arraySize <= 0){ printf("Invalid array size\n"); exit(-1); } loops = atol(argv[3]); if(loops < 0){ printf("Invalid number of loops\n"); exit(-1); } srand(time(NULL)); debug_printf("Spanning cores\n"); errval_t err; for (int core = 1; core < num_cores; core++) { err = domain_new_dispatcher(core, span_cb, NULL); if (err_is_fail(err)) { DEBUG_ERR(err, "failed span %d", core); } } while (num_cores != 1 && !all_spanned) { thread_yield(); } debug_printf("Spanning complete!\n"); globalArray = (float*) malloc(arraySize * sizeof(float)); unsigned long loops_[] = {1,100,10000,1000000,100000000,1000000000}; for(int i = 0; i < 6; i++){ loops = loops_[i]; float shared = performAveraging(averageSharedBF); float local = performAveraging(averageLocalBF); printf("SHARED BF (%lu): %fs\n", loops, shared); printf("LOCAL BF (%lu): %fs\n", loops, local); printf("\n"); } free(globalArray); return 0; }
//mobility change 14-4-10 void updateNeighborInfo(int node, int infra, int rssi) { //if(node == 25) // mobility hack //{ int i,j,k; //int fragment_hearing; struct event * anEvent; if(nodeID[node].infra_list[infra].is_neighbor == TRUE) { nodeID[node].infra_list[infra].timeLastHeard = simTime; performAveraging(node, infra, rssi); //fprintf(stderr,"Node %d is now a neighbor of %d \n", infra, node); } else { if(nodeID[node].infra_list[infra].times_observed == INFRA_HEARD_THRESHOLD) { //perform averaging, send reactive update, set is_neighbor to true, and start timer nodeID[node].infra_list[infra].infra_node = infra; nodeID[node].infra_list[infra].is_neighbor = TRUE; nodeID[node].infra_list[infra].timeLastHeard = simTime; performAveraging(node, infra, rssi); //fragment_hearing = FRAGMENT_HEARING(node,infra); anEvent = getNextExpectedFragmentEvent(simTime + FRAGMENT_TIMEOUT, node, infra); insertEvent(anEvent); //mobility hack 16-4-10, this is reactive, should not result in another topology update event being set. if(simTime > 1200000) { anEvent = getTopologyUpdateEvent(simTime, node, node, nodeID[node].parent,TX, REACTIVE); insertEvent(anEvent); } //fprintf(stderr,"RSSI values with which neighbor %d is heard are \n", infra); for(i=0; i < INFRA_HEARD_THRESHOLD; i++) { //fprintf(stderr," RSSI at position %d is %d \n", i, nodeID[node].infra_list[infra].rssi[i]); } } else { for(i=0; i < INFRA_HEARD_THRESHOLD; i++) { if(nodeID[node].infra_list[infra].rssi[i] == 0) // mobility hack { nodeID[node].infra_list[infra].rssi[i] = rssi; break; } } nodeID[node].infra_list[infra].times_observed++; //fprintf(stderr,"Infra %d heard for %d times \n", infra, nodeID[node].infra_list[infra].times_observed); } } //} }