Linux Nvidia OpenCL构建日志在4KB时被切断

Linux Nvidia OpenCL构建日志在4KB时被切断,linux,opencl,nvidia,Linux,Opencl,Nvidia,我在一个OpenCL文件中有24个内核,我想知道他们在我的Nvidia卡上使用了多少个寄存器。内核由OpenCL使用开关“-cl-nv-verbose”构建,构建日志被写入文件。查询日志的大小,并在堆栈上为其分配内存。获取日志并将其写入磁盘上的文件。所有OpenCL命令都已检查并成功完成。问题是构建日志的大小似乎被限制在4097字节 // Get build log size_t build_log_size; clGetProgramBuildInfo(program, device, CL_

我在一个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();

就是这样,它只是在总共24个内核中的第13个,在4KB标记之后的一个字节。我也尝试过给构建日志提供超过200KB的堆内存,但仍然只得到了有限的日志。根据clinfo的说法,我使用的是Ubuntu 12.10和Geforce 680GTX OpenCL驱动程序版本304.88。是什么阻止我获取日志的其余部分?

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

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