Skip to content

Commit 27ab572

Browse files
committed
Merge pull request #163 from hughperkins/fix-teardown
Fix teardown
2 parents 16973bf + c56c725 commit 27ab572

File tree

5 files changed

+68
-19
lines changed

5 files changed

+68
-19
lines changed

src/library/CMakeLists.txt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -839,8 +839,7 @@ else()
839839
MESSAGE( STATUS "clBLAS will NOT depend on ${AUTOGEMM_PRECOMPILED_KERNELS}" )
840840
endif()
841841

842-
843-
add_library(clBLAS
842+
set(CLBLAS_ALL_SOURCES
844843
${CLBLAS_SOURCES}
845844
${GLOBAL_HEADERS}
846845
${SRC_BLAS_HEADERS}
@@ -851,9 +850,23 @@ add_library(clBLAS
851850
${AUTOGEMM_PRECOMPILED_KERNELS_CONDITIONAL}
852851
#${USERGEMM_SRC}
853852
#${USERGEMM_HEADERS}
854-
)
853+
)
854+
add_library(clBLAS ${CLBLAS_ALL_SOURCES})
855855
add_dependencies(clBLAS GENERATE_CLT)
856856

857+
function (add_target_definitions target)
858+
get_target_property(defs ${target} COMPILE_DEFINITIONS)
859+
if (defs MATCHES "NOTFOUND")
860+
set(defs "")
861+
endif ()
862+
foreach (def ${defs} ${ARGN})
863+
list(APPEND deflist ${def})
864+
endforeach ()
865+
set_target_properties(${target} PROPERTIES COMPILE_DEFINITIONS "${deflist}")
866+
endfunction ()
867+
868+
add_target_definitions(clBLAS BUILDING_CLBLAS)
869+
857870
if (PRECOMPILE_TRSM_DTRSM OR PRECOMPILE_TRSM_STRSM)
858871
add_dependencies(clBLAS OCLBinaryGenerator_GEN)
859872
endif()

src/library/blas/AutoGemm/Includes.py

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,14 @@ def __init__(self):
179179
self.incStr += "#include <CL/cl.h>\n"
180180
self.incStr += "#endif\n"
181181
self.incStr += "\n"
182+
self.incStr += "#ifdef __cplusplus\n"
183+
self.incStr += "extern \"C\" {\n"
184+
self.incStr += "#endif\n"
185+
self.incStr += " void initAutoGemmClKernels(void);\n";
186+
self.incStr += "#ifdef __cplusplus\n"
187+
self.incStr += "}\n";
188+
self.incStr += "#endif\n"
189+
self.incStr += "\n";
182190

183191
self.cppName = Common.getIncludePath() + "AutoGemmClKernels.cpp"
184192
self.cppFile = open(self.cppName, "w")
@@ -190,29 +198,50 @@ def __init__(self):
190198
self.cppStr += "#endif\n"
191199
self.cppStr += "\n"
192200

201+
202+
self.initFunction = "";
203+
self.initFunction += "extern \"C\" {\n";
204+
self.initFunction += " void initAutoGemmClKernels(void);\n";
205+
self.initFunction += "}\n";
206+
self.initFunction += "\n";
207+
self.initFunction += "void initAutoGemmClKernels(void) {\n";
208+
self.defines = "";
209+
193210
def addKernel(self, kernel):
194-
kernelName = kernel.getName()
195-
self.incStr += "extern cl_kernel %s_clKernel;\n" % kernelName
196-
self.cppStr += "cl_kernel %s_clKernel = NULL;\n" % kernelName
197-
kernelName = kernel.getRowName()
198-
self.incStr += "extern cl_kernel %s_clKernel;\n" % kernelName
199-
self.cppStr += "cl_kernel %s_clKernel = NULL;\n" % kernelName
200-
kernelName = kernel.getColName()
201-
self.incStr += "extern cl_kernel %s_clKernel;\n" % kernelName
202-
self.cppStr += "cl_kernel %s_clKernel = NULL;\n" % kernelName
203-
kernelName = kernel.getCornerName()
204-
self.incStr += "extern cl_kernel %s_clKernel;\n" % kernelName
205-
self.cppStr += "cl_kernel %s_clKernel = NULL;\n" % kernelName
211+
kernelNames = [
212+
kernel.getName(),
213+
kernel.getRowName(),
214+
kernel.getColName(),
215+
kernel.getCornerName()
216+
]
217+
for kernelName in kernelNames:
218+
self.incStr += "extern cl_kernel %s_clKernel;\n" % kernelName
219+
220+
self.defines += "cl_kernel %s_clKernel = NULL;\n" % kernelName
221+
222+
self.initFunction += " if(%s_clKernel != NULL) {\n" % kernelName
223+
self.initFunction += " clReleaseKernel(%s_clKernel);\n" % kernelName
224+
self.initFunction += " %s_clKernel = NULL;\n" % kernelName
225+
self.initFunction += " }\n"
206226

207227
self.incFile.write( self.incStr )
208228
self.incStr = ""
209-
self.cppFile.write( self.cppStr )
210-
self.cppStr = ""
229+
# self.cppFile.write( self.cppStr )
230+
# self.cppStr = ""
211231

212232
def writeToFile(self):
213233
self.incFile.write( self.incStr )
214234
self.incFile.write( "\n#endif\n" )
215235
self.incFile.close()
236+
237+
self.initFunction += "}\n";
238+
self.cppStr += self.defines + "\n";
239+
self.defines = "";
240+
self.cppStr += self.initFunction + "\n";
241+
self.initFunction = "";
242+
243+
# self.cppStr += "\n";
244+
# self.cppStr += "initAutoGemmClKernels();\n";
216245
self.cppFile.write( self.cppStr )
217246
self.cppFile.close()
218247

src/library/blas/AutoGemm/KernelOpenCL.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ def makeOpenCLKernelString(kernel):
218218
kStr += endLine
219219
kStr += (
220220
" /* allocate registers */" + endLine +
221-
" DATA_TYPE_STR rC[MICRO_TILE_NUM_ROWS][MICRO_TILE_NUM_COLS] = {0};" + endLine +
221+
" DATA_TYPE_STR rC[MICRO_TILE_NUM_ROWS][MICRO_TILE_NUM_COLS] = { {0} };" + endLine +
222222
" DATA_TYPE_STR rA[MICRO_TILE_NUM_ROWS];" + endLine +
223223
" DATA_TYPE_STR rB[MICRO_TILE_NUM_COLS];" + endLine )
224224

src/library/blas/gens/clTemplates/zgemm_gcn.cl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ __kernel void KERNEL_NAME(DATA_TYPE_CHAR,TRANSPOSE_A,TRANSPOSE_B,MACRO_TILE_NUM_
210210
C += offsetC;
211211

212212
// registers
213-
DATA_TYPE_STR rC[MICRO_TILE_NUM_ROWS][MICRO_TILE_NUM_COLS] = {0};
213+
DATA_TYPE_STR rC[MICRO_TILE_NUM_ROWS][MICRO_TILE_NUM_COLS] = { {0} };
214214
DATA_TYPE_STR rA[MICRO_TILE_NUM_ROWS];
215215
DATA_TYPE_STR rB[MICRO_TILE_NUM_COLS];
216216

src/library/blas/init.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
#include <events.h>
2626
#include <stdlib.h>
2727
#include <stdio.h>
28+
#ifdef BUILDING_CLBLAS
29+
#include "AutoGemmIncludes/AutoGemmClKernels.h"
30+
#endif
2831

2932
clblasStatus
3033
clblasGetVersion(cl_uint* major, cl_uint* minor, cl_uint* patch)
@@ -250,5 +253,9 @@ clblasTeardown(void)
250253
printMemLeaksInfo();
251254
releaseMallocTrace();
252255

256+
#ifdef BUILDING_CLBLAS
257+
initAutoGemmClKernels();
258+
#endif
259+
253260
clblasInitialized = 0;
254261
}

0 commit comments

Comments
 (0)