Esempio n. 1
0
void 			init_env(t_env *e)
{
	int				i;
	struct rlimit	rlp;

	i = 0;
	if (getrlimit(RLIMIT_NOFILE, &rlp) < 0)
	{
		ft_putendl("getrlimit error");
		exit(-1);
	}
	e->maxfd = rlp.rlim_cur;
	e->fds = (t_fd*)malloc(sizeof(*e->fds) * e->maxfd);
	if (e->fds == NULL)
	{
		ft_putendl("malloc error");
		exit(-1);
	}
	while (i < e->maxfd)
	{
		init_fd(&e->fds[i]);
		i++;
	}
} 
void test_vs_n(){
  int n_set[] = {10000,20000,30000,40000,50000, 60000};
  int dim = 1000;
  int k = 10;
  int exp_no = 6;
  int nnz = 100;
  int ell = 50;

  double start, end, cpu_time_used;
  SparseMatrix A;
  SparseVector arr[60000]; 
  SparseSketcher sfd;
  FrequentDirections fd;

  double sfd_cov_err[exp_no], sfd_proj_err[exp_no], sfd_time[exp_no];
  double fd_cov_err[exp_no], fd_proj_err[exp_no], fd_time[exp_no];

  double tailSquaredFrob;


  for(int i=0; i<exp_no; i++){
    
    printf("i = %d\n", i);
    sfd_time[i] = 0;
    fd_time[i] = 0;

    init_sparseSketcher(&sfd, ell, dim);
    init_fd(&fd, ell, dim);

    // input matrix
    init_sparseMatrix(&A, dim, n_set[i]);

    for (int j=0; j < n_set[i]; j++){
      skew_init_sparseVector(&arr[j], dim, nnz, (int) (1.5 * nnz), 0.9);
      append_to_sparseMatrix(&A, &arr[j]);

      // SFD
      start = clock();
      append_to_sparseSketcher(&sfd, &arr[j]);
      sfd_time[i] += (double) (clock() - start);

      //FD
      start = clock();
      append_to_fd(&fd, &arr[j]);
      fd_time[i] += (double) (clock() - start); 
    }

    tailSquaredFrob = topRank(&A, k);

  
    //SFD
    start = clock();
    get_sparseSketch(&sfd);
    sfd_time[i] += (double) (clock() - start);
    sfd_time[i] = sfd_time[i] / CLOCKS_PER_SEC;
    sfd_cov_err[i] = computeRelCovErr(&A, sfd.sketch, ell, dim);
    sfd_proj_err[i] = computeRelProjErr(&A, sfd.sketch, ell, dim, k, tailSquaredFrob);

    
    //FD
    start = clock();
    get_fdSketch(&fd);
    fd_time[i] += (double) (clock() - start);
    fd_time[i] = fd_time[i] / CLOCKS_PER_SEC;
    fd_cov_err[i] = computeRelCovErr(&A, fd.sketch, ell, dim);
    fd_proj_err[i] = computeRelProjErr(&A, fd.sketch, ell, dim, k, tailSquaredFrob);  

  }

  printf("SFD:\n");
  print_one_dim_double("\'proj\':", sfd_proj_err, exp_no);
  print_one_dim_double("\'cov\':", sfd_cov_err, exp_no);  
  print_one_dim_double("\'time\':", sfd_time, exp_no);

  print_one_dim_double("\'proj\':", fd_proj_err, exp_no);    
  print_one_dim_double("\'cov\':", fd_cov_err, exp_no);
  print_one_dim_double("\'time\':", fd_time, exp_no);
    

}
int
main(int argc, char **argv)
{
  struct timeval start, end;
  int port=0;
  char *addr=NULL;
  int msg_size = 0;
  int fd=-1, i, newfd;
  int sec, usec;
  int number_iterations=0;
  socklen_t len;

  struct sockaddr_in sin;
  struct sockaddr_in from;

  while((i= getopt(argc,argv,"h:p:v?")) != EOF) {
    switch (i) {
    case 'v':
      verbose = 1;
      break;
    case 'h':
      addr = optarg;
      break;
    case 'p':
      port = strtol(optarg, NULL, 0);
      break;
    case '?':
    default:
      printf ("Use %s -h host -p port -i iterations -s msg_size \n",
	      argv[0]);
      return (-1);
    };
  }
  if (port == 0) {
      printf ("Use %s -p port [-h host] \n",
	      argv[0]);
      return (-1);
  }
  if(addr) {
    if (inet_pton(AF_INET, addr, (void *)&sin.sin_addr.s_addr) != 1) {
      printf("Address not parseable\n");
      return(-1);
    }
  } else {
    sin.sin_addr.s_addr = INADDR_ANY;
  }
  sin.sin_port = ntohs(port);
  sin.sin_family = AF_INET;
  sin.sin_len = sizeof(struct sockaddr_in);

  fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
  if( fd == -1) {
    printf("Can't open socket %d\n", errno);
    return(-1);
  }
  errno = 0;
  if(init_fd(&sin, fd)) {
    printf("Can't init fd errno:%d\n", errno);
    return (-1);
  }
  len = sizeof(from);
  handle_fd(fd);
  return (0);
}
Esempio n. 4
0
void tcpsrv_init()
{
    fd_c2s = init_fd(PORT_C2S);
    fd_s2c = init_fd(PORT_S2C);
}