MCPcopy Create free account
hub / github.com/clMathLibraries/clBLAS / trmmCorrectnessTest

Function trmmCorrectnessTest

src/tests/correctness/corr-trmm.cpp:49–187  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

47
48template <typename T>
49void
50trmmCorrectnessTest(TestParams *params)
51{
52 cl_int err;
53 T *A, *blasB, *clblasB;
54 T alpha;
55 cl_mem bufA, bufB;
56 clMath::BlasBase *base;
57 bool useAlpha;
58 cl_event *events;
59 bool isComplex;
60
61 base = clMath::BlasBase::getInstance();
62 if ((typeid(T) == typeid(cl_double) ||
63 typeid(T) == typeid(DoubleComplex)) &&
64 !base->isDevSupportDoublePrecision()) {
65
66 std::cerr << ">> WARNING: The target device doesn't support native "
67 "double precision floating point arithmetic" <<
68 std::endl << ">> Test skipped" << std::endl;
69 SUCCEED();
70 return;
71 }
72
73 isComplex = ((typeid(T) == typeid(FloatComplex)) ||
74 (typeid(T) == typeid(DoubleComplex)));
75 if (canCaseBeSkipped(params, isComplex)) {
76 std::cerr << ">> Test is skipped" << std::endl;
77 SUCCEED();
78 return;
79 }
80
81 useAlpha = base->useAlpha();
82
83 events = new cl_event[params->numCommandQueues];
84 memset(events, 0, params->numCommandQueues * sizeof(cl_event));
85
86 A = new T[params->rowsA * params->columnsA];
87 blasB = new T[params->rowsB * params->columnsB];
88 clblasB = new T[params->rowsB * params->columnsB];
89 alpha = ZERO<T>();
90
91 srand(params->seed);
92 if (useAlpha) {
93 alpha = convertMultiplier<T>(params->alpha);
94 }
95
96 randomTrmmMatrices<T>(params->order, params->side, params->uplo,
97 params->diag, params->M, params->N, useAlpha,
98 &alpha, A, params->lda, blasB, params->ldb);
99 memcpy(clblasB, blasB, params->rowsB * params->columnsB * sizeof(*blasB));
100
101 if (params->order == clblasColumnMajor) {
102 ::clMath::blas::trmm(clblasColumnMajor, params->side, params->uplo,
103 params->transA, params->diag, params->M, params->N, alpha,
104 A, params->lda, blasB, params->ldb);
105 }
106 else {

Callers

nothing calls this directly

Calls 10

canCaseBeSkippedFunction · 0.85
printTestParamsFunction · 0.85
useAlphaMethod · 0.80
createEnqueueBufferMethod · 0.80
commandQueuesMethod · 0.80
alphaMethod · 0.80
releaseMemObjectsFunction · 0.70
trmmFunction · 0.50
waitForSuccessfulFinishFunction · 0.50

Tested by

no test coverage detected