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 17
17
#include < map>
18
18
#include < string>
19
19
#include < sstream>
20
+ #include < thread>
20
21
#include < stdio.h>
21
22
#include < string.h>
22
23
#include < clBLAS.h>
@@ -135,7 +136,17 @@ void makeGemmKernel(
135
136
{
136
137
// TODO: This will need to be converted to thread local when making clBLAS thread safe
137
138
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
+ }
139
150
140
151
cl_context clContext;
141
152
cl_device_id clDevice;
@@ -159,11 +170,11 @@ void makeGemmKernel(
159
170
160
171
// Check if kernel exists for this device
161
172
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);
163
174
164
175
165
176
// If kernel not found for this device, set to NULL
166
- if (idx == kernel_map. end ()) {
177
+ if (idx == kernel_map-> end ()) {
167
178
*clKernel = NULL ;
168
179
} else {
169
180
*clKernel = idx->second ;
@@ -251,7 +262,7 @@ void makeGemmKernel(
251
262
#endif
252
263
253
264
std::string key = prefix + " _" + kernelName;
254
- kernel_map[key] = *clKernel;
265
+ (* kernel_map) [key] = *clKernel;
255
266
delete[] kernelName;
256
267
}
257
268
You can’t perform that action at this time.
0 commit comments