c++ 调用meshlab程序慢_把安卓手机性能发挥到极致之-Aid Learning平台C++调用Fortran及性能测试...

Aid Learning比较好的支持了gcc、gfortran!具体搭建方式见下文:

myastrotong:把安卓手机性能发挥到极致之-Termux/Aid Learning使用Fortran

因此本文基于gcc和gfortran进行联合开发。

其实就是用C/C++调用Fortran。毕竟当前Fortran已经远远落后于C了!最好的方式当然是C调用Fortran的遗留库!我才不会用Fortran去调用C的!哈哈!

还是以NPSOL为例(NPSOL是一个斯坦福大学的优化包):

NPSOL有两个Fortran相关文件夹:src,examples

src文件含有相关的库文件,examples含有可执行文件。我自己稍微修改了里面的npmain.f(用f2c把它改成了C文件,然后自己稍做了修改,改成了标准C++文件,去掉了对f2c的相关引用),重命名为npmain.cpp(注意后缀,是.cpp不是.c)。

进入src文件夹输入:

gfortran -c xx1.f xx2.f xx3.f %把相关.f文件生成.o文件

然后把生成的.o文件打包生成静态链接库libnpsol.a:

ar rc libnpsol.a xx1.o xx2.o xx3.o %把.o文件生成静态链接库libnpsol.a

然后进入到example文件,基于刚才生成的静态链接库(libnpsol.a) 生成可执行文件。

Fortran的语法是:

gfortran npmain.f -o npmaintest -L../src -lnpsol

其中-L后面表示库的路径, -l表示库的名称,本例是libnpsol.a,去掉lib和.a,编译器自己能够找到,于是输入的库名称就是npsol。默认先搜索j动态链接库(.so),没有则搜索静态链接库(.a)。

本文关注的是C++调用Fortran静态链接库,语法为:

g++ npmain.cpp -o npmaincpptest -L../src -lnpsol -lgfortran

注意与Fortran语法的区别,后面是-lgfortran

eea33b81f76375cb37cf71c930e8ca3e.png

然后执行,看效果!

./npmaincpptest

ef218f73ca53e51ae5a867b79fa49d98.png

下面到了跑分时间!

搞个for循环,上面程序重复跑个200次,计时结果如下:

777da2c6abed01a497b6595c046bd6ce.png
Win10平台3700X计时

d6470f3c6a390541cfcb7f1827afb55a.png
Mix2S计时结果

类型 | 计时/sec | 归一化时间

3700X | 3.426 |1

小米Mix2S | 4.156 | 1.213

虽然这计算测试不严谨(窗口输出较多,影响了CPU发挥),但是测试结果表明,单线程计算时,小米Mix2S也没比AMD 3700X慢多少!那么手机搞搞科学计算还是可以的!!!Aid Learning真香啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值