本文整理汇总了C++中cl::Program::getBuildInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ Program::getBuildInfo方法的具体用法?C++ Program::getBuildInfo怎么用?C++ Program::getBuildInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cl::Program
的用法示例。
在下文中一共展示了Program::getBuildInfo方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initCL
void initCL()
{
ocl::createContextEx(CL_DEVICE_TYPE_ALL, clPlatform, clDevices, clContext, clQueues);
cl_int clError = CL_SUCCESS;
std::ifstream t("kmeans.cl");
std::string code((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
std::string header = "#define DIM ";
header += util::toString(DIM);
header += "\n";
header += "#define K ";
header += util::toString(K);
header += "\n";
header += "#define N ";
header += util::toString(N);
header += "\n";
header += "#define AM_LWS ";
header += util::toString(AM_LWS);
header += "\n";
header += "#define RP_LWS ";
header += util::toString(RP_LWS);
header += "\n\n\n";
code = header + code;
try {
cl::Program::Sources source(1, std::make_pair(code.c_str(), code.size()));
clProgram = cl::Program(clContext, source);
clProgram.build(clDevices, "-cl-fast-relaxed-math -cl-unsafe-math-optimizations -cl-mad-enable");
std::string info("");
for (std::vector<cl::Device>::iterator itr = clDevices.begin(); itr != clDevices.end(); ++itr) {
clProgram.getBuildInfo(*itr, CL_PROGRAM_BUILD_LOG, &info);
if (info.size() > 0)
std::cout << "Build log: " << info << std::endl;
}
for (int i = 0; i < clDevices.size(); ++i) {
clClusterAssignment.push_back(cl::Kernel(clProgram, "cluster_assignment", &clError));
clClusterReposition.push_back(cl::Kernel(clProgram, "cluster_reposition", &clError));
clClusterReposition_k.push_back(cl::Kernel(clProgram, "cluster_reposition_k", &clError));
clClusterReposition_k_c.push_back(cl::Kernel(clProgram, "c_cluster_reposition", &clError));
clComputeCost.push_back(cl::Kernel(clProgram, "compute_cost", &clError));
}
} catch (const cl::Error& err) {
std::cout << "OpenCL Error 4: " << err.what() << " (" << err.err() << ")" << std::endl;
std::string info("");
for (std::vector<cl::Device>::iterator itr = clDevices.begin(); itr != clDevices.end(); ++itr) {
clProgram.getBuildInfo(*itr, CL_PROGRAM_BUILD_LOG, &info);
if (info.size() > 0)
std::cout << "Build log: " << info << std::endl;
}
std::cin.get();
}
}
示例2: buildLog
string Host::buildLog(cl::Program prog) {
string options, blog, status;
ostringstream info;
prog.getBuildInfo(_devices[d_index], CL_PROGRAM_BUILD_OPTIONS, &options);
prog.getBuildInfo(_devices[d_index], CL_PROGRAM_BUILD_LOG, &blog);
prog.getBuildInfo(_devices[d_index], CL_PROGRAM_BUILD_STATUS, &status);
info << "Building kernels" << endl
<< "Build Options: " << options << endl
<< "Build Status: " << status << endl
<< endl << "Build Log: " << blog << endl;
return info.str();
}
示例3: InitCL
void InitCL()
{
//cl_int err = CL_SUCCESS;
try
{
//Identify platforms
cl::Platform::get(&clPlatformList);
//Select first platform with any GPU devices
for(unsigned int i=0; i<clPlatformList.size(); i++)
{
clPlatformList[i].getDevices(CL_DEVICE_TYPE_GPU, &clDeviceList);
if(!clDeviceList.empty()) break;
}
//Set Context Properties: Get associated cl_platform_id using getInfo() on the first GPU
//Thus conveniently avoiding previous C++ bindings issues :)
cl_context_properties clProps[] =
{
CL_GL_CONTEXT_KHR, (cl_context_properties)wglGetCurrentContext(),
CL_WGL_HDC_KHR, (cl_context_properties)wglGetCurrentDC(),
CL_CONTEXT_PLATFORM, (cl_context_properties)clDeviceList[0].getInfo<CL_DEVICE_PLATFORM>(),
0
};
//Create interop context from GPU devices
clContext = cl::Context(CL_DEVICE_TYPE_GPU, clProps);
//Generate program with source and build
std::string progFile = ReadKernels(KERNEL_FILE);
cl::Program::Sources clSource(1, std::make_pair(progFile.c_str(), progFile.size()));
clProgram = cl::Program(clContext, clSource);
clProgram.build(clDeviceList);
//Initialize kernels
for(int i=0; i<NUM_KERNELS; i++)
{
clKernels[i] = cl::Kernel(clProgram, kernelName[i]);
}
//Create Command Queue with profiling enabled
clQueue = cl::CommandQueue(clContext, clDeviceList[0], CL_QUEUE_PROFILING_ENABLE);
}
catch(cl::Error e)
{
cout << "OpenCL initialization failure: " << e.what() << endl
<< "Error code: " << e.err() << endl;
if(e.err() == -11)
{
std::string clProgLog;
clProgram.getBuildInfo(clDeviceList[0], CL_PROGRAM_BUILD_LOG, &clProgLog);
cout << clProgLog;
system("pause");
exit(EXIT_FAILURE);
}
throw;
}
}