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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2024/10/5 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fortran还是python_Fortran 还有存在的必要吗? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

FORTRAN就是用來把公式敲到程序中去的,像我們寫的CFD代碼,根本沒有嵌套多層的函數(shù),也沒有什么復(fù)雜的程序結(jié)構(gòu),一個(gè)SUBROUTINE幾千行,全是加減乘除的式子,要什么面向?qū)ο竽?#xff1f;

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

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

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

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

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

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

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

“FORTRAN滅亡論”可以休矣。

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。