Windows 10 給 Linux 子系統寫顯卡驅動的是一個人嗎,是誰呢?

在學術界和工業界,如果是多人參與一般說我們。如果是一個人領導下的多人參與一般更說我們(例如合伙人,CEO)。然而下面的回答中,有人說「我寫的」是什麼意思呢?為什麼「我」是單數,「他們」卻是複數?難道不是「我們」和「他」嗎。

Linux 子系統本身沒有顯卡驅動嗎?這裡的顯卡驅動是顯卡驅動還是虛擬機的顯卡介面?如果是後者的話,parallels 和VM works是不是給幾千個顯卡都寫了顯卡驅動(或者把他們都映射成一種平凡的虛擬顯卡)。

這樣的顯卡驅動還需要寫嗎?parallels 不去抄一個?

windows 10 的顯卡驅動真的是一個人寫的嗎?那又為什麼不支持cuda呢。另外CNTK真的更好嗎?為什麼paper界都沒人提到)


要撕是吧,誰怕誰啊。

首先,你得搞清楚,驅動是幹什麼的。連這個都不懂敢開炮,丟大人了吧。驅動上連繫統,下連硬體。跟硬體和系統都相關。Linux上的驅動,到Windows上沒法用,反之亦然。所以,即便parallel有驅動、Linux有驅動,到了Linux子系統里,也照樣掛。因為Linux子系統並不是個完整的Linux,尤其是和硬體打交道部分,是通過直接調用Windows Kernel做的,介面和Linux自己的完全不同。

這就否定了用現有驅動的可能。

其次,你得搞清楚,Linux子系統的來源。Linux子系統用的是picoprocess,這是公開資料就能查到的,再進一步查出處,就能找到Drawbridge - Microsoft Research。這是個輕量級虛擬化的解決方案,在Windows上虛擬Windows。如果你看了他的paper https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/asplos2011-drawbridge.pdf,就會知道裡面有提到的該方案的限制,不能接觸硬體。後來在2012年,我就負責給Drawbridge做GPU加速的部分。我一個人完成了Drawbridge的D3D9和D3D11驅動(為什麼沒有D3D10?因為我懶)。前後兩套完全不同的方案,對KMD和UMD有不同的取捨。分別適用於不同的情況。對,我一個人完成的。

再接下來,Techfest上演示了這個demo,很多人表示感興趣,也有人問了能不能跑CUDA。我現場分析了跑CUDA的可行性和難點。但沒有繼續往下做。幾天後,有個保密項目的人跟我有些接觸,問我能不能支持OpenGLES,我說給我一兩個月。3月份的Techfest,4月中旬我就第一次讓OpenGLES驅動跑起來一些遊戲了。印象深刻的是5月中旬的一天,從早上7點開始,一直寫到晚上9點,完成了Android驅動的最後一塊拼圖,終於能完整地運行Android桌面,並在裡面做所有的操作。之後那個項目就叫Project Astoria,大家基本都知道是怎麼回事了。用的也是我的驅動。甚至,到了Redmond之後,我還對那個驅動做了一次完全的改動,基本沒有一行跟以前一樣了。為的是在超低端平台上(WP,說的就是你)也能跑的流暢。仍然是我一個人完成的。(有個有意思的小故事。他們之前在WP上跑的時候都是黑屏的。因為保密需要沒告訴還在MSRA的我。而我到Redmond第一天,下午3點多入職培訓完正式上班才知道這事,下班前已經定位原因,第二天中午就修好了。老闆的老闆跟我老闆說,where didi you find him? you got the right guy!)

之後Project Astoria被暫停,原班人馬和原版代碼調去加強Linux的部分,成了現在的Linux子系統。

少年,你對力量一無所知。


曾老師不是離開知乎了么…這是勃學家客串?


湊個熱鬧,有些項目,一個人能寫出來的,一百個人還真未必可以。
因為有技術門檻。

假設滿分100分,那麼按照正態分布,普通程序員就是在40-60之間,高手在60-70之間,能夠給寫大型驅動的高端團隊,平均分也許可以到75分逼近80分。

然後,如果來了一個85分的項目,你說是平均分75-80分的百人團隊寫得好呢,還是一個水平在90-95分的人適合呢?

對了,也許有人會說,難道不可以讓一個85-90的人帶領這個團隊,自然可以碾壓那個90-95分的人了。

嗯,如果是比如給新出的nVidia顯卡寫win10驅動,可以這麼做。然而目前遇到的情況是在win10的linux子系統寫顯卡驅動,這是從未有過的技術模式。
這種情況下,那個85-90的人是會寫的,可以直接下手,那個90-95的大牛是已經有了成體系的思路,可以直接寫出beta版,測試一輪就上線的。
而那群75-80的,則是只看到了門檻,對門檻裡面有什麼都一無所知的。
這樣的團隊,即使讓85-90的人帶領,依然得從頭開始技術攻關。

冒昧問一句,題主也許連windows的驅動體系和linux差距有多大都不知道吧?連子系統和虛擬機的差距有多大都不知道吧?大概連win32和posix都是子系統都不知道吧?大概不會淺薄到以為那個驅動就是類似虛擬機的調用轉發吧?

——————————————

補充說明

答主對驅動編程方面是個外行,也是個對力量一無所知並瑟瑟發抖的少年。但我知道如何尊重強者。

答主現在做的工作中,開發人員根據業務領域不同被劃分成了幾個小組,每個小組人員根據業務壓力,從個位數到十數人不等。但不變的是,小組的領導,工作能力基本可以等同於所有組員的總和。
本人不才,是其中一個小組的組長。目前並行開展3個內容相似的項目,開發完畢待測試的一個,測試完畢待甲方使用反饋並進行修改的兩個,甲方試用完畢並回歸完畢然後驗收完畢正處於維護階段的一個。
目前我的組員投入在那三個並行開展的項目中,其他項目則由我全部負責,包括除測試外的所有文檔工作,同時我在那三個項目中仍然作為主力參與開發。
我的組員里,有一半人工作年限和我彷彿。
這還只是國內一家普通的軟體企業。
我能做的事,在我的組員眼裡是可以觸及的仰望,我和我的組員的差距,也就一個職位。
而龔大,是在微軟研究院任職的強者。他和我的差距,比我和我的組員大了不知道多少倍。他能做的事,在我看來仿若天方夜譚。

所以,請學會尊重。你可以對力量一無所知,但這不代表你就有資格質疑。初生牛犢不畏虎,並不是褒獎。


還是原來的味道


總有那麼些人,不願意承認別人一個人的工作效率等於他們一群人。


無數弱逼以為寫的程序越底層,越「直接調用「硬體越顯得的牛逼。殊不知一個系統,從外層到內層,能一起工作需要各種掌握各種領域知識的人一起協同工作。
還有很多渣渣認為牛逼的人需要再任何時候任何人面前都要表現的卑謙。殊不知對真正牛逼的人來說,過分的humble和modest就是虛偽。
碼農領域,的確有可能一個人頂許多人,因為一群烏合之眾里往往有幾個禍害是其反面作用的。


看到標題我就猜到是誰的提問。題主能幹點正經事兒嗎?方舟子好歹也真正地打假和科普過啊


我不是撕。我是對微軟公司驅動界一個人寫驅動這件事表示驚嘆。寫DirectX給200款顯卡適配驅動,一個人寫完這也是屌。當然可能這個directX「驅動」並不是我們理解的驅動。

整個微軟竟然真的依靠一個人寫顯卡驅動,在這之前都是黑屏。這家公司,很有情操。。

Parallels的虛擬機都不需要專門寫驅動,都可以玩PC遊戲了,而微軟的虛擬機制卻不支持gpu加速,手機上也不行。。。


怎麼這個問題也能火呢?實在可笑了。

是不是驅動取決於你對驅動的定義,你說不直接操縱硬體就不是驅動,那就不是,你說提供驅動介面就是驅動,那就是,這有什麼好爭論的?虛擬光碟機是光碟機嗎?vpn 是區域網嗎?你後媽是你媽嗎?

這種撕人的問題在其他話題下炒作一下也就罷了,文人相輕,小撕怡情。一群寫程序的也學著人家文科生玩人家玩剩下的,丟不丟人啊?


驅動真心可以一個人完成。連最初版本的Linux內核都是一己之力完成的。

你身邊沒人能做到一個人寫一個驅動甚至多個驅動,不代表沒人能。

世界很大的,眼界放寬點。


OS的圖形系統通常包含兩部分,一個是DDK,也就是驅動程序的開發介面,另一個是具體硬體的驅動實現,後者通常是硬體廠商自己開發,比如nv/amd/intel,前者是OS廠商開發,比如MS/Linux.

吵架的根源其實無非就是對驅動層次的理解不同而已。

DDK的設計開發主要是集中在軟體層次上,和具體OS關係緊密,所謂的架構師需要懂一點硬體, 但不需要太深入,懂些皮毛也一樣能設計,這類工作一個小team就差不多了,某些嵌入式系統上的graphics設計一個人也能搞定。

真正的GPU驅動實現和具體硬體關係緊密,通常情況下,無論工作量還是複雜程度都遠超前者的開發,我猜這也是為什麼有人對所謂「一個人完成驅動開發」說法的不滿。確實這種GPU硬體驅動的開發,涉及大量軟體和硬體知識,幾乎不可能是一個人能完成的,而是一個龐大的軟體和硬體團隊完成,GPU驅動的複雜程度也是秒殺網卡這種驅動的。

對於不涉及具體硬體的驅動,比如虛擬環境下的鏡像驅動,相對來所是比較容易開發的。最簡單的是API redirect,複雜點的如vmware下的那種,這些驅動一兩個人搞絕對是沒問題的。但真正硬體上的東西,隨便一個hang就能折磨你幾天甚至一個月,一個人搞是不現實的


這是勃勃回歸知乎的前奏?


顯卡驅動比網卡難很多嗎?不然一個人應該可以完成吧,我看intel10g那個系列的網卡都是那麼1,2個人寫的,源碼大概2-3千行,這個驅動都是套路,熟悉datasheet就行,反而之前linux為了支持多隊列網卡加的那套東西就要討論了一段時間,不過看問題描述做的不僅是顯卡驅動這麼簡單吧


怎麼現在隨便一個學點編程的就覺得自己什麼都懂了?懂web前端開發懂點編程也是搞it沒錯,但就憑這點本事就想去和搞硬體的撕我想說你還差很多火候。
人還是要提高恣肆髓頻,這話真是說的最好的


在知乎上也看到這種犯賤的撕逼提問真心感到遺憾!


隨手翻一翻,發現題主截圖中的那個問題,是我提的……
不過真沒想到一個「我」字都能撕起來。
好吧,有種非常奇怪的成就感。

不過題主這問題問的也真是夠冷汗……你們難道見過誰在Virtualbox、VMware Workstation或者Parallels虛擬機上跑CUDA的么?


遠離貼吧就是想少一分撕逼。

無奈又看見這種為撕而撕的提問。

關鍵是還多次進出知乎。


純技術驅動的項目,人多反而降低生產率
樓主是沒做過累死項目才會有這種疑問吧


一個要考一百分的需求,你找一萬個剛及格的人也考不出來~


我在以前公司的師傅,是公司的顧問,某大學的老師。
因為公司搬遷等等屁事,新產品沒趕上開發,研發部大多離職。
他花了一個月的時間,從Windows端到嵌入式設備端,包圓了,只是找了個小伙幫他焊硬體。
不妨礙他帶課。

就我的認知來說,一個人,是可以的。
另一個例子是阿里的多隆。


推薦閱讀:

TAG:顯卡 | 顯卡驅動 | CUDA | Windows 10 |