| 228 | } |
| 229 | |
| 230 | template <typename ElemType> nano_time_t |
| 231 | GercPerformanceTest<ElemType>::etalonPerfSingle(void) |
| 232 | { |
| 233 | nano_time_t time = 0; |
| 234 | clblasOrder order; |
| 235 | size_t lda; |
| 236 | //int fIncx, fIncy; |
| 237 | |
| 238 | #ifndef PERF_TEST_WITH_ROW_MAJOR |
| 239 | if (params_.order == clblasRowMajor) { |
| 240 | cerr << "Row major order is not allowed" << endl; |
| 241 | return NANOTIME_ERR; |
| 242 | } |
| 243 | #endif |
| 244 | |
| 245 | order = params_.order; |
| 246 | lda = params_.lda; |
| 247 | |
| 248 | #ifdef PERF_TEST_WITH_ACML |
| 249 | |
| 250 | clblasOrder fOrder; |
| 251 | size_t fN, fM; |
| 252 | size_t fOffx, fOffy; |
| 253 | int fIncx, fIncy; |
| 254 | ElemType *fX, *fY; |
| 255 | fOrder = params_.order; |
| 256 | fM = params_.M; |
| 257 | fN = params_.N; |
| 258 | fIncx = params_.incx; |
| 259 | fIncy = params_.incy; |
| 260 | fX = x_; |
| 261 | fY = y_; |
| 262 | fOffx = params_.offBX; |
| 263 | fOffy = params_.offCY; |
| 264 | |
| 265 | if (fOrder != clblasColumnMajor) { |
| 266 | fOrder = clblasColumnMajor; |
| 267 | |
| 268 | doConjugate( (y_ + params_.offCY), (1 + (params_.N-1) * abs(params_.incy)), 1, 1 ); |
| 269 | fM = params_.N; |
| 270 | fN = params_.M; |
| 271 | fX = y_; |
| 272 | fY = x_; |
| 273 | fIncx = params_.incy; |
| 274 | fIncy = params_.incx; |
| 275 | fOffx = params_.offCY; |
| 276 | fOffy = params_.offBX; |
| 277 | // Note this according to the Legacy guide |
| 278 | time = getCurrentTime(); |
| 279 | clMath::blas::ger(fOrder, fM, fN, alpha_, fX , fOffx, fIncx, fY, fOffy, fIncy, A_, params_.offa, params_.lda); |
| 280 | } |
| 281 | else{ |
| 282 | time = getCurrentTime(); |
| 283 | clMath::blas::gerc(order, fM, fN, alpha_, fX, fOffx, params_.incx, fY, fOffy, params_.incy, A_, params_.offa, lda); |
| 284 | } |
| 285 | time = getCurrentTime() - time; |
| 286 | |
| 287 | #endif // PERF_TEST_WITH_ACML<F2> |
nothing calls this directly
no test coverage detected