Linux Nvidia OpenCL构建日志在4KB时被切断
我在一个OpenCL文件中有24个内核,我想知道他们在我的Nvidia卡上使用了多少个寄存器。内核由OpenCL使用开关“-cl-nv-verbose”构建,构建日志被写入文件。查询日志的大小,并在堆栈上为其分配内存。获取日志并将其写入磁盘上的文件。所有OpenCL命令都已检查并成功完成。问题是构建日志的大小似乎被限制在4097字节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_
// 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