- 主题:科学计算混编的问题
项目里有一部分实时性要求比较高的部分,需要用到intel cpu的各种高级特性,msvc只支持avx512一个,其他都不支持,所以这部分必须要用intel的compiler编译
项目底层构架的代码,比如异步框架,网络框架,protobuf, absl这些都是用msvc编译的,想用intel的编译器编译各种问题。
问题是,怎么样能把这两部分连在一起,我的理解是用static library肯定是不行了,其他有什么办法么?实在不想用dynamic library的方案
--
FROM 115.193.169.*
不是所有的计算都能高并行的 我这个刚好是那种没法上cuda的
【 在 dormouseBHU 的大作中提到: 】
: 折腾这个不如直接上opencl或者cuda
--
FROM 36.28.78.*
不少consteval的代码
【 在 DoorWay 的大作中提到: 】
: 高端,帮顶。
: 单纯从架构来讲,不明白为什么计算部分不单独做成模块?模块基本就是dll/so了
: 难道这部分处于业务、框架、运算速度的三个维度交叉点?
: ...................
--
FROM 36.28.78.*
业务代码牵扯模块太多,都是static md link,没可能全部用intel的编译器全部编译一次
看起来只有用动态库方案了
【 在 BigCarrot 的大作中提到: 】
: intel compiler现在转用llvm了,你可以试试直接用clang/llvm
:
--
FROM 115.193.169.*
现在的build构架的确就是你说的这样
你说的方案我的理解是不可行的 不同编译器出来静态库的abi不一样 混链要出问题 甚至msvc同一个编译器 不同版本之间abi都不向下兼容
事实上 科学计算里 最重要的就是数据结构内存连续性和cpu指令的使用 用和不用速度能差100倍
现在的情况是 算法和业务是两波人在做 业务当然希望算法库是高层库 不要涉及太多细节 算法方面涉及很多业务输入数据的清洗变换和准备 数据准备部分要涉及业务库 算法核心函数需要调用cpu指令
--
FROM 183.137.216.*
intel和msvc虽然都有llvm backend 但是 用不同backend编译的静态库能不能混链 这个问题我内外搜了一下 没有明确答案
【 在 BigCarrot 的大作中提到: 】
: 我的意思是用clang/llvm
:
--
修改:ziqin FROM 183.137.216.*
FROM 183.137.216.*