Esempio n. 1
0
/***************************************************************************************************
 *
 *   tio_read_pointquant_chunk_c
 *
 **************************************************************************************************/
void
F2C(tio_read_pointquant_chunk_c,TIO_READ_POINTQUANT_CHUNK_C)
     ( const TIO_File_tf   *fileID,
       const TIO_Object_tf *quantID,
       const TIO_Size_tf   *idx,
       const int_f         *xfer,
       const int_f         *datatype,
       const TIO_Size_tf   *nghosts,
       TIO_Size_tf         *nnodes,
       void                *qdat,
       const int_f         *narg,
       TIO_tf              *err )
{
  TIO_Size_t l_nn;
  void       *qptr;
  
  
  setpm(narg, qptr, qptr, qdat, qdat);
  
  *err = c2f_TIO( TIO_Read_PointQuant_Chunk( f2c_file(*fileID),
                                             f2c_object(*quantID),
                                             f2c_idx(*idx),
                                             f2c_xfer(*xfer),
                                             f2c_datatype(*datatype),
                                             f2c_ghosts(*nghosts),
                                             &l_nn,
                                             qptr ) );
  
  if (*err != TIO_SUCCESS_F) return;
  
  *nnodes = c2f_size(l_nn);
  
  return;
}
Esempio n. 2
0
/***************************************************************************************************
 *
 *   tio_read_pointquant_section_c
 *
 **************************************************************************************************/
void
F2C(tio_read_pointquant_section_c,TIO_READ_POINTQUANT_SECTION_C)
     ( const TIO_File_tf   *fileID,
       const TIO_Object_tf *quantID,
       const TIO_Object_tf *sectionID,
       const int_f         *xfer,
       const int_f         *datatype,
       TIO_Size_tf         *nnodes,
       void                *qdat,
       const int_f         *narg,
       TIO_tf              *err )
{
  TIO_Size_t l_nn;
  void       *qptr;
  
  setpm(narg, qptr, qptr, qdat, qdat);
  
  *err = c2f_TIO( TIO_Read_PointQuant_Section( f2c_file(*fileID),
                                               f2c_object(*quantID),
                                               f2c_object(*sectionID),
                                               f2c_xfer(*xfer),
                                               f2c_datatype(*datatype),
                                               &l_nn,
                                               qptr ) );  
  
  if (*err != TIO_SUCCESS_F) return;
  
  *nnodes = c2f_size(l_nn);
  
  
  return;
}
Esempio n. 3
0
/***************************************************************************************************
 *
 *   tio_read_unstrquant_all_c
 *
 **************************************************************************************************/
void
F2C(tio_read_unstrquant_all_c,TIO_READ_UNSTRQUANT_ALL_C)
     ( const TIO_File_tf   *fileID,
       const TIO_Object_tf *quantID,
       const int_f         *datatype,
       TIO_Size_tf         *nn,
       void                *qdat,
       TIO_Size_tf         *nmixcomp,
       void                *qmix,
       const int_f         *narg,
       TIO_tf              *err )
{
  TIO_Size_t l_nn, l_nmc;
  void *datptr, *mixptr;
  
  
  setpm(narg, datptr, mixptr, qdat, qmix);
  
  *err = c2f_TIO( TIO_Read_UnstrQuant_All( f2c_file(*fileID),
                                           f2c_object(*quantID),
                                           f2c_datatype(*datatype),
                                           &l_nn,
                                           datptr,
                                           &l_nmc,
                                           mixptr ) );  
  
  if (*err != TIO_SUCCESS_F) return;
  
  *nn       = c2f_size(l_nn);
  *nmixcomp = c2f_size(l_nmc);
  
  return;
}
Esempio n. 4
0
/***************************************************************************************************
 *
 *   tio_write_unstrquant_chunk_c
 *
 **************************************************************************************************/
void
F2C(tio_write_unstrquant_chunk_c,TIO_WRITE_UNSTRQUANT_CHUNK_C)
     ( const TIO_File_tf   *fileID,
       const TIO_Object_tf *quantID,
       const TIO_Size_tf   *idx,
       const int_f         *xfer,
       const int_f         *datatype,
       const void          *qdat,
       const void          *qmix,
       const int_f         *narg,
       TIO_tf              *err )
{
  const void *datptr, *mixptr;
  
  setpm(narg, datptr, mixptr, qdat, qmix);
  
  *err = c2f_TIO( TIO_Write_UnstrQuant_Chunk( f2c_file(*fileID),
                                              f2c_object(*quantID),
                                              f2c_idx(*idx),
                                              f2c_xfer(*xfer),
                                              f2c_datatype(*datatype),
                                              datptr,
                                              mixptr ) );
  
  return;
}
Esempio n. 5
0
/***************************************************************************************************
 *
 *   tio_read_quadquant_chunk_c
 *
 **************************************************************************************************/
void
F2C(tio_read_quadquant_chunk_c,TIO_READ_QUADQUANT_CHUNK_C)
     ( const TIO_File_tf   *fileID,
       const TIO_Object_tf *quantID,
       const TIO_Size_tf   *idx,
       const int_f         *xfer,
       const int_f         *datatype,
       const TIO_Size_tf   *nghosts,
       int_f               *ndims,
       TIO_Size_tf         *ni,
       TIO_Size_tf         *nj,
       TIO_Size_tf         *nk,
       void                *qdat,
       TIO_Size_tf         *nmixcomp,
       void                *qmix,
       const int_f         *narg,
       TIO_tf              *err )
{
  TIO_Dims_t l_ndims;
  TIO_Size_t l_ni, l_nj, l_nk, l_nmc;
  void *datptr, *mixptr;
  
  
  setpm(narg, datptr, mixptr, qdat, qmix);
  
  *err = c2f_TIO( TIO_Read_QuadQuant_Chunk( f2c_file(*fileID),
                                                f2c_object(*quantID),
                                                f2c_idx(*idx),
                                                f2c_xfer(*xfer),
                                                f2c_datatype(*datatype),
                                                f2c_ghosts(*nghosts),
                                                &l_ndims,
                                                &l_ni,
                                                &l_nj,
                                                &l_nk,
                                                datptr,
                                                &l_nmc,
                                                mixptr ) );
  
  if (*err != TIO_SUCCESS_F) return;
  
  *ndims    = c2f_size(l_ndims);
  *ni       = c2f_size(l_ni);
  *nj       = c2f_size(l_nj);
  *nk       = c2f_size(l_nk);
  *nmixcomp = c2f_size(l_nmc);
  
  return;
}
Esempio n. 6
0
/***************************************************************************************************
 *
 *   tio_read_unstrquant_chunk_c
 *
 **************************************************************************************************/
void
F2C(tio_read_unstrquant_chunk_c,TIO_READ_UNSTRQUANT_CHUNK_C)
     ( const TIO_File_tf   *fileID,
       const TIO_Object_tf *quantID,
       const TIO_Size_tf   *idx,
       const int_f         *xfer,
       const int_f         *datatype,
       const TIO_Size_tf   *nghosts,
       TIO_Size_tf         *nn,
       void                *qdat,
       TIO_Size_tf         *nmixcomp,
       void                *qmix,
       const int_f         *narg,
       TIO_tf              *err )
{
  TIO_Size_t l_nn, l_nmc;
  void *datptr, *mixptr;
  
  
  setpm(narg, datptr, mixptr, qdat, qmix);
  
  *err = c2f_TIO( TIO_Read_UnstrQuant_Chunk( f2c_file(*fileID),
                                             f2c_object(*quantID),
                                             f2c_idx(*idx),
                                             f2c_xfer(*xfer),
                                             f2c_datatype(*datatype),
                                             f2c_ghosts(*nghosts),
                                             &l_nn,
                                             datptr,
                                             &l_nmc,
                                             mixptr ) );
  
  if (*err != TIO_SUCCESS_F) return;
  
  *nn       = c2f_size(l_nn);
  *nmixcomp = c2f_size(l_nmc);
  
  return;
}
Esempio n. 7
0
File: main.c Progetto: damora/ivr
//-----------------------------------------------------------------------------------------------------------------------//
// main
//-----------------------------------------------------------------------------------------------------------------------//
int main(int argc,  char * argv[])
{
    int rc=0;
    int rank=0;
#ifdef MPI
    int comsize;

    // init MPI
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &comsize);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    fprintf(stderr,"rank=%d\n", rank);
#ifdef BGQ
    install_signal_handler();
#endif
#endif

    args = parseargs(argc, argv);

    // init, initcamera, initvolattrs
    if ((rc=init(args, rank) != 0)) {
        fprintf(stderr, "initialization failed: %d\n", rc);
        return 0;
    };

    //---------------------------- Platform Specific Display and Interaction ----------------------------------------//
#if LOCAL

    resettransforms();
    mystate.alpha=0.25f;

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowSize(WINDOWWIDTH, WINDOWHEIGHT);
    glutCreateWindow("iVR");
    glutReshapeFunc(reshape);
    glutDisplayFunc(display);
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mousebutton);
    glutMotionFunc(mousemotion);
//    glEnable(GL_DEPTH_TEST);
    glEnable(GL_CULL_FACE);
    glCullFace(GL_BACK);
    glDisable(GL_DEPTH_TEST);
    glutMainLoop();
#elif MPI		// BEGIN MPI CODE
#ifdef REMOTE 	// START OF REMOTE RENDERING HANDSHAKE

    // connect to relay server
    if (rank == 0) {
        sockfd = initconnection(HOSTNAME, PORT);
        if (sockfd == -1) {
            fprintf(stderr,"remote connection failed, sockfd=%d\n",sockfd);
            freeall();
            exit(0);
        }
        fprintf(stderr,"relay connection succeeded\n");
    }
    PRINTDEBUG("%3d: \n", rank);
    boolean_t connected = TRUE;
    int ctr = 0;
    while (connected) {  // main loop when steering
        fprintf(stderr,"%3d: before steering control\n", rank);
        if (rank == 0) {
            rc = recvstate(sockfd, &mystate);
            fprintf(stderr,"bytes recvd=%d\n", rc);
            if (mystate.finish) connected = 0;;
            winwidth = mystate.winwidth;
            winheight=mystate.winheight;
        } // end if rank == 0 for remote visualization
        // wait until we've completed the handshake with steering client before proceeding;
        MPI_Barrier(MPI_COMM_WORLD);
        MPI_Bcast(&connected, 1, MPI_INT, 0, MPI_COMM_WORLD);
        if (!connected) break;
        MPI_Bcast((float *)&winwidth, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
        MPI_Bcast((float *)&winheight, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
        MPI_Bcast(&mystate.alpha, 1, MPI_FLOAT, 0, MPI_COMM_WORLD);
        MPI_Bcast(mystate.newconst, 6, MPI_FLOAT, 0, MPI_COMM_WORLD);
        MPI_Bcast(mystate.mvm, 16, MPI_FLOAT, 0, MPI_COMM_WORLD);
        MPI_Bcast(mystate.pm, 16, MPI_FLOAT, 0, MPI_COMM_WORLD);
        MPI_Bcast(mystate.vv, 4, MPI_FLOAT, 0, MPI_COMM_WORLD);
#endif
        float planeconst[6] = {pzero[0], pzero[1], pzero[2], pzero[3], pzero[4], pzero[5]};
        setviewport(&viewport, 0, 0, winwidth, winheight);
        setplaneconst(planeconst, mystate.newconst);
        setmvm(mvm, mystate.mvm);
        setpm(pm, mystate.pm);
        setfrustum(&viewvolume, mystate.vv);
        updatevolbbox();
        initcolbufs(rank);

        // create and display the image
        unsigned long long lstart, lstop;
        for (int i=0; i<1; i++) {
            TIME(RENDER, lstart);
            createlocalimage(rank);
            // can't composite until all ranks have completed local image generation
            MPI_Barrier(MPI_COMM_WORLD);
            compositelocalimage();
            TIME(RENDER, lstop);
            PERFORMANCE(lstart, lstop, framenum, elapsed, avg);
        }
        // wait until all ranks exit composite step before writing image
        MPI_Barrier(MPI_COMM_WORLD);
        writeimage(ctr++);
#ifdef REMOTE
    } // end while remote loop
    if (rank == 0) disconnect(sockfd);
#endif // END OF REMOTE CLIENT  HANDSHAKE


    fprintf(stderr,"%3d: finished\n", rank);
    MPI_Barrier(MPI_COMM_WORLD);
    MPI_Finalize();
#endif
    // clean up
    freeall();
    exit(0);
}