Ejemplo n.º 1
0
void run() {

  unsigned i, time;
  gasnett_tick_t start, end;

  hashset_create(params[HASHSET_SIZE], params[ON_PTHREAD]);

  BARRIER();

  start = gasnett_ticks_now();
  for (i = 0; i < MY_NUM_OPS; ++i) {
    if (put_flags[i] == GRT_TRUE) {
      hashset_insert(numbers[i]);
    } else {
      hashset_find(numbers[i]);
    }
  }
  end = gasnett_ticks_now();
  time = ((unsigned) gasnett_ticks_to_us(end - start));
  //printf("processor %u: execution time=%f us\n", 
  //	 grt_id, (double) time);
  fflush(stdout);
  grt_write(0, time, &times[grt_id]);

  BARRIER();

  if (grt_id == 0) {
    time = 0, max_time = 0;
    for (i = 0; i < grt_num_procs; ++i) {
      gasnett_tick_t this_time = times[i];
      time += this_time;
      if (this_time >= max_time) max_time = this_time;
    }
    time_per_op = ((float) time) / params[NUM_OPS];
    printf("total CPU time=%f us\n", (double) time);
    printf("time per operation=%f us\n", time_per_op);
    printf("max time=%f us\n", (double) max_time);
  }

  BARRIER();

  hashset_destroy();

  BARRIER();

}
Ejemplo n.º 2
0
int main(int argc, char** argv) {
  hashset_init(argc, argv, 4);

  struct timeval tv;
  gettimeofday(&tv, 0);
  srand(tv.tv_usec);
  unsigned i;

#ifdef PTHREAD
  hashset_create(TABLE_SIZE, GRT_TRUE);
#else
  hashset_create(TABLE_SIZE, GRT_FALSE);
#endif

  BARRIER();

  grt_debug_print("generating numbers\n");
  for (i = 0; i < N; ++i) {
    numbers[i] = rand();
  }
  grt_debug_print("inserting numbers\n");
  for (i = 0; i < N; ++i) {
    hashset_insert(numbers[i]);
  }

  BARRIER();

  grt_debug_print("finding numbers\n");
  for (i = 0; i < N; ++i) {
    grt_word_t num = numbers[i];
    unsigned found = hashset_find(num);
    if (!found) {
      fprintf(stderr, "processor %d: expected to find %llx\n", 
	      grt_id, num);
    } 
  }

  BARRIER();

  grt_debug_print("done\n");
  hashset_destroy();

  hashset_exit(0);
}
Ejemplo n.º 3
0
void *downloader(void *arg) {
    struct input_args *in_args = (struct input_args *)arg;
    while (1) {
        char *url = (char *)bounded_buffer_get(in_args->url_queue);
        if (url == NULL)
            break;
        if (hashset_contains(in_args->url_set, url) == 0) {
            hashset_insert(in_args->url_set, url);
            char *content = in_args->fetch(url);
            assert(content != NULL);
            struct page *page = (struct page *)mem_malloc(sizeof(struct page));
            page->url = url;
            page->content = content;
            unbounded_buffer_put(in_args->page_queue, (void *)page);
        } else {
            mem_free(url);
        }
        bounded_buffer_done(in_args->url_queue);
        mutex_lock(in_args->done_mutex);
        cond_signal(in_args->done_cond);
        mutex_unlock(in_args->done_mutex);
    }
    return NULL;
}