作者a34021501 (CARD)
看板CodeJob
标题[讨论] 关於程式码编译器的效能与道德议题
时间Mon Mar 13 03:28:19 2017
各位好
小弟又来问个困扰的问题
因为我觉得会影响全宇宙
目前在评估精确度与效能
我发现相同硬体架构平台
但藉由不同作业系统运算
相同程式码跑出不同结果
而且运算时间也差异极大
都是使用同一版号编译器
近年常听闻测速软体作弊
但我觉得精确度更重要吧
会影响全世界的科学发展
一直以来都有算不准问题
毕竟要达到量子尺度运算
也需要非常精确的浮点数
Linux系统似乎比Win10好
但也有可能是编译器问题
但同样是 g++ 4.9.2 版
效能竟然相差57倍以上
执行程式时皆用档案输出
不知道各位前辈看法如何
先谢过各位前辈细心教导
以下是我的测试程式码;
http://cargon.net/GMEMD/bench_precision.cpp
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.171.26.170
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CodeJob/M.1489346903.A.507.html
※ 编辑: a34021501 (1.171.26.170), 03/13/2017 03:45:41
1F:→ a34021501: 其实我想知道为何记从忆体读资料与函数回传结果不同。 03/13 05:12
2F:推 guest2008: 请你先把编译参数列出来.最佳化过了吗?没最佳化差很大 03/13 09:23
3F:→ guest2008: 然後请你重测用VC++最佳化後跟linux g++的结果. 03/13 09:24
4F:→ guest2008: 大型演算法系统 g++最佳化根本比不过vc++的速度差超大 03/13 09:26
我编译这个程式码在两个平台都未加参数,是使用预设参数
其实有想过用 AMD x86 Open64 Compiler 但仅支援 Linux
但是要以科学精神评估不同平台的效能应该使用同样编译器
5F:→ sunneo: hi there, you should probably consider C_and_cpp board 03/13 11:00
6F:→ sunneo: other than mass this board up. 03/13 11:01
7F:→ sunneo: 还是你想要发包请人阅读你的文章?总有人会愿意拿钱的 03/13 11:03
我想这仍然是值得所有程式设计者与业主讨论的议题
毕竟我的程式码已经解决了Win10与Linux的输出问题
而精确度与效能的议题对某些产业会影响品质与产能
例如有些测量会以重复测量许多次计算平均与标准差
※ 编辑: a34021501 (36.229.39.135), 03/13/2017 16:18:26
8F:→ guest2008: 我才说你这样要怎样比?根本没意义..g++当时是为unix 03/13 17:01
9F:→ guest2008: like 环境开发的,不是为win开发的,你不最佳化要比啥? 03/13 17:01
10F:→ guest2008: VC++专为win开发的编译器.他们最熟win底层,真的打趴g++ 03/13 17:02
11F:推 lalalalaluk: 排字排很久厚 03/14 22:45
目前没有打算装 Visual Studio, 况且我写的程式只是 Run 在 Console 上的小程式而已
不过我观察了我的程式执行时使用关联 DLL 档之後发现我的小程式似乎是用 Wow64 平台
http://i.imgur.com/7VUFmsL.png 那我觉得可能要把新CPU的指令集新增至这几个DLL档
如此一来就能减少等待,不过有听闻将所有 Windows 系统档案重新编译不知是否触法...
况且 Linux 底下的 g++ 在编译我的测试程式时拥有 57 倍的性能是个不小的 SpeedUp!!
不过也有可能是 Linux 系统在运算 sqrt() 的时候有作弊的嫌疑,若是如此我先道歉了~
※ 编辑: a34021501 (36.229.39.135), 03/15/2017 19:44:18
各位好,我找到 Linux 作弊的方法了!不过也有可能是我的错,之前我是用AMD旧版驱动
今天在装了 Radeon Software Crimson ReLive Edition 17.2.1 之後效能已经超越Linux
(whql-win10-64bit-radeon-software-crimson-relive-17.2.1-feb28.exe)
此版驱动程式大小有 512MB 且实际占用硬碟空间 513MB 与以往相比已达到 2^9 的门槛
因为据我的观察,以往的驱动程式大小都是 2^8 之流! (即未达到 512MB 之档案大小)
http://i.imgur.com/1C1o2Zb.png 使用 NTCore 的 ExplorerSuite 可看出 DLL 已更新
感谢 AMD 的努力与付出,在此为这场乌龙事件向 AMD 深深的一鞠躬道歉! Apologize!!
※ 编辑: a34021501 (36.229.39.135), 03/16/2017 19:56:38