【问题标题】:Nvidia OpenCL Build log gets cut off at 4KBNvidia OpenCL Build 日志在 4KB 处被截断
【发布时间】:2013-11-29 09:39:10
【问题描述】:

我在一个 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 个总 24 个字节中的第 13 个内核处截断。我也尝试过为构建日志提供超过 200KB 的堆内存,但仍然只能得到有限的日志。根据 clinfo,我正在使用 Ubuntu 12.10 和 Geforce 680GTX OpenCL 驱动程序版本 304.88。是什么阻止我获取日志的其余部分?

【问题讨论】:

    标签: linux opencl nvidia


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 2016-07-29
      • 1970-01-01
      • 2020-05-28
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      相关资源
      最近更新 更多