sc/source/core/opencl/openclwrapper.cxx | 173 ++++++++++---------------------- sc/source/core/opencl/openclwrapper.hxx | 16 -- 2 files changed, 61 insertions(+), 128 deletions(-)
New commits: commit 6670b6456a5b34cf32128f0b0a36183a34bd6f80 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Mon Sep 16 18:21:28 2013 -0400 Remove unused methods. Change-Id: Idfb6acde20e883e4c20e0f640fdb96ac50bb349f diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx index 7d34b95..df35f3d 100644 --- a/sc/source/core/opencl/openclwrapper.cxx +++ b/sc/source/core/opencl/openclwrapper.cxx @@ -436,17 +436,6 @@ int OpenclDevice::releaseOpenclEnv( GPUEnv *gpuInfo ) return 1; } -int OpenclDevice::runKernelWrapper( cl_kernel_function function, const char * kernelName, void **usrdata ) -{ - printf("oclwrapper:runKernel_wrapper...\n"); - if ( registerKernelWrapper( kernelName, function ) != 1 ) - { - fprintf(stderr, "Error:runKernel_wrapper:registerKernelWrapper fail!\n"); - return -1; - } - return ( runKernel( kernelName, usrdata ) ); -} - int OpenclDevice::cachedOfKernerPrg( const GPUEnv *gpuEnvCached, const char * clFileName ) { int i; @@ -625,43 +614,6 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) return 1; } -int OpenclDevice::getKernelEnvAndFunc( const char *kernelName, KernelEnv *env, cl_kernel_function *function) -{ - for (size_t i = 0, n = gpuEnv.maKernelNames.size(); i < n; ++i) - { - const char* pName = gpuEnv.maKernelNames[i]; - if (!strcasecmp(kernelName, pName)) - { - env->mpkContext = gpuEnv.mpContext; - env->mpkCmdQueue = gpuEnv.mpCmdQueue; - env->mpkProgram = gpuEnv.mpArryPrograms[0]; - env->mpkKernel = gpuEnv.mpArryKernels[i]; - *function = gpuEnv.mpArryKnelFuncs[i]; - return 1; - } - } - - return 0; -} - -int OpenclDevice::runKernel( const char *kernelName, void **userdata) -{ - KernelEnv kEnv; - cl_kernel_function function; - int status; - - memset( &kEnv, 0, sizeof( KernelEnv ) ); - status = getKernelEnvAndFunc( kernelName, &kEnv, &function ); - strcpy( kEnv.mckKernelName, kernelName ); - if ( status == 1 ) - { - if ( &kEnv == (KernelEnv *) NULL || &function == (cl_kernel_function *) NULL) - return 0; - return ( function( userdata, &kEnv ) ); - } - return 0; -} - int OpenclDevice::initOpenclRunEnv( int argc ) { if ( MAX_CLKERNEL_NUM <= 0 ) @@ -891,18 +843,6 @@ int OpenclDevice::initOpenclRunEnv( GPUEnv *gpuInfo ) return 0; } -int OpenclDevice::registerKernelWrapper( const char *kernelName, cl_kernel_function function ) -{ - for (size_t i = 0, n = gpuEnv.maKernelNames.size(); i < n; ++i) - { - if (!strcasecmp(kernelName, gpuEnv.maKernelNames[i])) - { - gpuEnv.mpArryKnelFuncs[i] = function; - return 1; - } - } - return 0; -} void OpenclDevice::setOpenclState( int state ) { diff --git a/sc/source/core/opencl/openclwrapper.hxx b/sc/source/core/opencl/openclwrapper.hxx index 1dfed15..bd0fb4f 100644 --- a/sc/source/core/opencl/openclwrapper.hxx +++ b/sc/source/core/opencl/openclwrapper.hxx @@ -114,7 +114,6 @@ struct GPUEnv cl_program mpArryPrograms[MAX_CLFILE_NUM]; //one program object maps one kernel source file char mArryKnelSrcFile[MAX_CLFILE_NUM][256]; //the max len of kernel file name is 256 std::vector<const char*> maKernelNames; - cl_kernel_function mpArryKnelFuncs[MAX_CLKERNEL_NUM]; int mnFileCount; // only one kernel file int mnIsUserCreated; // 1: created , 0:no create and needed to create by opencl wrapper int mnKhrFp64Flag; @@ -190,12 +189,8 @@ public: static int initOpenclAttr( OpenCLEnv * env ); int setKernelEnv( KernelEnv *envInfo ); - int runKernel( const char *kernelName, void **userdata ); int convertToString( const char *filename, char **source ); int checkKernelName( KernelEnv *envInfo, const char *kernelName ); - int registerKernelWrapper( const char *kernelName, cl_kernel_function function ); - int runKernelWrapper( cl_kernel_function function, const char * kernelName, void **usrdata ); - int getKernelEnvAndFunc( const char *kernelName, KernelEnv *env, cl_kernel_function *function ); int getOpenclState(); void setOpenclState( int state ); commit 1061d671236c8e10d1e4dfcd86a630d6615c794c Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Mon Sep 16 16:32:25 2013 -0400 Use std::vector to store pre-defined kernel names. Change-Id: I5de148a98411f85f5318ee6e5b0b41786d152a83 diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx index a5dcd57..7d34b95 100644 --- a/sc/source/core/opencl/openclwrapper.cxx +++ b/sc/source/core/opencl/openclwrapper.cxx @@ -64,15 +64,51 @@ int OpenclDevice::releaseOpenclRunEnv() return 1; } -/////////////////////////////////////////////////////// -/////////////////////////////////////////////////////// -int OpenclDevice::addKernelConfig( int kCount, const char *kName ) -{ - if ( kCount < 1 ) - fprintf(stderr,"Error: ( KCount < 1 )" SAL_DETAIL_WHERE "addKernelConfig\n" ); - strcpy( gpuEnv.mArrykernelNames[kCount-1], kName ); - gpuEnv.mnKernelCount++; - return 0; + +namespace { + +const char* pKernelNames[] = { + + "oclFormulaMin", + "oclFormulaMax", + "oclFormulaSum", + "oclFormulaCount", + "oclFormulaAverage", + "oclFormulaSumproduct", + "oclFormulaMtxInv", + + "oclSignedAdd", + "oclSignedSub", + "oclSignedMul", + "oclSignedDiv", + "oclAverageDelta", + "oclMaxDelta", + "oclMinDelta", + "oclSubDelta", + "oclLUDecomposition", + "oclAverageDeltaRPN", + "oclMaxDeltaRPN", + "oclMinDeltaRPN", + "oclMoreColArithmeticOperator", + "oclColumnH", + "oclColumnL", + "oclColumnN", + "oclColumnJ", + "oclMaxSub", + "oclAverageSub", + "oclMinSub", + "oclMaxAdd", + "oclAverageAdd", + "oclMinAdd", + "oclMaxMul", + "oclAverageMul" + "oclMinMul", + "oclMaxDiv", + "oclAverageDiv" + "oclMinDiv", + "oclSub" +}; + } int OpenclDevice::registOpenclKernel() @@ -81,46 +117,10 @@ int OpenclDevice::registOpenclKernel() memset( &gpuEnv, 0, sizeof(gpuEnv) ); gpuEnv.mnFileCount = 0; //argc; - gpuEnv.mnKernelCount = 0UL; - - addKernelConfig( 1, (const char*) "oclFormulaMin" ); - addKernelConfig( 2, (const char*) "oclFormulaMax" ); - addKernelConfig( 3, (const char*) "oclFormulaSum" ); - addKernelConfig( 4, (const char*) "oclFormulaCount" ); - addKernelConfig( 5, (const char*) "oclFormulaAverage" ); - addKernelConfig( 6, (const char*) "oclFormulaSumproduct" ); - addKernelConfig( 7, (const char*) "oclFormulaMtxInv" ); - - addKernelConfig( 8, (const char*) "oclSignedAdd" ); - addKernelConfig( 9, (const char*) "oclSignedSub" ); - addKernelConfig( 10, (const char*) "oclSignedMul" ); - addKernelConfig( 11, (const char*) "oclSignedDiv" ); - addKernelConfig( 12, (const char*) "oclAverageDelta" ); - addKernelConfig( 13, (const char*) "oclMaxDelta" ); - addKernelConfig( 14, (const char*) "oclMinDelta" ); - addKernelConfig( 15, (const char*) "oclSubDelta" ); - addKernelConfig( 16, (const char*) "oclLUDecomposition" ); - addKernelConfig( 17, (const char*) "oclAverageDeltaRPN" ); - addKernelConfig( 18, (const char*) "oclMaxDeltaRPN" ); - addKernelConfig( 19, (const char*) "oclMinDeltaRPN" ); - addKernelConfig( 20, (const char*) "oclMoreColArithmeticOperator" ); - addKernelConfig( 21, (const char*) "oclColumnH" ); - addKernelConfig( 22, (const char*) "oclColumnL" ); - addKernelConfig( 23, (const char*) "oclColumnN" ); - addKernelConfig( 24, (const char*) "oclColumnJ" ); - addKernelConfig( 25, (const char*) "oclMaxSub" ); - addKernelConfig( 26, (const char*) "oclAverageSub" ); - addKernelConfig( 27, (const char*) "oclMinSub" ); - addKernelConfig( 28, (const char*) "oclMaxAdd" ); - addKernelConfig( 29, (const char*) "oclAverageAdd" ); - addKernelConfig( 30, (const char*) "oclMinAdd" ); - addKernelConfig( 31, (const char*) "oclMaxMul" ); - addKernelConfig( 32, (const char*) "oclAverageMul" ); - addKernelConfig( 33, (const char*) "oclMinMul" ); - addKernelConfig( 34, (const char*) "oclMaxDiv" ); - addKernelConfig( 35, (const char*) "oclAverageDiv" ); - addKernelConfig( 36, (const char*) "oclMinDiv" ); - addKernelConfig( 37, (const char*) "oclSub" );// for svDouble type + + for (size_t i = 0, n = SAL_N_ELEMENTS(pKernelNames); i < n; ++i) + gpuEnv.maKernelNames.push_back(pKernelNames[i]); + return 0; } @@ -145,23 +145,24 @@ int OpenclDevice::setKernelEnv( KernelEnv *envInfo ) int OpenclDevice::checkKernelName( KernelEnv *envInfo, const char *kernelName ) { - //printf("checkKernelName,total count of kernels...%d\n", gpuEnv.kernelCount); - int kCount; int nFlag = 0; - for ( kCount=0; kCount < gpuEnv.mnKernelCount; kCount++ ) + size_t i = 0; + for (size_t n = gpuEnv.maKernelNames.size(); i < n; ++i) { - if ( strcasecmp( kernelName, gpuEnv.mArrykernelNames[kCount]) == 0 ) + const char* pName = gpuEnv.maKernelNames[i]; + if (!strcasecmp(kernelName, pName)) { nFlag = 1; printf("match %s kernel right\n",kernelName); break; } } + if ( !nFlag ) { printf("can't find kernel: %s\n",kernelName); } - envInfo->mpkKernel = gpuEnv.mpArryKernels[kCount]; + envInfo->mpkKernel = gpuEnv.mpArryKernels[i]; strcpy( envInfo->mckKernelName, kernelName ); if ( envInfo == (KernelEnv *) NULL ) { @@ -626,11 +627,10 @@ int OpenclDevice::compileKernelFile( GPUEnv *gpuInfo, const char *buildOption ) int OpenclDevice::getKernelEnvAndFunc( const char *kernelName, KernelEnv *env, cl_kernel_function *function) { - int i; - //printf("----------------OpenclDevice::getKernelEnvAndFunc\n"); - for ( i = 0; i < gpuEnv.mnKernelCount; i++ ) + for (size_t i = 0, n = gpuEnv.maKernelNames.size(); i < n; ++i) { - if ( strcasecmp( kernelName, gpuEnv.mArrykernelNames[i]) == 0 ) + const char* pName = gpuEnv.maKernelNames[i]; + if (!strcasecmp(kernelName, pName)) { env->mpkContext = gpuEnv.mpContext; env->mpkCmdQueue = gpuEnv.mpCmdQueue; @@ -640,6 +640,7 @@ int OpenclDevice::getKernelEnvAndFunc( const char *kernelName, KernelEnv *env, c return 1; } } + return 0; } @@ -702,7 +703,7 @@ int OpenclDevice::initOpenclRunEnv( int argc ) printf("----use float type in kernel----\n"); status = compileKernelFile( &gpuEnv, "-Dfp_t=float -Dfp_t4=float4 -Dfp_t16=float16" ); } - if ( status == 0 || gpuEnv.mnKernelCount == 0 ) + if (status == 0 || gpuEnv.maKernelNames.empty()) { printf("compileKernelFile failed.\n"); return 1; @@ -892,11 +893,9 @@ int OpenclDevice::initOpenclRunEnv( GPUEnv *gpuInfo ) } int OpenclDevice::registerKernelWrapper( const char *kernelName, cl_kernel_function function ) { - int i; - //printf("oclwrapper:registerKernelWrapper...%d\n", gpuEnv.mnKernelCount); - for ( i = 0; i < gpuEnv.mnKernelCount; i++ ) + for (size_t i = 0, n = gpuEnv.maKernelNames.size(); i < n; ++i) { - if ( strcasecmp( kernelName, gpuEnv.mArrykernelNames[i]) == 0 ) + if (!strcasecmp(kernelName, gpuEnv.maKernelNames[i])) { gpuEnv.mpArryKnelFuncs[i] = function; return 1; diff --git a/sc/source/core/opencl/openclwrapper.hxx b/sc/source/core/opencl/openclwrapper.hxx index cefec0d..1dfed15 100644 --- a/sc/source/core/opencl/openclwrapper.hxx +++ b/sc/source/core/opencl/openclwrapper.hxx @@ -59,7 +59,7 @@ if( status != CL_SUCCESS ) \ } #define MAX_KERNEL_STRING_LEN 64 -#define MAX_CLFILE_NUM 50 +#define MAX_CLFILE_NUM 100 #define MAX_CLKERNEL_NUM 200 #define MAX_KERNEL_NAME_LEN 64 @@ -112,11 +112,11 @@ struct GPUEnv cl_command_queue mpCmdQueue; cl_kernel mpArryKernels[MAX_CLFILE_NUM]; cl_program mpArryPrograms[MAX_CLFILE_NUM]; //one program object maps one kernel source file - char mArryKnelSrcFile[MAX_CLFILE_NUM][256], //the max len of kernel file name is 256 - mArrykernelNames[MAX_CLKERNEL_NUM][MAX_KERNEL_STRING_LEN + 1]; - cl_kernel_function mpArryKnelFuncs[MAX_CLKERNEL_NUM]; - int mnKernelCount, mnFileCount, // only one kernel file - mnIsUserCreated; // 1: created , 0:no create and needed to create by opencl wrapper + char mArryKnelSrcFile[MAX_CLFILE_NUM][256]; //the max len of kernel file name is 256 + std::vector<const char*> maKernelNames; + cl_kernel_function mpArryKnelFuncs[MAX_CLKERNEL_NUM]; + int mnFileCount; // only one kernel file + int mnIsUserCreated; // 1: created , 0:no create and needed to create by opencl wrapper int mnKhrFp64Flag; int mnAmdFp64Flag; }; @@ -199,7 +199,6 @@ public: int getOpenclState(); void setOpenclState( int state ); - static int addKernelConfig( int kCount, const char *kName ); }; class OclCalc: public OpenclDevice,OpenclCalcBase _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits