void caffe_scal<float>(const int N, const float alpha, float *X) {
  cblas_sscal(N, alpha, X, 1);
}
void caffe_cpu_scale<float>(const int n, const float alpha, const float *x,
                            float* y) {
  cblas_scopy(n, x, 1, y, 1);
  cblas_sscal(n, alpha, y, 1);
}
示例#3
0
/**
 * @brief Normalizes all FSR scalar fluxes and Track boundary angular
 *        fluxes to the total fission source (times \f$ \nu \f$).
 */
void VectorizedSolver::normalizeFluxes() {

  FP_PRECISION* nu_sigma_f;
  FP_PRECISION volume;
  FP_PRECISION tot_fission_source;
  FP_PRECISION norm_factor;

  int size = _num_FSRs * _num_groups * sizeof(FP_PRECISION);
  FP_PRECISION* fission_sources = (FP_PRECISION*)MM_MALLOC(size, VEC_ALIGNMENT);

  /* Compute total fission source for each FSR, energy group */
#pragma omp parallel for private(volume, nu_sigma_f) schedule(guided)
  for (int r=0; r < _num_FSRs; r++) {

    /* Get pointers to important data structures */
    nu_sigma_f = _FSR_materials[r]->getNuSigmaF();
    volume = _FSR_volumes[r];

    /* Loop over energy group vector lengths */
    for (int v=0; v < _num_vector_lengths; v++) {

      /* Loop over each energy group within this vector */
#pragma simd vectorlength(VEC_LENGTH)
      for (int e=v*VEC_LENGTH; e < (v+1)*VEC_LENGTH; e++)
        fission_sources(r,e) = nu_sigma_f[e] * _scalar_flux(r,e);

      /* Loop over each energy group within this vector */
#pragma simd vectorlength(VEC_LENGTH)
      for (int e=v*VEC_LENGTH; e < (v+1)*VEC_LENGTH; e++)
        fission_sources(r,e) *= volume;
    }
  }

  /* Compute the total fission source */
  size = _num_FSRs * _num_groups;
#ifdef SINGLE
  tot_fission_source = cblas_sasum(size, fission_sources, 1);
#else
  tot_fission_source = cblas_dasum(size, fission_sources, 1);
#endif

  /* Deallocate memory for fission source array */
  MM_FREE(fission_sources);

  /* Compute the normalization factor */
  norm_factor = 1.0 / tot_fission_source;

  log_printf(DEBUG, "Tot. Fiss. Src. = %f, Normalization factor = %f",
             tot_fission_source, norm_factor);

  /* Normalize the FSR scalar fluxes */
#ifdef SINGLE
  cblas_sscal(size, norm_factor, _scalar_flux, 1);
  cblas_sscal(size, norm_factor, _old_scalar_flux, 1);
#else
  cblas_dscal(size, norm_factor, _scalar_flux, 1);
  cblas_dscal(size, norm_factor, _old_scalar_flux, 1);
#endif

  /* Normalize the Track angular boundary fluxes */
  size = 2 * _tot_num_tracks * _num_polar * _num_groups;

#ifdef SINGLE
  cblas_sscal(size, norm_factor, _boundary_flux, 1);
#else
  cblas_dscal(size, norm_factor, _boundary_flux, 1);
#endif

  return;
}
示例#4
0
  void LLC::Encode_with_max_pooling(const float* const data, const uint32_t dim,
                                    const uint32_t num_frame,
                                    float* const code) const
  {
    if (data == NULL || dim != dim_ || num_frame <= 0)
    {
      cerr << "ERROR in input data" << endl;
      exit(-1);
    }

    if (!has_setup_)
    {
      cerr << "ERROR: Must call SetUp() before." << endl;
      exit(-1);
    }

    vl_uint32* index = (vl_uint32*) vl_malloc(
        sizeof(vl_uint32) * num_knn_ * num_frame);
    memset(index, 0, num_knn_ * num_frame);
    float* dist(NULL);

    vl_kdforest_query_with_array(kdforest_model_, index, num_knn_, num_frame,
                                 dist, data);

    // start to encode
    const uint32_t len_code = num_base_;
    memset(code, 0, sizeof(float) * len_code);

    const uint32_t len_z = dim_ * num_knn_;
    const uint32_t len_C = num_knn_ * num_knn_;
    const uint32_t len_b = num_knn_;
    float* z = (float*) malloc(sizeof(float) * len_z);
    float* C = (float*) malloc(sizeof(float) * len_C);
    float* b = (float*) malloc(sizeof(float) * len_b);
    memset(z, 0, sizeof(float) * len_z);
    memset(C, 0, sizeof(float) * len_C);
    memset(b, 0, sizeof(float) * len_b);

    double sum(0);
    const float* base = base_.get();

    for (uint32_t i = 0; i < num_frame; i++)
    {

      uint32_t tmp_ind;

      // z = B_i - 1 * x_i'
      for (uint32_t n = 0; n < num_knn_; n++)
      {
        tmp_ind = (uint32_t) index[i * num_knn_ + n];
        memcpy(z + n * dim_, base + tmp_ind * dim_, sizeof(float) * dim_);

        cblas_saxpy(dim_, -1.0f, data + i * dim_, 1, z + n * dim_, 1);
      }

      // C = z * z', i.e. covariance matrix
      for (uint32_t m = 0; m < num_knn_; ++m)
        for (uint32_t n = m; n < num_knn_; ++n)
        {
          float sum = cblas_sdot(dim_, z + m * dim_, 1, z + n * dim_, 1);
          C[m * num_knn_ + n] = sum;
          C[n * num_knn_ + m] = sum;
        }

      sum = 0;
      for (uint32_t m = 0; m < num_knn_; m++)
        sum += C[m * num_knn_ + m];
      sum = sum * beta_;
      for (uint32_t m = 0; m < num_knn_; m++)
        C[m * num_knn_ + m] += sum;

      for (uint32_t m = 0; m < num_knn_; m++)
        b[m] = 1;

      // solve
      {
        char upper_triangle = 'U';
        int INFO;
        int int_one = 1;
        const int num_knn = (int) num_knn_;
        sposv(&upper_triangle, &num_knn, &int_one, C, &num_knn, b, &num_knn,
              &INFO);
      }

      sum = 0;

      for (uint32_t m = 0; m < num_knn_; m++)
        sum += b[m];
      cblas_sscal(num_knn_, 1.0 / sum, b, 1);

      for (uint32_t m = 0; m < num_knn_; m++)
      {
        tmp_ind = (uint32_t) index[i * num_knn_ + m];

        if (code[tmp_ind] < b[m])
          code[tmp_ind] = b[m];
      }
    }

    free(index);
    free(z);
    free(C);
    free(b);
  }
示例#5
0
void
test_scal (void) {
const double flteps = 1e-4, dbleps = 1e-6;
  {
   int N = 1;
   float alpha = 0.0f;
   float X[] = { 0.651f };
   int incX = -1;
   float expected[] = { 0.651f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 112)");
     }
   };
  };


  {
   int N = 1;
   float alpha = 0.1f;
   float X[] = { 0.651f };
   int incX = -1;
   float expected[] = { 0.651f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 113)");
     }
   };
  };


  {
   int N = 1;
   float alpha = 1.0f;
   float X[] = { 0.651f };
   int incX = -1;
   float expected[] = { 0.651f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 114)");
     }
   };
  };


  {
   int N = 1;
   double alpha = 0;
   double X[] = { 0.686 };
   int incX = -1;
   double expected[] = { 0.686 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 115)");
     }
   };
  };


  {
   int N = 1;
   double alpha = 0.1;
   double X[] = { 0.686 };
   int incX = -1;
   double expected[] = { 0.686 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 116)");
     }
   };
  };


  {
   int N = 1;
   double alpha = 1;
   double X[] = { 0.686 };
   int incX = -1;
   double expected[] = { 0.686 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 117)");
     }
   };
  };


  {
   int N = 1;
   float alpha[2] = {0.0f, 0.0f};
   float X[] = { 0.986f, -0.775f };
   int incX = -1;
   float expected[] = { 0.986f, -0.775f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 118) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 118) imag");
     };
   };
  };


  {
   int N = 1;
   float alpha[2] = {0.1f, 0.0f};
   float X[] = { 0.986f, -0.775f };
   int incX = -1;
   float expected[] = { 0.986f, -0.775f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 119) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 119) imag");
     };
   };
  };


  {
   int N = 1;
   float alpha[2] = {1.0f, 0.0f};
   float X[] = { 0.986f, -0.775f };
   int incX = -1;
   float expected[] = { 0.986f, -0.775f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 120) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 120) imag");
     };
   };
  };


  {
   int N = 1;
   float alpha[2] = {0.0f, 0.1f};
   float X[] = { 0.986f, -0.775f };
   int incX = -1;
   float expected[] = { 0.986f, -0.775f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 121) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 121) imag");
     };
   };
  };


  {
   int N = 1;
   float alpha[2] = {0.1f, 0.2f};
   float X[] = { 0.986f, -0.775f };
   int incX = -1;
   float expected[] = { 0.986f, -0.775f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 122) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 122) imag");
     };
   };
  };


  {
   int N = 1;
   float alpha[2] = {1.0f, 0.3f};
   float X[] = { 0.986f, -0.775f };
   int incX = -1;
   float expected[] = { 0.986f, -0.775f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 123) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 123) imag");
     };
   };
  };


  {
   int N = 1;
   double alpha[2] = {0, 0};
   double X[] = { 0.454, -0.478 };
   int incX = -1;
   double expected[] = { 0.454, -0.478 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 124) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 124) imag");
     };
   };
  };


  {
   int N = 1;
   double alpha[2] = {0.1, 0};
   double X[] = { 0.454, -0.478 };
   int incX = -1;
   double expected[] = { 0.454, -0.478 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 125) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 125) imag");
     };
   };
  };


  {
   int N = 1;
   double alpha[2] = {1, 0};
   double X[] = { 0.454, -0.478 };
   int incX = -1;
   double expected[] = { 0.454, -0.478 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 126) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 126) imag");
     };
   };
  };


  {
   int N = 1;
   double alpha[2] = {0, 0.1};
   double X[] = { 0.454, -0.478 };
   int incX = -1;
   double expected[] = { 0.454, -0.478 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 127) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 127) imag");
     };
   };
  };


  {
   int N = 1;
   double alpha[2] = {0.1, 0.2};
   double X[] = { 0.454, -0.478 };
   int incX = -1;
   double expected[] = { 0.454, -0.478 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 128) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 128) imag");
     };
   };
  };


  {
   int N = 1;
   double alpha[2] = {1, 0.3};
   double X[] = { 0.454, -0.478 };
   int incX = -1;
   double expected[] = { 0.454, -0.478 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 1; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 129) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 129) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha = 0.0f;
   float X[] = { 0.389f, -0.236f };
   int incX = 1;
   float expected[] = { 0.0f, -0.0f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 130)");
     }
   };
  };


  {
   int N = 2;
   float alpha = 0.1f;
   float X[] = { 0.389f, -0.236f };
   int incX = 1;
   float expected[] = { 0.0389f, -0.0236f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 131)");
     }
   };
  };


  {
   int N = 2;
   float alpha = 1.0f;
   float X[] = { 0.389f, -0.236f };
   int incX = 1;
   float expected[] = { 0.389f, -0.236f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 132)");
     }
   };
  };


  {
   int N = 2;
   double alpha = 0;
   double X[] = { -0.429, -0.183 };
   int incX = 1;
   double expected[] = { -0.0, -0.0 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 133)");
     }
   };
  };


  {
   int N = 2;
   double alpha = 0.1;
   double X[] = { -0.429, -0.183 };
   int incX = 1;
   double expected[] = { -0.0429, -0.0183 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 134)");
     }
   };
  };


  {
   int N = 2;
   double alpha = 1;
   double X[] = { -0.429, -0.183 };
   int incX = 1;
   double expected[] = { -0.429, -0.183 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 135)");
     }
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.0f, 0.0f};
   float X[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   int incX = 1;
   float expected[] = { -0.0f, 0.0f, 0.0f, 0.0f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 136) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 136) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.1f, 0.0f};
   float X[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   int incX = 1;
   float expected[] = { -0.0603f, 0.0239f, 0.0339f, -0.058f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 137) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 137) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {1.0f, 0.0f};
   float X[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   int incX = 1;
   float expected[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 138) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 138) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.0f, 0.1f};
   float X[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   int incX = 1;
   float expected[] = { -0.0239f, -0.0603f, 0.058f, 0.0339f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 139) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 139) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.1f, 0.2f};
   float X[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   int incX = 1;
   float expected[] = { -0.1081f, -0.0967f, 0.1499f, 0.0098f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 140) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 140) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {1.0f, 0.3f};
   float X[] = { -0.603f, 0.239f, 0.339f, -0.58f };
   int incX = 1;
   float expected[] = { -0.6747f, 0.0581f, 0.513f, -0.4783f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 141) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 141) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0, 0};
   double X[] = { -0.956, 0.613, 0.443, 0.503 };
   int incX = 1;
   double expected[] = { -0.0, 0.0, 0.0, 0.0 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 142) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 142) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0.1, 0};
   double X[] = { -0.956, 0.613, 0.443, 0.503 };
   int incX = 1;
   double expected[] = { -0.0956, 0.0613, 0.0443, 0.0503 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 143) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 143) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {1, 0};
   double X[] = { -0.956, 0.613, 0.443, 0.503 };
   int incX = 1;
   double expected[] = { -0.956, 0.613, 0.443, 0.503 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 144) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 144) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0, 0.1};
   double X[] = { -0.956, 0.613, 0.443, 0.503 };
   int incX = 1;
   double expected[] = { -0.0613, -0.0956, -0.0503, 0.0443 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 145) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 145) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0.1, 0.2};
   double X[] = { -0.956, 0.613, 0.443, 0.503 };
   int incX = 1;
   double expected[] = { -0.2182, -0.1299, -0.0563, 0.1389 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 146) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 146) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {1, 0.3};
   double X[] = { -0.956, 0.613, 0.443, 0.503 };
   int incX = 1;
   double expected[] = { -1.1399, 0.3262, 0.2921, 0.6359 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 147) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 147) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha = 0.0f;
   float X[] = { 0.629f, -0.419f };
   int incX = -1;
   float expected[] = { 0.629f, -0.419f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 148)");
     }
   };
  };


  {
   int N = 2;
   float alpha = 0.1f;
   float X[] = { 0.629f, -0.419f };
   int incX = -1;
   float expected[] = { 0.629f, -0.419f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 149)");
     }
   };
  };


  {
   int N = 2;
   float alpha = 1.0f;
   float X[] = { 0.629f, -0.419f };
   int incX = -1;
   float expected[] = { 0.629f, -0.419f };
   cblas_sscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], flteps, "sscal(case 150)");
     }
   };
  };


  {
   int N = 2;
   double alpha = 0;
   double X[] = { 0.398, -0.656 };
   int incX = -1;
   double expected[] = { 0.398, -0.656 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 151)");
     }
   };
  };


  {
   int N = 2;
   double alpha = 0.1;
   double X[] = { 0.398, -0.656 };
   int incX = -1;
   double expected[] = { 0.398, -0.656 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 152)");
     }
   };
  };


  {
   int N = 2;
   double alpha = 1;
   double X[] = { 0.398, -0.656 };
   int incX = -1;
   double expected[] = { 0.398, -0.656 };
   cblas_dscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[i], expected[i], dbleps, "dscal(case 153)");
     }
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.0f, 0.0f};
   float X[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   int incX = -1;
   float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 154) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 154) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.1f, 0.0f};
   float X[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   int incX = -1;
   float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 155) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 155) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {1.0f, 0.0f};
   float X[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   int incX = -1;
   float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 156) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 156) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.0f, 0.1f};
   float X[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   int incX = -1;
   float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 157) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 157) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {0.1f, 0.2f};
   float X[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   int incX = -1;
   float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 158) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 158) imag");
     };
   };
  };


  {
   int N = 2;
   float alpha[2] = {1.0f, 0.3f};
   float X[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   int incX = -1;
   float expected[] = { 0.736f, 0.331f, -0.318f, 0.622f };
   cblas_cscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], flteps, "cscal(case 159) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], flteps, "cscal(case 159) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0, 0};
   double X[] = { 0.521, -0.811, 0.556, -0.147 };
   int incX = -1;
   double expected[] = { 0.521, -0.811, 0.556, -0.147 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 160) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 160) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0.1, 0};
   double X[] = { 0.521, -0.811, 0.556, -0.147 };
   int incX = -1;
   double expected[] = { 0.521, -0.811, 0.556, -0.147 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 161) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 161) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {1, 0};
   double X[] = { 0.521, -0.811, 0.556, -0.147 };
   int incX = -1;
   double expected[] = { 0.521, -0.811, 0.556, -0.147 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 162) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 162) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0, 0.1};
   double X[] = { 0.521, -0.811, 0.556, -0.147 };
   int incX = -1;
   double expected[] = { 0.521, -0.811, 0.556, -0.147 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 163) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 163) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {0.1, 0.2};
   double X[] = { 0.521, -0.811, 0.556, -0.147 };
   int incX = -1;
   double expected[] = { 0.521, -0.811, 0.556, -0.147 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 164) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 164) imag");
     };
   };
  };


  {
   int N = 2;
   double alpha[2] = {1, 0.3};
   double X[] = { 0.521, -0.811, 0.556, -0.147 };
   int incX = -1;
   double expected[] = { 0.521, -0.811, 0.556, -0.147 };
   cblas_zscal(N, alpha, X, incX);
   {
     int i;
     for (i = 0; i < 2; i++) {
       gsl_test_rel(X[2*i], expected[2*i], dbleps, "zscal(case 165) real");
       gsl_test_rel(X[2*i+1], expected[2*i+1], dbleps, "zscal(case 165) imag");
     };
   };
  };


}
示例#6
0
  void DSift::Extract(const float* gray_img, const uint32_t width,
                      const uint32_t height, vector<VlDsiftKeypoint>* frames,
                      vector<float>* descrs, uint32_t* dim)
  {
    if (frames != NULL)
      frames->clear();

    if (descrs == NULL || dim == NULL)
    {
      cerr << "NULL pointer for descriptors and dim" << endl;
      exit(-1);
    }
    descrs->clear();
    *dim = 0;

    const uint32_t max_sz = *(std::max_element(sizes_.begin(), sizes_.end()));
    const uint32_t len_img = width * height;

    if (!has_setup_)
      SetUp(width, height);
    else
    {
      if (width != width_ || height != height_)
      {
        cerr << "ERROR: Image size not matching!" << endl;
        exit(-1);
      }
    }

    for (size_t i = 0; i < sizes_.size(); ++i)
    {
      const uint32_t sz = sizes_[i];

      const int off = std::floor(1.5 * (max_sz - sz));
      vl_dsift_set_bounds(dsift_model_, bound_minx_ + std::max(0, off),
                          bound_miny_ + std::max(0, off),
                          std::min((int) width - 1, bound_maxx_),
                          std::min((int) height - 1, bound_maxy_));

      VlDsiftDescriptorGeometry geom;
      geom.numBinX = DEFAULT_NUM_BIN_X;
      geom.numBinY = DEFAULT_NUM_BIN_Y;
      geom.numBinT = DEFAULT_NUM_BIN_T;
      geom.binSizeX = sz;
      geom.binSizeY = sz;
      vl_dsift_set_geometry(dsift_model_, &geom);

      /*
       {
       int stepX;
       int stepY;
       int minX;
       int minY;
       int maxX;
       int maxY;
       vl_bool useFlatWindow;

       int numFrames = vl_dsift_get_keypoint_num(dsift_model_);
       int descrSize = vl_dsift_get_descriptor_size(dsift_model_);
       VlDsiftDescriptorGeometry g = *vl_dsift_get_geometry(dsift_model_);

       vl_dsift_get_steps(dsift_model_, &stepY, &stepX);
       vl_dsift_get_bounds(dsift_model_, &minY, &minX, &maxY, &maxX);
       useFlatWindow = vl_dsift_get_flat_window(dsift_model_);

       printf(
       "vl_dsift: bounds:            [minX,minY,maxX,maxY] = [%d, %d, %d, %d]\n",
       minX + 1, minY + 1, maxX + 1, maxY + 1);
       printf("vl_dsift: subsampling steps: stepX=%d, stepY=%d\n", stepX,
       stepY);
       printf(
       "vl_dsift: num bins:          [numBinT, numBinX, numBinY] = [%d, %d, %d]\n",
       g.numBinT, g.numBinX, g.numBinY);
       printf("vl_dsift: descriptor size:   %d\n", descrSize);
       printf("vl_dsift: bin sizes:         [binSizeX, binSizeY] = [%d, %d]\n",
       g.binSizeX, g.binSizeY);
       printf("vl_dsift: flat window:       %s\n", VL_YESNO(useFlatWindow));
       printf("vl_dsift: window size:       %g\n",
       vl_dsift_get_window_size(dsift_model_));
       printf("vl_dsift: num of features:   %d\n", numFrames);
       }
       */

      const float sigma = 1.0 * sz / magnif_;
      float* smooth_img = (float*) malloc(sizeof(float) * len_img);
      memset(smooth_img, 0, sizeof(float) * len_img);
      vl_imsmooth_f(smooth_img, width, gray_img, width, height, width, sigma,
                    sigma);

      vl_dsift_process(dsift_model_, smooth_img);

      free(smooth_img);

      const int num_key_pts = vl_dsift_get_keypoint_num(dsift_model_);
      const VlDsiftKeypoint* key_points = vl_dsift_get_keypoints(dsift_model_);
      *dim = vl_dsift_get_descriptor_size(dsift_model_);
      const float* features = vl_dsift_get_descriptors(dsift_model_);

      float* f = (float*) malloc(sizeof(float) * num_key_pts * (*dim));
      cblas_scopy(num_key_pts * (*dim), features, 1, f, 1);
      cblas_sscal(num_key_pts * (*dim), 512.0f, f, 1);

      for (uint32_t d = 0; d < num_key_pts; ++d)
      {
        const float norm = (key_points + d)->norm;
        if (norm < contr_thrd_)
        {
          // remove low contrast
          memset(f + d * (*dim), 0, sizeof(float) * (*dim));
        }
        else
        {
          for (uint32_t j = d * (*dim); j < (d + 1) * (*dim); ++j)
          {
            float tmp = VL_MIN(f[j], 255.0);
            if (!float_desc_)
              tmp = (int) tmp;
            f[j] = tmp;
          }
        }
      }

      if (i == 0)
      {
        if (frames != NULL)
          frames->reserve(num_key_pts * sizes_.size());

        descrs->reserve(num_key_pts * sizes_.size() * (*dim));
      }

      if (frames != NULL)
        frames->insert(frames->end(), key_points, key_points + num_key_pts);

      descrs->insert(descrs->end(), f, f + num_key_pts * (*dim));

      free(f);
    }
  }
示例#7
0
inline void Matrix<float>::operator*=(float value)
{
	cblas_sscal(shape().prod(), value, _data, 1);
}
void HostVector<float>::Scale(const float alpha) {

  cblas_sscal(this->size_, alpha, this->vec_, 1);

}
示例#9
0
void caffe_scal<float>(const int N, const float alpha, float *X) {
  cblas_sscal(N, alpha, X, 1);
  //std::copy(X, X + N, std::ostream_iterator<float>(std::cout, "\t"));
}
示例#10
0
// In addition, MKL comes with an additional function axpby that is not present
// in standard blas. We will simply use a two-step (inefficient, of course) way
// to mimic that.
inline void cblas_saxpby(const int N, const float alpha, const float* X,
                         const int incX, const float beta, float* Y,
                         const int incY) {
  cblas_sscal(N, beta, Y, incY);
  cblas_saxpy(N, alpha, X, incX, Y, incY);
}
示例#11
0
VALUE rb_blas_xscal_mod(int argc, VALUE *argv, VALUE self)
{
  Matrix *dx;
  int incx;
  int n;
  float da_f;
  double da_d;
  float da_c[2];
  double da_z[2];
  //char error_msg[64];
  VALUE da_value,  n_value,  incx_value;
  
  rb_scan_args(argc, argv, "12", &da_value, &incx_value, &n_value);
  
  Data_Get_Struct(self, Matrix, dx);

  if(incx_value == Qnil)
    incx = 1;
  else
    incx = NUM2INT(incx_value);
  
  if(n_value == Qnil)
    n = dx->nrows;
  else
    n = NUM2INT(n_value);

  if(dx == NULL || dx->ncols != 1)
  { //sprintf(error_msg, "Self is not a Vector");
    rb_raise(rb_eRuntimeError, "Self is not a Vector");
  }
  
  switch(dx->data_type)
  {
  case Single_t: //s
    if(da_value == Qnil)
      da_f = (float) 1.0;
    else
      da_f = (float) NUM2DBL(da_value);
    cblas_sscal(n , da_f, (float *)dx->data, incx ); 
    break;
  case Double_t: //d
    if(da_value == Qnil)
      da_d = (double) 1.0;
    else
      da_d = NUM2DBL(da_value);
    cblas_dscal(n , da_d, (double *)dx->data, incx ); 
    break;
  case Complex_t: //c
    if(da_value == Qnil)
    {
      da_c[0] = (float) 1.0;
      da_c[1] = (float) 0.0;
    }
    else
    {
      da_c[0] = (float) NUM2DBL(rb_funcall( rb_intern("Complex"),  rb_intern("real"),  1, da_value) );
      da_c[1] = (float) NUM2DBL(rb_funcall(rb_intern("Complex"),  rb_intern("image"),  1, da_value ) );
    }
    cblas_cscal(n , da_c, dx->data, incx ); 
    break;
  case Double_Complex_t: //z
    if(da_value == Qnil)
    {
      da_z[0] = (double) 1.0;
      da_z[1] = (double) 0.0;
    }
    else
    {
      da_z[0] = NUM2DBL(rb_funcall( rb_intern("Complex"),  rb_intern("real"),  1, da_value) );
      da_z[1] = NUM2DBL(rb_funcall(rb_intern("Complex"),  rb_intern("image"),  1, da_value ) );
    }
    cblas_zscal(n , da_z, dx->data, incx ); 
    break;
  default:
    //sprintf(error_msg, "Invalid data_type (%d) in Matrix", dx->data_type);
    rb_raise(rb_eRuntimeError, "Invalid data_type (%d) in Matrix", dx->data_type);
    break; //Never reaches here.
  }

  return self;
}
示例#12
0
int CORE_ststrf(int M, int N, int IB, int NB,
                float *U, int LDU,
                float *A, int LDA,
                float *L, int LDL,
                int *IPIV,
                float *WORK, int LDWORK,
                int *INFO)
{
    static float zzero = 0.0;
    static float mzone =-1.0;

    float alpha;
    int i, j, ii, sb;
    int im, ip;

    /* Check input arguments */
    *INFO = 0;
    if (M < 0) {
        coreblas_error(1, "Illegal value of M");
        return -1;
    }
    if (N < 0) {
        coreblas_error(2, "Illegal value of N");
        return -2;
    }
    if (IB < 0) {
        coreblas_error(3, "Illegal value of IB");
        return -3;
    }
    if ((LDU < max(1,NB)) && (NB > 0)) {
        coreblas_error(6, "Illegal value of LDU");
        return -6;
    }
    if ((LDA < max(1,M)) && (M > 0)) {
        coreblas_error(8, "Illegal value of LDA");
        return -8;
    }
    if ((LDL < max(1,IB)) && (IB > 0)) {
        coreblas_error(10, "Illegal value of LDL");
        return -10;
    }

    /* Quick return */
    if ((M == 0) || (N == 0) || (IB == 0))
        return PLASMA_SUCCESS;

    /* Set L to 0 */
    memset(L, 0, LDL*N*sizeof(float));

    ip = 0;
    for (ii = 0; ii < N; ii += IB) {
        sb = min(N-ii, IB);

        for (i = 0; i < sb; i++) {
            im = cblas_isamax(M, &A[LDA*(ii+i)], 1);
            IPIV[ip] = ii+i+1;

            if (fabsf(A[LDA*(ii+i)+im]) > fabsf(U[LDU*(ii+i)+ii+i])) {
                /*
                 * Swap behind.
                 */
                cblas_sswap(i, &L[LDL*ii+i], LDL, &WORK[im], LDWORK );
                /*
                 * Swap ahead.
                 */
                cblas_sswap(sb-i, &U[LDU*(ii+i)+ii+i], LDU, &A[LDA*(ii+i)+im], LDA );
                /*
                 * Set IPIV.
                 */
                IPIV[ip] = NB + im + 1;

                for (j = 0; j < i; j++) {
                    A[LDA*(ii+j)+im] = zzero;
                }
            }

            if ((*INFO == 0) && (fabsf(A[LDA*(ii+i)+im]) == zzero)
                && (fabsf(U[LDU*(ii+i)+ii+i]) == zzero)) {
                *INFO = ii+i+1;
            }

            alpha = ((float)1. / U[LDU*(ii+i)+ii+i]);
            cblas_sscal(M, (alpha), &A[LDA*(ii+i)], 1);
            cblas_scopy(M, &A[LDA*(ii+i)], 1, &WORK[LDWORK*i], 1);
            cblas_sger(
                CblasColMajor, M, sb-i-1,
                (mzone), &A[LDA*(ii+i)], 1,
                &U[LDU*(ii+i+1)+ii+i], LDU,
                &A[LDA*(ii+i+1)], LDA );
            ip = ip+1;
        }
        /*
         * Apply the subpanel to the rest of the panel.
         */
        if(ii+i < N) {
            for(j = ii; j < ii+sb; j++) {
                if (IPIV[j] <= NB) {
                    IPIV[j] = IPIV[j] - ii;
                }
            }

            CORE_sssssm(
                NB, N-(ii+sb), M, N-(ii+sb), sb, sb,
                &U[LDU*(ii+sb)+ii], LDU,
                &A[LDA*(ii+sb)], LDA,
                &L[LDL*ii], LDL,
                WORK, LDWORK, &IPIV[ii]);

            for(j = ii; j < ii+sb; j++) {
                if (IPIV[j] <= NB) {
                    IPIV[j] = IPIV[j] + ii;
                }
            }
        }
    }
    return PLASMA_SUCCESS;
}
示例#13
0
 DLLEXPORT void s_scale(const blasint n, const float alpha, float x[]) {
     cblas_sscal(n, alpha, x, 1);
 }
void STARPU_SSCAL(int N, float alpha, float *X, int incX)
{
	cblas_sscal(N, alpha, X, incX);
}
示例#15
0
void CpuDevice<float>::Axpby(float alpha, const Values<float> &x, float beta, Values<float> *y) {
    // TODO(robertsdionne): Figure out why clang thinks cblas_saxpby is an undefined symbol.
    cblas_sscal(y->width, beta, y->values.data(), 1);
    cblas_saxpy(x.width, alpha, x.values.data(), 1, y->values.data(), 1);
}