| 192 | } |
| 193 | |
| 194 | template <typename ElemType> int |
| 195 | SpmvPerformanceTest<ElemType>::prepare(void) |
| 196 | { |
| 197 | size_t lenX, N, lenY; |
| 198 | N = params_.N; |
| 199 | lenX = 1 + (N-1) * abs(params_.incx); |
| 200 | lenY = 1 + (N-1) * abs(params_.incy); |
| 201 | |
| 202 | randomSpmvMatrices(params_.order, params_.uplo, N, true, &alpha, (AP_ + params_.offA), |
| 203 | (X_ + params_.offBX), params_.incx, true, &beta, (Y_ + params_.offCY), params_.incy); |
| 204 | |
| 205 | memcpy(backY_, Y_, (lenY+ params_.offCY )* sizeof(ElemType)); |
| 206 | |
| 207 | mobjAP_ = base_->createEnqueueBuffer(AP_, (((params_.N * (params_.N + 1)) / 2 ) + params_.offA)* sizeof(*AP_), 0, CL_MEM_READ_ONLY); |
| 208 | mobjX_ = base_->createEnqueueBuffer(X_, (lenX + params_.offBX )* sizeof(*X_), 0, CL_MEM_READ_ONLY); |
| 209 | mobjY_ = base_->createEnqueueBuffer(Y_, (lenY + params_.offCY )* sizeof(*Y_), 0, CL_MEM_READ_WRITE); |
| 210 | |
| 211 | return ( (mobjAP_ != NULL) && (mobjX_ != NULL) && (mobjY_ != NULL) ) ? 0 : -1; |
| 212 | } |
| 213 | |
| 214 | template <typename ElemType> nano_time_t |
| 215 | SpmvPerformanceTest<ElemType>::etalonPerfSingle(void) |
nothing calls this directly
no test coverage detected