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 }
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; }
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; }
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 }
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; }
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; }
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)); }
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)); }
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)); }
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)); }
void caffe_gpu_abs(const int n, const T* x, T* y) { BOOL_CHECK(caffe::OpenCL::clabs<T>(n, x, y)); }
void caffe_gpu_sgnbit(const int n, const T* x, T* y) { BOOL_CHECK(caffe::OpenCL::clsgnbit<T>(n, x, y)); }
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)); }
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)); }
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)); }
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)); }
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)); }
void caffe_gpu_sign(const int n, const T* x, T* y) { BOOL_CHECK(caffe::OpenCL::clsign<T>(n, x, y)); }
void caffe_gpu_asum(const int n, const T* x, T* y) { BOOL_CHECK(caffe::OpenCL::clBLASasum<T>(n, x, y)); }
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) } }
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) } }
void caffe_gpu_exp(const int n, const T* a, T* y) { BOOL_CHECK(caffe::OpenCL::clexp<T>(n, a, y)); }
bool SA_fsup::SweepOnce() { BOOL_CHECK(Print("INIT1:CONT OFF;*WAI;")); BOOL_CHECK(Print("INIT1:IMM;*WAI;")); return true; }
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)); }
void caffe_gpu_rng_uniform(const int n, unsigned int* r) { BOOL_CHECK(caffe::OpenCL::cl_caffe_gpu_rng_uniform(n, r)); }
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)); }