[討論] 關於程式碼編譯器的效能與道德議題
各位好
小弟又來問個困擾的問題
因為我覺得會影響全宇宙
目前在評估精確度與效能
我發現相同硬體架構平台
但藉由不同作業系統運算
相同程式碼跑出不同結果
而且運算時間也差異極大
都是使用同一版號編譯器
近年常聽聞測速軟體作弊
但我覺得精確度更重要吧
會影響全世界的科學發展
一直以來都有算不準問題
畢竟要達到量子尺度運算
也需要非常精確的浮點數
Linux系統似乎比Win10好
但也有可能是編譯器問題
但同樣是 g++ 4.9.2 版
效能竟然相差57倍以上
執行程式時皆用檔案輸出
不知道各位前輩看法如何
先謝過各位前輩細心教導
以下是我的測試程式碼;
http://cargon.net/GMEMD/bench_precision.cpp
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.26.170
※ 文章網址: https://www.ptt.cc/bbs/CodeJob/M.1489346903.A.507.html
※ 編輯: a34021501 (1.171.26.170), 03/13/2017 03:45:41
→
03/13 05:12, , 1F
03/13 05:12, 1F
推
03/13 09:23, , 2F
03/13 09:23, 2F
→
03/13 09:24, , 3F
03/13 09:24, 3F
→
03/13 09:26, , 4F
03/13 09:26, 4F
我編譯這個程式碼在兩個平台都未加參數,是使用預設參數
其實有想過用 AMD x86 Open64 Compiler 但僅支援 Linux
但是要以科學精神評估不同平台的效能應該使用同樣編譯器
→
03/13 11:00, , 5F
03/13 11:00, 5F
→
03/13 11:01, , 6F
03/13 11:01, 6F
→
03/13 11:03, , 7F
03/13 11:03, 7F
我想這仍然是值得所有程式設計者與業主討論的議題
畢竟我的程式碼已經解決了Win10與Linux的輸出問題
而精確度與效能的議題對某些產業會影響品質與產能
例如有些測量會以重複測量許多次計算平均與標準差
※ 編輯: a34021501 (36.229.39.135), 03/13/2017 16:18:26
→
03/13 17:01, , 8F
03/13 17:01, 8F
→
03/13 17:01, , 9F
03/13 17:01, 9F
→
03/13 17:02, , 10F
03/13 17:02, 10F
推
03/14 22:45, , 11F
03/14 22:45, 11F
目前沒有打算裝 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