Esempio n. 1
0
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;
}
Esempio n. 2
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
}
Esempio n. 3
0
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;
}