示例#1
0
  void caffe_gpu_gemv(
      const CBLAS_TRANSPOSE TransA,
      const int m,
      const int n,
      const T alpha,
      const T* A,
      const int step_A,
      const T* x,
      const int step_x,
      const T beta,
      T* y,
      const int step_y) {

    clblasTranspose clTransA;
    switch (TransA) {
      case CblasNoTrans:
        clTransA = clblasNoTrans;
        break;
      case CblasTrans:
        clTransA = clblasTrans;
        break;
      case CblasConjTrans:
        clTransA = clblasConjTrans;
        break;
      default:
        LOG(ERROR)<< "unknown transpose mode.";
        return;
      }

#ifdef USE_CLGEMM
    BOOL_CHECK(caffe::OpenCL::clgemv<T>(clTransA, m, n, alpha, A, step_A, x, step_x, beta, y, step_y));
#else
    BOOL_CHECK(caffe::OpenCL::clBLASgemv<T>(clTransA, m, n, alpha, A, step_A, x, step_x, beta, y, step_y));
#endif
  }
示例#2
0
bool SA_fsup::GetMarkerFrequency(double &freqHz) {
    char freqBuffer[200];
    ZeroMemory(freqBuffer, 200);
    BOOL_CHECK(Print("CALC:MARK1:X?;*WAI"));
    BOOL_CHECK(Read(freqBuffer, 200));
    freqHz = atof(freqBuffer);
    return true;
}
示例#3
0
bool SA_fsup::SetAverTrace(bool isEnable, int traceCount) {
    if (isEnable) {
        BOOL_CHECK(Print("AVER:COUN %d;*WAI", traceCount));
        BOOL_CHECK(Print("AVER:STAT ON;*WAI"));
    } else {
        BOOL_CHECK(Print("AVER:STAT OFF;*WAI"));
    }
    return true;
}
示例#4
0
  void caffe_gpu_gemm(
      const CBLAS_TRANSPOSE TransA,
      const CBLAS_TRANSPOSE TransB,
      const int M,
      const int N,
      const int K,
      const T alpha,
      const T* A,
      const size_t idx_offset_A,
      const T* B,
      const size_t idx_offset_B,
      const T beta,
      T* C,
      const size_t idx_offset_C,
      cl_event* event) {

    clblasTranspose clTransA;
    switch (TransA) {
      case CblasNoTrans:
        clTransA = clblasNoTrans;
        break;
      case CblasTrans:
        clTransA = clblasTrans;
        break;
      case CblasConjTrans:
        clTransA = clblasConjTrans;
        break;
      default:
        LOG(ERROR)<< "unknown transpose mode.";
        return;
      }

    clblasTranspose clTransB;
    switch (TransB) {
      case CblasNoTrans:
        clTransB = clblasNoTrans;
        break;
      case CblasTrans:
        clTransB = clblasTrans;
        break;
      case CblasConjTrans:
        clTransB = clblasConjTrans;
        break;
      default:
        LOG(ERROR)<< "unknown transpose mode.";
        return;
      }

#ifdef USE_CLGEMM
    BOOL_CHECK(caffe::OpenCL::clgemm<T>(clTransA, clTransB, M, N, K, alpha, A, idx_offset_A, B, idx_offset_B, beta, C, idx_offset_C, event));
#else
    BOOL_CHECK(caffe::OpenCL::clBLASgemm<T>(clTransA, clTransB, M, N, K, alpha, A, idx_offset_A, B, idx_offset_B, beta, C, idx_offset_C));
#endif
  }
示例#5
0
bool SA_fsup::GetMarkerPwr(double &dbm) {
    char dbmBuffer[200];
    double freqHz;

    ZeroMemory(dbmBuffer, 200);
    BOOL_CHECK(Print("CALC:MARK1:Y?;*WAI"));
    BOOL_CHECK(Read(dbmBuffer, 200));
    BOOL_CHECK(GetMarkerFrequency(freqHz));

    dbm = atof(dbmBuffer);

    if (m_isEnableCableLoss) {
        dbm -= m_cableLossData.GetData(freqHz, dbm);
    }
    return true;
}
示例#6
0
bool SA_fsup::SetAverTraceAndGetData(int traceCount, int pointCount, double *data) {
    int bufferSize = 18 * pointCount;
    char *buffer = new char[bufferSize];
    BOOL_CHECK(Print("SWE:POIN %d;*WAI", pointCount));
    BOOL_CHECK(SetAverTrace(true, traceCount));
    BOOL_CHECK(SweepOnce());
    BOOL_CHECK(Print("FORM ASCii;*WAI"));
    BOOL_CHECK(Print("TRAC? TRACE1;*WAI"));
    BOOL_CHECK(Read(buffer, bufferSize));

    int dataIdx = 0, lastIdx = 0;
    for (int i = 0; i < bufferSize; i++) {
        if (buffer[i] == ',' || i == bufferSize - 1) {
            buffer[i] = 0;
            data[dataIdx++] = atof(&buffer[lastIdx]);
            lastIdx = i + 1;
            i++;
        }
    }
    delete[] buffer;
    return true;
}
示例#7
0
  void caffe_gpu_axpy(const int N, const T alpha, const T* X, T* Y) {

    BOOL_CHECK(caffe::OpenCL::clBLASaxpy<T>(N, alpha, X, 1, Y, 1));
  }
示例#8
0
 void caffe_gpu_mul(const int n, const T* x, const T* y, T* z) {
   BOOL_CHECK(caffe::OpenCL::clmul<T>(n, x, y, z));
 }
示例#9
0
 void caffe_gpu_scale(const int n, const float alpha, const T* x, T* y) {
   BOOL_CHECK(caffe::OpenCL::clBLASscal<T>(n, alpha, x, y));
 }
示例#10
0
 void caffe_gpu_rng_bernoulli(const int n, const T1 p, T2* r) {
   BOOL_CHECK(caffe::OpenCL::cl_caffe_gpu_rng_bernoulli(n, p, r));
 }
示例#11
0
 void caffe_gpu_abs(const int n, const T* x, T* y) {
   BOOL_CHECK(caffe::OpenCL::clabs<T>(n, x, y));
 }
示例#12
0
 void caffe_gpu_sgnbit(const int n, const T* x, T* y) {
   BOOL_CHECK(caffe::OpenCL::clsgnbit<T>(n, x, y));
 }
示例#13
0
 void caffe_gpu_rng_gaussian(const int n, const T mu, const T sigma, T* r) {
   BOOL_CHECK(caffe::OpenCL::cl_caffe_gpu_rng_gaussian(n, mu, sigma, r));
 }
示例#14
0
 void caffe_gpu_add(const int n, const T* a, const T* b, T* y) {
   BOOL_CHECK(caffe::OpenCL::cladd<T>(n, a, b, y));
 }
示例#15
0
 void caffe_gpu_rng_uniform(const int n, const T a, const T b, T* r) {
   BOOL_CHECK(caffe::OpenCL::cl_caffe_gpu_rng_uniform(n, a, b, r));
 }
示例#16
0
 void caffe_gpu_powx(const int n, const T* a, const T alpha, T* y) {
   BOOL_CHECK(caffe::OpenCL::clpowx<T>(n, a, alpha, y));
 }
示例#17
0
 void caffe_gpu_add_scalar(const int N, const T alpha, T* Y) {
   // NOLINT_NEXT_LINE(whitespace/operators)
   //add_scalar_kernel<float><<<CAFFE_GET_BLOCKS(N), CAFFE_CUDA_NUM_THREADS>>>(N, alpha, Y);
   BOOL_CHECK(caffe::OpenCL::cladd_scalar(N, alpha, Y));
 }
示例#18
0
 void caffe_gpu_sign(const int n, const T* x, T* y) {
   BOOL_CHECK(caffe::OpenCL::clsign<T>(n, x, y));
 }
示例#19
0
 void caffe_gpu_asum(const int n, const T* x, T* y) {
   BOOL_CHECK(caffe::OpenCL::clBLASasum<T>(n, x, y));
 }
示例#20
0
  void caffe_gpu_memcpy(const size_t N, const void* X, void* Y, int type) {

    if (X != Y) {
      BOOL_CHECK(caffe::OpenCL::clMemcpy(Y, X, N, type));  // NOLINT(caffe/alt_fn)
    }
  }
示例#21
0
  void caffe_gpu_memcpy(const size_t N, const void* X, void* Y) {

    if (X != Y) {
      BOOL_CHECK(caffe::OpenCL::clMemcpy(Y, X, N, caffe::OpenCL::COPY_DEFAULT)); // NOLINT(caffe/alt_fn)
    }
  }
示例#22
0
 void caffe_gpu_exp(const int n, const T* a, T* y) {
   BOOL_CHECK(caffe::OpenCL::clexp<T>(n, a, y));
 }
示例#23
0
bool SA_fsup::SweepOnce() {
    BOOL_CHECK(Print("INIT1:CONT OFF;*WAI;"));
    BOOL_CHECK(Print("INIT1:IMM;*WAI;"));
    return true;
}
示例#24
0
  void caffe_gpu_scal(const int N, const T alpha, T *X) {

    //CUBLAS_CHECK(cublasSscal(Caffe::cublas_handle(), N, &alpha, X, 1));
    BOOL_CHECK(caffe::OpenCL::clBLASscal<T>(N, alpha, X, X));
  }
示例#25
0
 void caffe_gpu_rng_uniform(const int n, unsigned int* r) {
   BOOL_CHECK(caffe::OpenCL::cl_caffe_gpu_rng_uniform(n, r));
 }
示例#26
0
 void caffe_gpu_dot(const int n, const T* x, const T* y, T* out) {
   BOOL_CHECK(caffe::OpenCL::clBLASdot<T>(n, x, 1, y, 1, out));
 }