コード例 #1
0
ファイル: parallel_phcpack.c プロジェクト: sommars/PHCpack
int start_system_broadcast ( int myid, int n, int *nbsols )
{
   int fail;

   if(myid == 0)                           /* manager reads start system */
   {
      fail = read_standard_start_system();
      fail = copy_start_system_to_container();
      fail = copy_start_solutions_to_container();
   }
   else
      /* initialize system container */
      fail = syscon_initialize_number_of_standard_polynomials(n);

   monomials_broadcast(myid,n);            /* broadcast container */

   if(myid != 0)                           /* copy result of broadcast */
   {
      fail = copy_container_to_start_system();
      fail = syscon_clear_standard_system(); /* clear system container */
   }
   else
      fail = solcon_number_of_standard_solutions(nbsols);

   return fail;
}
コード例 #2
0
ファイル: lib_witsols.c プロジェクト: janverschelde/PHCpack
int standard_laursys_write ( int topdim )
{
   int fail,dim,len;

   for(dim=0; dim<=topdim; dim++)
   {
      fail = copy_standard_laursys_witset(dim);
      fail = solcon_number_of_standard_solutions(&len);
      printf("-> number of points at dimension %d : %d\n",dim,len);
   }

   return fail;
}
コード例 #3
0
ファイル: lib_roco.c プロジェクト: callmetaste/PHCpack
int compute_m_homogeneous_Bezout_number ( int *b )
{
   int fail,mbz,ncp,nbsols;
   int size=256;
   char partition[size];
   char answer;

   fail = syscon_read_standard_system();
   printf("\nThe system in the container : \n");
   fail = syscon_write_standard_system();

   fail = m_homogeneous_Bezout_number(&mbz,&ncp,partition);
   printf("\nA m-homogeneous Bezout number : %d\n",mbz);
   printf("with partition %s.\n",partition);

   printf("\nDo you wnat to give a partition ? (y/n) ");
   scanf("%c",&answer);
   if(answer == 'y')
   {
      scanf("%c",&answer); /* skip newline */
      printf("\nReading a partition ...\nEnter a string : ");
      {
         int c,i;
         for(i=0; (c=getchar()) != EOF && c != '\n' && i < size; ++i)
            partition[i] = c;
         partition[i] = '\0';
         ncp = i+1;
      }
      printf("-> your partition : %s\n",partition);
      fail = m_partition_Bezout_number(&mbz,ncp,partition);
      printf("the m-homogeneous Bezout number : %d\n",mbz);
   }
   printf("\nConstructing a m-homogeneous start system ...\n");
   fail = m_homogeneous_start_system(ncp,partition);
   printf("An m-homogeneous linear-product start system :\n");
   fail = syscon_write_standard_system();

   fail = solve_linear_product_system();
   printf("\nThe solutions : \n");
   fail = solcon_write_standard_solutions();
   fail = solcon_number_of_standard_solutions(&nbsols);
   if(mbz == nbsols)
      printf("\nComputed %d solutions, as many as the root count.\n",nbsols);
   else
      printf("\nNumber of solutions computed %d /= %d, the root count ?!!\n",
             nbsols,mbz);

   return fail;
}
コード例 #4
0
ファイル: lib_nxtsol.c プロジェクト: callmetaste/PHCpack
int call_initialize_standard_homotopy ( int *index )
{
   int fail,len,fixed;

   fail = read_target_system_without_solutions();
   fail = read_standard_start_system();
   fail = copy_start_solutions_to_container();
   fail = solcon_number_of_standard_solutions(&len);
   printf("Number of start solutions : %d\n",len);
   printf("-> give index of solution : "); scanf("%d",index);
   printf("Fixed gamma constant ? (1 = yes/0 = no) "); scanf("%d",&fixed);
   fail = initialize_standard_homotopy(fixed);
   fail = initialize_standard_solution(*index);

   return fail;
}
コード例 #5
0
ファイル: lib_roco.c プロジェクト: callmetaste/PHCpack
int construct_start_system ( int r )
{
   int fail;
   int nbsols;

   fail = random_linear_product_system();
   printf("\nA random linear-product system :\n");
   fail = syscon_write_standard_system();
   fail = solve_linear_product_system();
   printf("\nThe solutions : \n");
   fail = solcon_write_standard_solutions();
   fail = solcon_number_of_standard_solutions(&nbsols);
   if(r == nbsols)
      printf("\nComputed %d solutions, as many as the root count.\n",nbsols);
   else
      printf("\nNumber of solutions computed %d /= %d, the root count ?!!\n",
             nbsols,r);

   return fail;
}
コード例 #6
0
ファイル: mpi2padcon.c プロジェクト: janverschelde/PHCpack
int standard_run ( int myid, int nbrp, int nbc, char* outfile, int verbose )
{
   int fail,dim,nbsols,mysolnum,len,*nbpaths;
   double startwtime,endwtime,wtime,*time;

   startwtime = MPI_Wtime();
   if(myid == 0)
   {
      time = (double*)calloc(nbrp,sizeof(double));
      nbpaths = (int*)calloc(nbrp,sizeof(int));
      fail = read_target_system_without_solutions();
      fail = copy_target_system_to_container();
      fail = syscon_number_of_standard_polynomials(&dim);
      fail = write_standard_target_system(); // writes to file
   }
   standard_dimensions_broadcast(myid,&dim,&dim);

   if(verbose > 0) printf("Process %d has dimension %d.\n",myid,dim);

   monomials_broadcast(myid,dim); // broadcast target system

   if(myid != 0) fail = copy_container_to_target_system();

   if(verbose > 0)
      if(myid == 1) fail = write_standard_target_system();

   if(myid == 0)
   {
      fail = read_standard_start_system();
      fail = copy_start_system_to_container();
      fail = write_standard_start_system(); // writes to file
      fail = write_start_solutions(); // writes solutions to file
      fail = copy_start_solutions_to_container();
      fail = solcon_number_of_standard_solutions(&nbsols);
      if(verbose>0) printf("Read %d start solutions.\n",nbsols);
   }
   else
      fail = syscon_initialize_number_of_standard_polynomials(dim);

   monomials_broadcast(myid,dim); // broadcast start system

   if(myid != 0) fail = copy_container_to_start_system();

   if(verbose > 0)
      if(myid == 1) fail = write_standard_start_system();

   parameters_broadcast(myid,nbrp,verbose);

   if(myid == 0) verbose = prompt_for_verbose();
   MPI_Barrier(MPI_COMM_WORLD);

   MPI_Bcast(&verbose,1,MPI_INT,0,MPI_COMM_WORLD);

   MPI_Bcast(&nbsols,1,MPI_INT,0,MPI_COMM_WORLD);
   solutions_distribute(myid,nbsols,dim,nbrp,&mysolnum);

   fail = solcon_number_of_standard_solutions(&len);
   if(verbose > 0) printf("Node %d has %d solutions.\n",myid,len);

   if(myid > 0)
   {
      fail = copy_container_to_start_solutions();
      fail = standard_track_paths(myid,nbrp,nbc,outfile,verbose);
   }
   MPI_Barrier(MPI_COMM_WORLD);
   solutions_collect(myid,nbsols,dim,nbrp,mysolnum);

   if(myid == 0)
   {
      fail = copy_container_to_target_solutions();
      fail = write_target_solutions();
   }
   endwtime = MPI_Wtime();
   wtime = endwtime-startwtime;
   MPI_Gather(&wtime,1,MPI_DOUBLE,time,1,MPI_DOUBLE,0,MPI_COMM_WORLD);
   MPI_Gather(&mysolnum,1,MPI_INT,nbpaths,1,MPI_INT,0,MPI_COMM_WORLD);

   if(myid == 0)
   {
      nbpaths[0] = nbsols;
      write_time_and_paths_to_defined_output_file(nbrp,time,nbpaths);
      free(time); free(nbpaths);
   }
   return 0;
}