diff options
Diffstat (limited to 'external/clBLAS/src/library/tools/tune/storage_data.c')
-rw-r--r-- | external/clBLAS/src/library/tools/tune/storage_data.c | 374 |
1 files changed, 0 insertions, 374 deletions
diff --git a/external/clBLAS/src/library/tools/tune/storage_data.c b/external/clBLAS/src/library/tools/tune/storage_data.c deleted file mode 100644 index a3d57081..00000000 --- a/external/clBLAS/src/library/tools/tune/storage_data.c +++ /dev/null @@ -1,374 +0,0 @@ -/* ************************************************************************ - * Copyright 2013 Advanced Micro Devices, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ************************************************************************/ - - -#include "storage_data.h" -#include "assert.h" - -BlasParamInfo* -findParam( - StorageCacheImpl* cacheImpl, - const char* pattName, - const DataType dt, - const KernelExtraFlags kflag, - int dim) -{ - unsigned int func; - BlasFunctionInfo *functionInfo = cacheImpl->functionInfo; - //unsigned int mask[BLAS_FUNCTIONS_NUMBER]; - - //initMask(mask); - for (func =0; func < BLAS_FUNCTIONS_NUMBER; ++ func) { - unsigned int patt; - - BlasFunctionInfo* bFunc = &functionInfo[func]; - for (patt =0; patt < bFunc->numPatterns; ++ patt) { - unsigned int extra; - - BlasPatternInfo* bPatt = &bFunc->pattInfo[patt]; - if (strcmp(bPatt->name, pattName) == 0) { - KernelExtraFlags flag = kflag & bFunc->maskForTuningsKernel; - for (extra =0; extra < bPatt->numExtra; ++ extra) { - BlasExtraInfo* bExtra = &bPatt->extra[extra]; - if (bExtra->dtype == dt && bExtra->flags == flag) - { - unsigned int param; - BlasParamInfo* bestParam = NULL; - unsigned int bestDimDelta = 50000; - - if (dim == 0) { - //leading dimension banks aligned case - bestParam = - &bExtra->param[BANK_ALIGNED_CASE_RECORD_IDX]; - } - else { - for (param = 0; param < bExtra->numParam; ++param) { - BlasParamInfo* bParam = &bExtra->param[param]; - unsigned int dimDelta = abs(dim - bParam->dim); - - if (param == BANK_ALIGNED_CASE_RECORD_IDX) { - continue; - } - - if (dimDelta < bestDimDelta){ - bestDimDelta = dimDelta; - bestParam = bParam; - } - } - } - return bestParam; - } - } - } - } - } - return NULL; -} - - -BlasPatternInfo * -getPatternInfo(StorageCacheImpl* cache, unsigned int func, unsigned int patt) -{ - BlasPatternInfo* bPatt = NULL; - - if (func != BLAS_FUNCTIONS_NUMBER) { - BlasFunctionInfo* bFunc = &cache->functionInfo[func]; - - bPatt = &bFunc->pattInfo[patt]; - } - return bPatt; -} - - -void -nextPattern(StorageCacheImpl* cache, unsigned int* func, unsigned int* patt) -{ - BlasFunctionInfo* bFunc = &cache->functionInfo[*func]; - - (*patt)++; - if (bFunc->numPatterns == *patt) { - (*func)++; - *patt = 0; - } -} - -//////////////////////////////////////////////////////////////////////////////// -bool -isValidFlagMatrix(DataType curType, unsigned int flags) -{ - bool ret; - // todo Make refactoring expressions. - - ret = !isComplexType(curType) - && ( (flags & KEXTRA_CONJUGATE_A) || (flags & KEXTRA_CONJUGATE_B)); - // The flag KEXTRA_CONJUGATE_X can be set TRUE only when the flag KEXTRA_TRANS_X is TRUE. - ret = ret || (flags & (KEXTRA_TRANS_A | KEXTRA_CONJUGATE_A)) - == KEXTRA_CONJUGATE_A; - ret = ret || (flags & (KEXTRA_TRANS_B | KEXTRA_CONJUGATE_B)) - == KEXTRA_CONJUGATE_B; - - return ret; -} - -size_t -getDTypeArray(DataType * dTypes, size_t dtypeCount, DeviceInfo* defInf ) -{ - if (dtypeCount < 4) { - return 0; - } - if (defInf->nativeDouble) { - if (defInf->nativeComplex) { - dTypes[0] = TYPE_FLOAT; - dTypes[1] = TYPE_COMPLEX_FLOAT; - dTypes[2] = TYPE_DOUBLE; - dTypes[3] = TYPE_COMPLEX_DOUBLE; - dtypeCount = 4; - } - else { - dTypes[0] = TYPE_FLOAT; - dTypes[1] = TYPE_DOUBLE; - dtypeCount = 2; - } - } - else { - if (defInf->nativeComplex) { - dTypes[0] = TYPE_FLOAT; - dTypes[1] = TYPE_COMPLEX_FLOAT; - dtypeCount = 2; - } - else { - dTypes[0] = TYPE_FLOAT; - dtypeCount = 1; - } - } - return dtypeCount; -} - -void -initParamData (BlasParamInfo* bParam, int dim) -{ - memset(bParam->sDim, 0, sizeof(SubproblemDim) * MAX_SUBDIMS); - memset(&bParam->pGran, 0, sizeof(PGranularity) ); - memset(bParam->kernel, 0, sizeof(OFFSET) * MAX_CLBLAS_KERNELS_PER_STEP); - memset(bParam->kSize, 0, sizeof(size_t)* MAX_CLBLAS_KERNELS_PER_STEP); - - bParam->time = 1e50; // any large number; - bParam->dim = dim; - - bParam->offset = 0; - bParam->size = 0; - bParam->sstatus = SS_NOLOAD; -} - -void -initExtraData(BlasExtraInfo* bExtra, DataType dTypes, unsigned int flags, DeviceInfo* di) -{ - unsigned int param; - int func = bExtra->parent->parent->funcNo; - - assert(bExtra->param == 0); - - bExtra->dtype = dTypes; - bExtra->flags = flags; - - if (isComplexType(dTypes)) { - bExtra->vecLen = 2; - } - else { - bExtra->vecLen = 4; - } - - bExtra->numParam = getDimensionCount(di->tdev, func); - - bExtra->offset = 0; - bExtra->size = 0; - bExtra->sstatus = SS_NOLOAD; - - bExtra->param = calloc( bExtra->numParam, sizeof(BlasParamInfo)); - for (param = 0; param < bExtra->numParam; ++param) { - BlasParamInfo* bParam = &bExtra->param[param]; - initParamData(bParam, getDimension(param, bExtra->dtype, di, func)); - } -} - -int -genExtraDatasForPattern( - BlasPatternInfo* bPatt, - unsigned int tuningsMask, - unsigned int uniqueMask, - DeviceInfo* defInf) -{ - size_t dtypeCount; - size_t ndt; - unsigned int flags; - unsigned int index; - DataType dTypes[4]; - BlasExtraInfo* extra; - BlasFunctionInfo* bFunc; - unsigned int extraCount; - - bFunc = bPatt->parent; - extra = bPatt->extra; - extraCount = bPatt->numExtra; - bPatt->numTuneExtra = 0; - - dtypeCount = getDTypeArray(dTypes, 4, defInf); - index = 0; - for (flags = 0; flags <= uniqueMask; flags++) { - unsigned int m = flags & (~uniqueMask); - if (!m){ - for (ndt = 0; ndt < dtypeCount; ++ndt) { - DataType curType = dTypes[ndt]; - if ( bFunc->isValidFlag != NULL - && bFunc->isValidFlag(curType, flags)) { - continue; - } - - if (extra != NULL) { - unsigned int tm; - if (index == extraCount) { - return index; - } - - extra[index].parent = bPatt; - initExtraData(&extra[index], dTypes[ndt], flags, defInf); - tm = flags & (~tuningsMask); - extra[index].isUseForTunning = tm == 0; - if (extra[index].isUseForTunning) { - bPatt->numTuneExtra++; - } - } - ++index; - } - } - else { - m = (m&(m-1))^m; - flags = flags + m - 1; - } - } - return index; -} - -void -initPatternData (BlasPatternInfo* bPatt, DeviceInfo* defInf) -{ - unsigned int tuningsMask = bPatt->parent->maskForTuningsKernel; - unsigned int uniqueMask = bPatt->parent->maskForUniqueKernels; - - assert(bPatt->numExtra == 0); - assert(bPatt->extra == 0); - - bPatt->numExtra = genExtraDatasForPattern(bPatt, tuningsMask, - uniqueMask, defInf); - - bPatt->offset = 0; - bPatt->size = 0; - bPatt->sstatus = SS_NOLOAD; - - bPatt->extra = calloc( bPatt->numExtra, sizeof(BlasExtraInfo)); - genExtraDatasForPattern(bPatt, tuningsMask, uniqueMask, defInf); -} - -void -initFuncData (BlasFunctionInfo* bFunc, DeviceInfo* defInf) -{ - unsigned int patt; - bFunc->isValidFlag = isValidFlagMatrix; - - if (bFunc->initFunctionInfo != NULL) { - bFunc->initFunctionInfo(bFunc); - } - - for (patt = 0 ; patt < bFunc->numPatterns; ++patt) { - BlasPatternInfo* bPatt = &bFunc->pattInfo[patt]; - bPatt->parent = bFunc; - bPatt->name = bFunc->pattern[patt].name; - bPatt->pattNo = patt; - initPatternData (bPatt, defInf); - } -} - -void -initCacheData (BlasFunctionInfo* bFuncs, DeviceInfo* defInf) -{ - unsigned int func; - - for (func=0; func < BLAS_FUNCTIONS_NUMBER; ++func) { - BlasFunctionInfo* bFunc = &bFuncs[func]; - bFunc->funcNo = func; - initFuncData(bFunc, defInf); - } -} - -void -destroyParamData(BlasParamInfo* bParam) -{ - int k; - - for (k=0; k < MAX_CLBLAS_KERNELS_PER_STEP; ++k) { - bParam->kSize[0] = 0; - } -} - -void -destroyExtraData(BlasExtraInfo* bExtra) -{ - unsigned int param; - - if (bExtra == NULL) { - return; - } - - for (param = 0; param < bExtra->numParam; ++param) { - BlasParamInfo* bParam = &bExtra->param[param]; - destroyParamData(bParam); - } - free(bExtra->param); -} - -void -destroyPatternData(BlasPatternInfo* bPatt) -{ - unsigned int extra; - - for (extra = 0 ; extra < bPatt->numExtra; ++extra){ - BlasExtraInfo* bExtra = &bPatt->extra[extra]; - destroyExtraData (bExtra); - } - free (bPatt->extra); -} - -void -destroyFuncData(BlasFunctionInfo* bFunc) -{ - unsigned int patt; - - for (patt = 0 ; patt < bFunc->numPatterns; ++patt) { - BlasPatternInfo* bPatt = &bFunc->pattInfo[patt]; - destroyPatternData (bPatt); - } -} - -void -destroyData(BlasFunctionInfo* fInfo) -{ - unsigned int func; - - for (func =0; func < BLAS_FUNCTIONS_NUMBER; ++ func){ - destroyFuncData( &fInfo[func]); - } -} - |