sorry, i dont have much time to reply. here’s how i’m doing it:
[codebox] void printBinaries()
{
cl_uint program_num_devices;
CL_CHECK_ERROR(clGetProgramInfo( program,
CL_PROGRAM_NUM_DEVICES,
sizeof(cl_uint),
&program_num_devices,
NULL
));
if (program_num_devices == 0)
{
std::cerr << "no valid binary was found" << std::endl;
return;
}
size_t binaries_sizes[program_num_devices];
CL_CHECK_ERROR(clGetProgramInfo( program,
CL_PROGRAM_BINARY_SIZES,
program_num_devices*sizeof(size_t),
binaries_sizes,
NULL
));
char *binaries = new char[program_num_devices];
for (size_t i = 0; i < program_num_devices; i++)
binaries[i] = new char[binaries_sizes[i]+1];
CL_CHECK_ERROR(clGetProgramInfo(program, CL_PROGRAM_BINARIES, program_num_devices*sizeof(size_t), binaries, NULL));
for (size_t i = 0; i < program_num_devices; i++)
{
binaries[i][binaries_sizes[i]] = '\0';
std::cout << "Program " << i << ":" << std::endl;
std::cout << binaries[i];
}
for (size_t i = 0; i < program_num_devices; i++)
delete [] binaries[i];
delete binaries;
}
[/codebox]