File tree Expand file tree Collapse file tree 1 file changed +15
-4
lines changed Expand file tree Collapse file tree 1 file changed +15
-4
lines changed Original file line number Diff line number Diff line change 1717#include < map>
1818#include < string>
1919#include < sstream>
20+ #include < thread>
2021#include < stdio.h>
2122#include < string.h>
2223#include < clBLAS.h>
@@ -135,7 +136,17 @@ void makeGemmKernel(
135136{
136137 // TODO: This will need to be converted to thread local when making clBLAS thread safe
137138 typedef std::map<std::string, cl_kernel> kernel_map_t ;
138- static kernel_map_t kernel_map;
139+
140+ #if defined( _WIN32 )
141+ __declspec ( thread ) static kernel_map_t *kernel_map = 0 ;
142+
143+
144+ #else
145+ __thread static kernel_map_t *kernel_map = 0 ;
146+ #endif
147+ if (!kernel_map) {
148+ kernel_map = new kernel_map_t ();
149+ }
139150
140151 cl_context clContext;
141152 cl_device_id clDevice;
@@ -159,11 +170,11 @@ void makeGemmKernel(
159170
160171 // Check if kernel exists for this device
161172 std::string key = prefix + " _" + kernelName;
162- kernel_map_t ::iterator idx = kernel_map. find (key);
173+ kernel_map_t ::iterator idx = kernel_map-> find (key);
163174
164175
165176 // If kernel not found for this device, set to NULL
166- if (idx == kernel_map. end ()) {
177+ if (idx == kernel_map-> end ()) {
167178 *clKernel = NULL ;
168179 } else {
169180 *clKernel = idx->second ;
@@ -251,7 +262,7 @@ void makeGemmKernel(
251262#endif
252263
253264 std::string key = prefix + " _" + kernelName;
254- kernel_map[key] = *clKernel;
265+ (* kernel_map) [key] = *clKernel;
255266 delete[] kernelName;
256267 }
257268
You can’t perform that action at this time.
0 commit comments