日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

fortran还是python_Fortran 还有存在的必要吗?

發布時間:2024/10/5 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fortran还是python_Fortran 还有存在的必要吗? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作為FORTRAN老用戶忍不住來撕一下。

FORTRAN就是用來把公式敲到程序中去的,像我們寫的CFD代碼,根本沒有嵌套多層的函數,也沒有什么復雜的程序結構,一個SUBROUTINE幾千行,全是加減乘除的式子,要什么面向對象呢?

另外FORTRAN本身的編輯邏輯非常簡單,數組就是數組,變量就是變量,從數組中取哪個數就是取哪個數,沒什么指針移位什么的。全局的數組在SUBROUTINE或者FUNCTION之間傳遞非常直觀,許多函數都去操作全局數組也不會出錯。

編譯器里的指令級的SIMD向量化是針對最底層的,所以我才不要什么外部的數學庫,我需要我們自己寫的DO循環是那個被向量化的最底層,許多FORTRAN程序員的習慣恰好滿足了這一點。我們是不介意連FFT都自己寫的,我們組的程序除了MPI以外沒有使用任何外部的庫,所以并行粒度到哪個層面就很清楚,可以AVX+openMP+MPI混用。并且作為算法研究,我需要知道計算中所發生的一切,依賴外部的庫總是感覺心里沒底。

很多人說的FORTRAN的矩陣操作很方便,在我們這里也是不存在的。CFD在某些階段(甚至是很高的層面上)是需要求解線性方程組不假,但是這種超大的稀疏矩陣根本不是靠庫函數直接求逆或者直接做矩陣向量乘法的,甚至根本沒有存儲過整個系數矩陣。每個元素具體的算法幾乎全部是手敲進去,花上百行去實現一個格式算出一個系數,最后用一行乘掉拉倒,根本沒有顯式的矩陣運算。向量操作倒是偶爾用一下,省一個DO而已。所以很多人理解的所謂FORTRAN矩陣操作方便的優勢,在我看來并不是主要原因。

有人說應該權衡一下,犧牲一點程序性能來節省編程的時間,我覺得說的很對,但在不同領域這個平衡點是不一樣的。像我們CFD領域,有時在集群上等一個結果有時要數月,大家還都在排隊,所以程序運行速度絕對是非常重要的。機時是很大的成本,你的程序效率太低,收益與成本不對稱,可能連掛上去的機會都沒有。商業領域也是一樣的,計算服務器也是成本,跑得快的程序直接意味著真金白銀的成本節省,這是那些“立等可取”的應用所無法想象的。

我的感覺就是敲式子并不難,式子本身是什么才更重要。FORTRAN程序員都不認為自己是程序員,而都說自己是搞計算的,懂的人自然知道“搞CFD的”和“用CFD做研究的”是完全不同的概念,前者更牛一些,大佬級的也多為前者。不需要把研究員逼成專業程序員,就能把算法實現得挺好挺快,我想這就是FORTRAN存在的價值。大佬們需要,這就夠了。

當然,FORTRAN面向的用戶也越來越窄了,因為計算機不再是尖端科學計算的專屬,已經“飛入尋常百姓家”了。什么人都在編程,就一定會有程序員出來造反,“要革FORTRAN的命”,這也是正常的。事實上目前堅持在用FORTRAN的都是大幾十年的傳統學科(而且是超大規模計算的那種,比如各種流體計算,航空航天的、核爆的、氣象的等等),看來來像是小眾用戶了,但是仍然是很有錢的少數。目前基本只有intel和NVIDIA(買了原來的PGI)兩家硬件商還在做,因為高性能計算是他們的大客戶,那些超級計算機上也是離不開FORTRAN的。

我也用CUDA,它也是直接針對高性能計算的,為我節省了很多的計算成本(自己獨占GPU機器不用排隊爽歪歪),但是用CUDA做CFD真的非常小眾,需要適應的過程,也經歷了被神話和被質疑的過程。FORTRAN的定位某種程度上講也是類似的。試想你用C++鄙視CUDA,認為CUDA應該消失,有意思么?

“FORTRAN滅亡論”可以休矣。

總結

以上是生活随笔為你收集整理的fortran还是python_Fortran 还有存在的必要吗?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。