Beispiel #1
0
void Setup(ArgStruct *p)
{
  if(gm_open(&gm_p,0,5,"port2",(enum gm_api_version) GM_API_VERSION) != GM_SUCCESS)
  {
    printf(" Couldn't open board 0 port 2\n");
    exit(-1);
  }
  else
    printf("Opened board 0 port2\n");
  
  if( p->tr )
    p->prot.host_id = gm_host_name_to_node_id(gm_p, p->host);

  gm_free_send_tokens(gm_p, GM_LOW_PRIORITY, gm_num_send_tokens(gm_p));
  ltime = gm_dma_malloc(gm_p, sizeof(unsigned long));
  lrpt  = gm_dma_malloc(gm_p, sizeof(unsigned long)); 
  sync  = gm_dma_malloc(gm_p, 64); 
  sync1 = gm_dma_malloc(gm_p, 64);
  sprintf(sync, "Syncme");   

  establish(p);

  p->prot.num_stokens = gm_num_send_tokens(gm_p);

}   
int
MPID_nem_gm_finalize()
{
    int mpi_errno = MPI_SUCCESS;
    int max_send_tokens;
    MPID_nem_gm_send_queue_t *e;

    max_send_tokens = gm_num_send_tokens (MPID_nem_module_gm_port);
    
    while (MPID_nem_module_gm_num_send_tokens < max_send_tokens && !MPID_nem_gm_queue_empty (send))
    {
	mpi_errno = MPID_nem_gm_recv_poll();
        if (mpi_errno) MPIU_ERR_POP (mpi_errno);
    }
    
    while (MPID_nem_gm_send_free_queue)
    {
	e = MPID_nem_gm_send_free_queue;
	MPID_nem_gm_send_free_queue = e->next;
	MPIU_Free (e);
    }
    
    mpi_errno = MPID_nem_gm_lmt_finalize();
    if (mpi_errno) MPIU_ERR_POP (mpi_errno);

    gm_finalize();

 fn_exit:
    return mpi_errno;
 fn_fail:
    goto fn_exit;
}