Example #1
0
 DistVec& operator=(const DistVec & vec){
   assert(offset < (info.is_square() ? 2*data_size: data_size));
   if (mi.x_offset == -1 && mi.y_offset == -1){
     mi.y_offset = vec.offset;
   }  
   mi.r_offset = offset;
   assert(prev_offset < data_size);
   mi.prev_offset = prev_offset;
   if (mi.d == 0.0)
     mi.d=1.0;
   transpose = vec.transpose;
   end = vec.end; 
   start = vec.start;
   mi.start = start;
   mi.end = end;
   graphchi_engine<VertexDataType, EdgeDataType> engine(training, nshards, false, m); 
   engine.set_disable_vertexdata_storage();  
   engine.set_modifies_inedges(false);
   engine.set_modifies_outedges(false);
   Axb program;
   engine.run(program, 1);
   debug_print(name);
   mi.reset_offsets();
   return *this;
 }
Example #2
0
void init_math(graph_type * _pgraph, bipartite_graph_descriptor & _info, double ortho_repeats = 3, 
    bool update_function = false){
  pgraph = _pgraph;
  info = _info;
  mi.reset_offsets();
  mi.update_function = update_function;
  mi.ortho_repeats = ortho_repeats;
}
Example #3
0
DistVec& DistVec::operator=(DistMat &mat){
  mi.r_offset = offset;
  assert(prev_offset < data_size);
  mi.prev_offset = prev_offset;
  transpose = mat.transpose;
  mi.start = info.get_start_node(!transpose);
  mi.end = info.get_end_node(!transpose);
  //graphchi_engine<VertexDataType, EdgeDataType> engine(training, nshards, false, m); 
  //set_engine_flags(engine);
  //Axb program;
  pengine->run(program, 1);
  debug_print(name);
  mi.reset_offsets();
  mat.transpose = false;
  return *this;
}
Example #4
0
DistVec& DistVec::operator=(DistMat &mat){
  mi.r_offset = offset;
  assert(prev_offset < data_size);
  mi.prev_offset = prev_offset;
  transpose = mat.transpose;
  mi.start = info.get_start_node(!transpose);
  mi.end = info.get_end_node(!transpose);
  graphchi_engine<VertexDataType, EdgeDataType> engine(training, nshards, false, m); 
  engine.set_disable_vertexdata_storage();  
  Axb program;
  engine.set_modifies_inedges(false);
  engine.set_modifies_outedges(false);
  engine.run(program, 1);
  debug_print(name);
  mi.reset_offsets();
  mat.transpose = false;
  return *this;
}
Example #5
0
DistDouble DistVec::operator*(const DistVec & vec){
  mi.y_offset = offset;
  mi.b_offset = vec.offset;
  if (mi.d == 0) 
    mi.d = 1.0;
  assert(mi.y_offset >=0 && mi.b_offset >= 0);

  double val = 0;
  for (int i=start; i< end; i++){  
    assert(false);//not yet
    //TODO const vertex_data * data = &pgraph->vertex_data(i);
    //TODO double * pv = (double*)&data->pvec[0];
    //TODO val += mi.d* pv[mi.y_offset] * pv[mi.b_offset];
  }
  mi.reset_offsets();
  DistDouble mval;
  mval.val = val;
  return mval;
}
Example #6
0
DistDouble DistVec::operator*(const DistVec & vec){
  mi.y_offset = offset;
  mi.b_offset = vec.offset;
  if (mi.d == 0) 
    mi.d = 1.0;
  assert(mi.y_offset >=0 && mi.b_offset >= 0);

  double val = 0;
  for (int i=start; i< end; i++){  
    const vertex_data * data = &latent_factors_inmem[i];
    double * pv = (double*)&data->pvec[0];
    // if (y_offset >= 0 && b_offset == -1)
    //val += pv[y_offset] * pv[y_offset];
    val += mi.d* pv[mi.y_offset] * pv[mi.b_offset];
  }
  mi.reset_offsets();
  DistDouble mval;
  mval.val = val;
  return mval;
}
Example #7
0
DistVec& DistVec::operator=(DistMat &mat){
  mi.r_offset = offset;
  assert(prev_offset < data_size);
  mi.prev_offset = prev_offset;
  transpose = mat.transpose;
  mi.start = info.get_start_node(!transpose);
  mi.end = info.get_end_node(!transpose);
  INITIALIZE_TRACER(Axbtrace, "Axb update function");
  BEGIN_TRACEPOINT(Axbtrace);
  pcurrent = this;
  int old_start = start; int old_end = end;
  start = mi.start; end = mi.end;
  start_engine();
  start = old_start; end = old_end;
  END_TRACEPOINT(Axbtrace);
  debug_print(name);
  mi.reset_offsets();
  mat.transpose = false;
  return *this;
}
Example #8
0
 DistVec& operator=(const DistVec & vec){
   assert(offset < (info.is_square() ? 2*data_size: data_size));
   if (mi.x_offset == -1 && mi.y_offset == -1){
     mi.y_offset = vec.offset;
   }  
   mi.r_offset = offset;
   assert(prev_offset < data_size);
   mi.prev_offset = prev_offset;
   if (mi.d == 0.0)
     mi.d=1.0;
   transpose = vec.transpose;
   end = vec.end; 
   start = vec.start;
   mi.start = start;
   mi.end = end;
   //graphchi_engine<VertexDataType, EdgeDataType> engine(training, nshards, false, m); 
   //set_engine_flags(engine);
   //Axb program;
   pengine->run(program, 1);
   debug_print(name);
   mi.reset_offsets();
   return *this;
 }
Example #9
0
DistVec& DistVec::operator=(const DistVec & vec){
      assert(offset < (info.is_square() ? 2*data_size: data_size));
      if (mi.x_offset == -1 && mi.y_offset == -1){
        mi.y_offset = vec.offset;
      }  
      mi.r_offset = offset;
      assert(prev_offset < data_size);
      mi.prev_offset = prev_offset;
      if (mi.d == 0.0)
        mi.d=1.0;
      transpose = vec.transpose;
      end = vec.end; 
      start = vec.start;
      mi.start = start;
      mi.end = end;
      INITIALIZE_TRACER(Axbtrace2, "Update function Axb");
      BEGIN_TRACEPOINT(Axbtrace2);
      pcurrent = (DistVec*)&vec;
      start_engine();
      debug_print(name);
      mi.reset_offsets();
      return *this;
    }
Example #10
0
void init_math(bipartite_graph_descriptor & _info, double ortho_repeats = 3){
  info = _info;
  mi.reset_offsets();
  mi.ortho_repeats = ortho_repeats;
}