- 主题:科学计算混编的问题
高端,帮顶。
单纯从架构来讲,不明白为什么计算部分不单独做成模块?模块基本就是dll/so了
难道这部分处于业务、框架、运算速度的三个维度交叉点?
还是架构的问题哈
【 在 ziqin 的大作中提到: 】
: 项目里有一部分实时性要求比较高的部分,需要用到intel cpu的各种高级特性,msvc只支持avx512一个,其他都不支持,所以这部分必须要用intel的compiler编译
: 项目底层构架的代码,比如异步框架,网络框架,protobuf, absl这些都是用msvc编译的,想用intel的编译器编译各种问题。
: 问题是,怎么样能把这两部分连在一起,我的理解是用static library肯定是不行了,其他有什么办法么?实在不想用dynamic library的方案
--
FROM 1.86.0.*
算法核心函数一两个,手搓汇编可以吗,用icc生成汇编,翻译下MASM,拷贝到cpp代码里,用msvc编译。相当于手动链接了。
多的话,这么干不可取,维护成本太高了。提成一个动态库也不错。
【 在 ziqin 的大作中提到: 】
: 现在的build构架的确就是你说的这样
: 你说的方案我的理解是不可行的 不同编译器出来静态库的abi不一样 混链要出问题 甚至msvc同一个编译器 不同版本之间abi都不向下兼容
: 事实上 科学计算里 最重要的就是数据结构内存连续性和cpu指令的使用 用和不用速度能差100倍
: ...................
--
FROM 61.185.158.*
VS2015以后可以了。官网写的。
【 在 poggy 的大作中提到: 】
:
: 这个不用想, 基本不可能, 正如前面说的, 同一家编译器的不同版本都做不到, 更不用说这种不同实现的。
: C++语言很复杂, 语言层面以外, 很多实现细节, 根本没有规范, 各家实现各家的,
: ...................
--
FROM 61.185.158.*