int main( int argc, char *argv[]) { if (argc < 2) { printf("Usage: NTHREADS\n"); return 0; } NTHREADS = atoi(argv[1]); InitSettings (); InitCoordinates(INPARAMS numMoles, BOXSIZE, perturb); InitVelocities (INPARAMS timeStep); InitForces (); CREATE_TM_THREADS( NTHREADS ); do_libtm_work(); DESTROY_TM_THREADS( NTHREADS ); printf("\n"); free(x); free(f); free(vh); free(inter); return 0; }
void LGraph::Layout(unsigned int number_of_iterations, bool do_transpose, int transpose_range){ list<pEdge> ReverseEdges; FindReverseEdges(ReverseEdges); ReverseReverseEdges(ReverseEdges); InitRank(); list<pEdge> LongEdges; FindLongEdges(LongEdges); AddDummyNodes(LongEdges); ReverseEdges.clear(); order = new Ordering(); order->order_vector = InitOrder(); // Number of iterations. layouted = true; for (unsigned int i = 0; i < number_of_iterations; i++) { WeightedMedianHeuristic(i); // TODO(Kuzmich(svatoslav1)): make transpose faster. It is too slow for now if (do_transpose) Transpose(i + transpose_range); } InitPos(order); InitCoordinates(order); #ifdef DEBUG printf("Crossings:%d\n",countCrossing(order)); #endif }
int main( int argc, char *argv[]) { if (argc < 2) { printf("Usage: ./moldyn NUM_THREADS\n"); return 1; } NTHREADS = atoi(argv[1]); int i; InitSettings (); InitCoordinates(INPARAMS numMoles, BOXSIZE, perturb); InitVelocities (INPARAMS timeStep); InitForces (); //Mike: added this to compensate for moving updatecoordinates to the end FirstCoordinates(); barrier_init(&barrier, NTHREADS); pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); pthread_t* threads = new pthread_t[ NTHREADS-1 ]; for( i = 1; i < NTHREADS; i++ ) pthread_create( &threads[i-1], &attr, do_thread_work, (void*)i ); do_thread_work ((void *)0); for( i = 1; i < NTHREADS; i++ ) pthread_join( threads[i-1], NULL ); printf("\n"); return 0; }