1
1
1
运行时
提问帖
已解决
新人贴
Bug DTK HIP runtime 导出符号拼写错误:hipExtGetNearstCPU → hipExtGetNearestCPU
2026-09-14 13:35:32
66
环境 - 涉及库:libgalaxyhip.so(libamdhip64.so 符号链接指向同一个库) - 已验证版本: - DTK 24.04.3 —— 存在 - DTK 25.04.4 —— 存在 - DTK 26.04 —— 存在 问题描述 DTK 的 HIP runtime 导出的扩展符号名为 hipExtGetNearstCPU,其中 "Nearest" 拼成了 "Nearst",缺少一个字母 e。按命名规范应为 hipExtGetNearestCPU。 该符号目前只有 Hygon 的库导出,ROCm 官方库没有这个拼写,因此它常被用作 DTK runtime 的区分特征。 复现步骤 单文件 C 程序,不需要 DTK 开发头文件,只做动态加载 + 符号查找: #include #include int main (int argc, char *argv[]) { const char *lib = (argc > 1) ? argv[1] : "libamdhip64.so"; void *h = dlopen (lib, RTLD_NOW | RTLD_LOCAL); if (h == NULL) { fprintf (stderr, "dlopen(\"%s\") failed: %s\n", lib, dlerror ()); return 1; } printf ("%-28s: %s\n", "hipExtGetNearstCPU (DTK)", dlsym (h, "hipExtGetNearstCPU") ? "FOUND" : "NOT FOUND"); printf ("%-28s: %s\n", "hipExtGetNearestCPU (fixed)", dlsym (h, "hipExtGetNearestCPU") ? "FOUND" : "NOT FOUND"); printf ("%-28s: %s\n", "hipGetDeviceCount (control)", dlsym (h, "hipGetDeviceCount") ? "FOUND" : "NOT FOUND"); dlclose (h); return 0; } 编译并运行: cc -o dtk_symbol_check dtk_symbol_check.c -ldl ./dtk_symbol_check 实际输出 影响 1. 在 DTK 上,拼错的名字能查到、拼对的名字查不到,说明这是导出符号的拼写错误,而非别名。 2. 外部项目(如 hashcat)一直拿这个拼错符号做 DTK runtime 识别。hashcat 侧已针对两个拼写做兼容并合并,但依赖错误拼写作为长期特征并不稳固:若日后 DTK 修正拼写,旧名字消失,基于旧名字的识别会失效。 3. 希望源头统一为正确拼写,避免其他项目继续踩这个坑。 建议 - 将导出符号修正为 hipExtGetNearestCPU; - 如需向后兼容,可保留 hipExtGetNearstCPU 作为别名过渡一段时间。
全部评论(1)
只看楼主
L
liumg
1楼
多谢指正,下个版本会做修复
9/15
没有更多内容了
--
楼主
Level.4
0 帖子
楼主热帖
暂无数据