Пример #1
0
int
sendul(int sock,unsigned long ul)
{
  char buf[MAX_ULSTR + 1];

  sprintf(buf,"%lu",ul);
  DLOG_MSG(("sendul() : x_send(%d,%lu) buf=%s",sock,ul,buf));
  if (!x_send(sock,buf,sizeof buf)) {
    DLOG_ERROR(("sendul()"));
    return 0;
  }
  return 1;
}
Пример #2
0
void            s_hello(SOCKET *sock, char *name, int put)
{
  char          *msg;
  char          buffer[SIZE_BUFFER];

  msg = malloc(100);
  create_mesg(msg, HELLO, name, NULL);
  x_send(*sock, msg);
  x_recv(*sock, buffer);
  if (put) {
    my_putstr(buffer);
  }
}
Пример #3
0
static
void run_pp_server(void)
{
	if (!arg_pscom) {
		while (1) {
			x_recv();
			x_send(8); // ToDo:
		}
	} else {
		while (1) {
			int len;
			len = x_recv_pscom();
			x_send_pscom(len);
		}
	}
}
Пример #4
0
int
sendstr(int sock,char *s)
{
  size_t len = s ? strlen(s) : 0;

  DLOG_MSG(("sendstr() : sendul(%d,%lu)",sock,(unsigned long)len));
  if (!sendul(sock,(unsigned long)len))
    return 0;
  if (len > 0) {
    DLOG_MSG(("sendstr() : x_send(%d,%s)",sock,s));
    if (!x_send(sock,s,len)) {
      DLOG_ERROR(("sendstr()"));
      return 0;
    }
  }
  return 1;
}
Пример #5
0
static
int run_pp_c(int msize, int loops)
{
	int cnt;
	if (!arg_pscom) {
		for (cnt = 0; cnt < loops; cnt++) {
			x_send(msize);
			x_recv();
		}
	} else {
		for (cnt = 0; cnt < loops; cnt++) {
			int len;
			x_send_pscom(msize);
			len = x_recv_pscom();
			assert(len == msize);
		}
	}
	return 0;
}
Пример #6
0
void CR_Matrix::multiply(
  const double * const x ,
        double * const y ) const
{
  if ( 1 < m_comm_size ) {

    std::vector<double> x_work( m_work_disp[ m_comm_size ] );

    { // Remote gathered portion:
      std::vector<double> x_send( m_send_disp[ m_comm_size ] );

      for ( unsigned i = 0 ; i < m_send_map.size() ; ++i ) {
        x_send[i] = x[ m_send_map[i] ];
      }

      // Skips local-to-local
      all_to_all( m_comm , PARALLEL_DATATYPE_DOUBLE , m_sparse ,
                  & x_send[0] , & m_send_disp[0] ,
                  & x_work[0] , & m_work_disp[0] );
    }

    { // Local portion:
      double * d = & x_work[0] + m_work_disp[ m_comm_rank ];
      const double * s = x ;
      const double * const e = x + m_row_size ;
      while ( e != s ) { *d++ = *s++ ; }
    }

    txblas_cr_mxv( m_row_size ,
                   & m_prefix[0] ,
                   & m_coli[0] ,
                   & m_coef[0] ,
                   & x_work[0] , y );
  }
  else {
    txblas_cr_mxv( m_row_size ,
                   & m_prefix[0] ,
                   & m_coli[0] ,
                   & m_coef[0] ,
                   x , y );
  }
}