| 188 | } |
| 189 | |
| 190 | template <typename ElemType> int |
| 191 | TpmvPerformanceTest<ElemType>::prepare(void) |
| 192 | { |
| 193 | size_t lenX, n; |
| 194 | n = params_.N; |
| 195 | lenX = 1 + (n-1) * abs(params_.incx); |
| 196 | |
| 197 | |
| 198 | int creationFlags = 0; |
| 199 | creationFlags = creationFlags | RANDOM_INIT | PACKED_MATRIX; |
| 200 | |
| 201 | // Default is Column-Major |
| 202 | creationFlags = ( (this-> params_.order) == clblasRowMajor)? (creationFlags | ROW_MAJOR_ORDER) : (creationFlags); |
| 203 | creationFlags = ( (this-> params_.uplo) == clblasLower)? (creationFlags | LOWER_HALF_ONLY) : (creationFlags | UPPER_HALF_ONLY); |
| 204 | BlasRoutineID BlasFn = CLBLAS_TRMV; |
| 205 | |
| 206 | populate( (AP_ + params_.offa), n, n, 0, BlasFn, creationFlags); |
| 207 | populate( X_ , lenX + params_.offBX, 1, lenX + params_.offBX, BlasFn); |
| 208 | memcpy(backX_, X_, ((1 + (params_.N-1) * abs(params_.incx))+ params_.offBX )* sizeof(ElemType)); |
| 209 | |
| 210 | |
| 211 | mobjAP_ = base_->createEnqueueBuffer(AP_,( (( n *( n + 1 ) )/2 ) + params_.offa)* sizeof(*AP_), 0, CL_MEM_READ_ONLY); |
| 212 | mobjX_ = base_->createEnqueueBuffer(X_, (lenX + params_.offBX )* sizeof(*X_), 0, CL_MEM_WRITE_ONLY); |
| 213 | scratchBuff = base_->createEnqueueBuffer(NULL , lenX * sizeof(*X_), 0, CL_MEM_READ_ONLY); |
| 214 | |
| 215 | return ( (mobjAP_ != NULL) && (mobjX_ != NULL) && (scratchBuff != NULL) ) ? 0 : -1; |
| 216 | } |
| 217 | |
| 218 | template <typename ElemType> nano_time_t |
| 219 | TpmvPerformanceTest<ElemType>::etalonPerfSingle(void) |
nothing calls this directly
no test coverage detected