好友
阅读权限10
听众
最后登录1970-1-1
|
……
想问一下dalao们
您知道如何在已有对应的.lib/.a文件而无源代码的情况下,如何恢复.dll/.so文件的符号信息吗?[悬赏值350]
https://www.52pojie.cn/thread-1000053-1-1.html
尝试在吾爱发悬赏……目测多半要凉
大概是误会了悬赏区的用法吧……
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题的背景是这样的
我有一个炼丹用的python包mxnet,每次import mxnet as mx的时候都需要十几秒的时间
理论上……我是知道如何加速mxnet的加载的,比如mxnet加载缓慢的原因是libmxnet.dll里面包含了太多无用的CUDA_ARCH。只要github上拿下源代码,从源代码直接编译一份,保证import在一秒内结束
然而问题是,mxnet会升级,而我不可能每次升级都去mxnet那里下好源代码重新编译。
于是我去nvidia论坛提问,如何去掉.dll里面不需要的ARCH
他们给了一个解决方案,nvprune
然而nvprune是单文件版,不能同时输入两个文件,并且nvprune需要输入的文件是relocatable的——我能拿到的.dll都是被删掉了符号表导致不能relocate的版本,于是nvprune自然而然地失败了。
幸运地是,除了libmxnet.dll,下载的mxnet自带一个应当是包含了全部libmxnet.dll符号表内容的libmxnet.lib——然而问题是,我并不知道如何把这样的.dll跟.lib文件正确地结合起来,生成一个relocatable的.dll文件
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我真正关心的问题是,应该如何削减libmxnet.dll中无用的cuda_arch(对windows以及对linux,因为我不确定日后会不会专门弄个机子装linux来炼丹)
目前能找到的路径是,只要我们能把.lib文件的符号信息正确地送进.dll,我们就能使用nvprune修剪.dll文件,去掉所有无用的结构
最后这个应当是论坛里的大牛所熟悉的范畴,也是我悬赏的内容
(结果……悬赏区都是在求下载……真正的大神果然从来不逛悬赏区吗?) |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|