Nvidia OpenCL Build日志被切断为4KB

时间:2013-11-29 09:39:11

标签: linux opencl nvidia

我在一个OpenCL文件中有24个内核,我很想知道他们在我的Nvidia卡上使用了多少个寄存器。内核由OpenCL使用交换机“ - cl-nv-verbose”构建,构建日志写入文件。查询日志大小并在堆栈上为其分配内存。获取日志并将其写入磁盘上的文件。检查并成功完成所有OpenCL命令。问题是构建日志的大小似乎限制为4097字节。

// Get build log
size_t build_log_size;
clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, 0, NULL, &build_log_size);

std::cout << "Size of Build log: " << build_log_size << std::endl;
char *build_log = (char*) alloca(build_log_size);
clGetProgramBuildInfo(program, device, CL_PROGRAM_BUILD_LOG, build_log_size, build_log, NULL);

// Write out build log
std::string build_log_string(build_log);
std::ofstream build_log_file(STR_BUILD_LOG);
if (!build_log_file.is_open()) {
    std::cerr << "Could not open " << STR_BUILD_LOG << std::endl;
} else {
    build_log_file << build_log_string;
}

build_log_file.close();

这是我在最后一行的构建日志中得到的内容:

Compiling entry function 'kernel12' for 'sm_30'
ptxas info    : Function properties for kernel12
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info    : Used 18 registers, 336 bytes cmem[0], 4 bytes cmem[2], 152 bytes cmem[3]
ptxas info    : Compiling entry function 'kernel13' for 'sm_30'
ptxas info    : Function properties for kernel13
0 bytes st

就是这样,它只是在4KB标记后的总共24个字节中的第13个内核处切断。我已经尝试过将构建日志提供超过200KB的堆内存,但仍然只能获得有限的回溯。根据clinfo,我使用的是Ubuntu 12.10和Geforce 680GTX OpenCL驱动程序版本304.88。什么阻止我获取其余的日志?

1 个答案:

答案 0 :(得分:1)

我将输入文件拆分为较小的源文件并分别编译。这绕过了这个问题。