24
24
25
25
#if ON_APPLE
26
26
#include < mach/mach_time.h>
27
- #include < cstdio>
28
27
#endif
29
28
30
29
#ifdef USE_OPENCL
34
33
35
34
#include " errcode.h" // for ASSERT_HOST
36
35
#include " opencl_device_selection.h"
36
+
37
37
GPUEnv OpenclDevice::gpuEnv;
38
38
39
39
bool OpenclDevice::deviceIsSelected = false ;
@@ -915,7 +915,7 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
915
915
size_t *binarySizes;
916
916
cl_uint numDevices;
917
917
cl_device_id *mpArryDevsID;
918
- char **binaries, * str = nullptr ;
918
+ char *str = nullptr ;
919
919
920
920
clStatus = clGetProgramInfo (program, CL_PROGRAM_NUM_DEVICES,
921
921
sizeof (numDevices), &numDevices, nullptr );
@@ -940,10 +940,7 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
940
940
CHECK_OPENCL ( clStatus, " clGetProgramInfo" );
941
941
942
942
/* copy over all of the generated binaries. */
943
- binaries = (char **) malloc ( sizeof (char *) * numDevices );
944
- if (binaries == nullptr ) {
945
- return 0 ;
946
- }
943
+ std::vector<char *> binaries (numDevices);
947
944
948
945
for ( i = 0 ; i < numDevices; i++ )
949
946
{
@@ -961,7 +958,8 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
961
958
}
962
959
963
960
clStatus = clGetProgramInfo (program, CL_PROGRAM_BINARIES,
964
- sizeof (char *) * numDevices, binaries, nullptr );
961
+ sizeof (char *) * numDevices,
962
+ &binaries[0 ], nullptr );
965
963
CHECK_OPENCL (clStatus," clGetProgramInfo" );
966
964
967
965
/* dump out each binary into its own separate file. */
@@ -994,12 +992,8 @@ int OpenclDevice::GeneratBinFromKernelSource( cl_program program, const char * c
994
992
for ( i = 0 ; i < numDevices; i++ )
995
993
{
996
994
free (binaries[i]);
997
- binaries[i] = nullptr ;
998
995
}
999
996
1000
- free (binaries);
1001
- binaries = nullptr ;
1002
-
1003
997
free (binarySizes);
1004
998
binarySizes = nullptr ;
1005
999
0 commit comments