diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2013-09-17 15:14:00 -0400 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2013-09-19 17:03:24 +0200 |
commit | 59d6f566be3229ff083a6157f575749ce2485bac (patch) | |
tree | 5848b7f5fc8e8fd10cf048359ee68e65daacb6fd /sc | |
parent | c76e4526172681d8abc086dcd87068ad7be1f2b8 (diff) |
Let's treat oclMatrixSolve equally. No special treatment for this guy.
Change-Id: I79d36ad7c95bf4cc8cd6bb4fd55dcedd5cd70684
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/opencl/openclwrapper.cxx | 45 |
1 files changed, 24 insertions, 21 deletions
diff --git a/sc/source/core/opencl/openclwrapper.cxx b/sc/source/core/opencl/openclwrapper.cxx index ce0f662d783b..7a8b2052f08d 100644 --- a/sc/source/core/opencl/openclwrapper.cxx +++ b/sc/source/core/opencl/openclwrapper.cxx @@ -125,7 +125,9 @@ const char* pKernelNames[] = { "oclMaxDiv", "oclAverageDiv" "oclMinDiv", - "oclSub" + "oclSub", + + "oclMatrixSolve" }; } @@ -2341,20 +2343,22 @@ bool OclCalc::oclHostMatrixInverse64Bits( const char* aKernelName, double *dpOcl } clStatus = clEnqueueUnmapMemObject( kEnv.mpkCmdQueue, mpClmemLeftData, dpOclMatrixSrc, 0, NULL, NULL ); CHECK_OPENCL( clStatus, "clEnqueueUnmapMemObject" ); - cl_kernel kernel_solve = clCreateKernel( kEnv.mpkProgram, "oclMatrixSolve", &clStatus ); - CHECK_OPENCL( clStatus, "clCreateKernel" ); - clStatus = clSetKernelArg( kernel_solve, 0, sizeof(cl_mem), (void *)&mpClmemLeftData ); + Kernel* pKernelMatrix = fetchKernel("oclMatrixSolve"); + if (!pKernelMatrix) + return false; + + clStatus = clSetKernelArg(pKernel->mpKernel, 0, sizeof(cl_mem), (void *)&mpClmemLeftData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 1, sizeof(cl_mem), (void *)&mpClmemRightData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 1, sizeof(cl_mem), (void *)&mpClmemRightData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 2, sizeof(cl_mem), (void *)&clpPData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 2, sizeof(cl_mem), (void *)&clpPData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 3, sizeof(cl_mem), (void *)&clpYData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 3, sizeof(cl_mem), (void *)&clpYData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 4, sizeof(cl_mem), (void *)&clpNData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 4, sizeof(cl_mem), (void *)&clpNData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clEnqueueNDRangeKernel( kEnv.mpkCmdQueue, kernel_solve, 1, NULL, global_work_size, NULL, 0, NULL, NULL ); + clStatus = clEnqueueNDRangeKernel(kEnv.mpkCmdQueue, pKernel->mpKernel, 1, NULL, global_work_size, NULL, 0, NULL, NULL); CHECK_OPENCL( clStatus, "clEnqueueNDRangeKernel" ); clFinish( kEnv.mpkCmdQueue ); for ( uint i = 0; i < nDim; i++ ) @@ -2370,8 +2374,6 @@ bool OclCalc::oclHostMatrixInverse64Bits( const char* aKernelName, double *dpOcl clStatus = clReleaseMemObject( mpClmemRightData ); CHECK_OPENCL( clStatus, "clReleaseMemObject" ); mpClmemRightData = NULL; - clStatus = clReleaseKernel( kernel_solve ); - CHECK_OPENCL( clStatus, "clReleaseKernel" ); clStatus = clReleaseMemObject( clpPData ); CHECK_OPENCL( clStatus, "clReleaseKernel" ); clStatus = clReleaseMemObject( clpYData ); @@ -2453,20 +2455,23 @@ bool OclCalc::oclHostMatrixInverse32Bits( const char* aKernelName, float *fpOclM clStatus = clEnqueueUnmapMemObject( kEnv.mpkCmdQueue, mpClmemLeftData, fpOclMatrixSrc, 0, NULL, NULL ); CHECK_OPENCL( clStatus, "clEnqueueUnmapMemObject" ); - cl_kernel kernel_solve = clCreateKernel( kEnv.mpkProgram, "oclMatrixSolve", &clStatus ); - CHECK_OPENCL( clStatus, "clCreateKernel" ); - clStatus = clSetKernelArg( kernel_solve, 0, sizeof(cl_mem), (void *)&mpClmemLeftData ); + Kernel* pKernelMatrix = fetchKernel("oclMatrixSolve"); + if (!pKernelMatrix) + return false; + + clStatus = clSetKernelArg(pKernel->mpKernel, 0, sizeof(cl_mem), (void *)&mpClmemLeftData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 1, sizeof(cl_mem), (void *)&mpClmemRightData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 1, sizeof(cl_mem), (void *)&mpClmemRightData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 2, sizeof(cl_mem), (void *)&clpPData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 2, sizeof(cl_mem), (void *)&clpPData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 3, sizeof(cl_mem), (void *)&clpYData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 3, sizeof(cl_mem), (void *)&clpYData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clSetKernelArg( kernel_solve, 4, sizeof(cl_mem), (void *)&clpNData ); + clStatus = clSetKernelArg(pKernel->mpKernel, 4, sizeof(cl_mem), (void *)&clpNData); CHECK_OPENCL( clStatus, "clSetKernelArg" ); - clStatus = clEnqueueNDRangeKernel( kEnv.mpkCmdQueue, kernel_solve, 1, NULL, global_work_size, NULL, 0, NULL, NULL ); + clStatus = clEnqueueNDRangeKernel( + kEnv.mpkCmdQueue, pKernel->mpKernel, 1, NULL, global_work_size, NULL, 0, NULL, NULL); CHECK_OPENCL( clStatus, "clEnqueueNDRangeKernel" ); clFinish( kEnv.mpkCmdQueue ); for ( uint i = 0; i < nDim; i++ ) @@ -2482,8 +2487,6 @@ bool OclCalc::oclHostMatrixInverse32Bits( const char* aKernelName, float *fpOclM clStatus = clReleaseMemObject( mpClmemRightData ); CHECK_OPENCL( clStatus, "clReleaseMemObject" ); mpClmemRightData = NULL; - clStatus = clReleaseKernel( kernel_solve ); - CHECK_OPENCL( clStatus, "clReleaseKernel" ); clStatus = clReleaseMemObject( clpPData ); CHECK_OPENCL( clStatus, "clReleaseKernel" ); clStatus = clReleaseMemObject( clpYData ); |