99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

MindSpore源碼工程審閱:算子、內(nèi)存與測(cè)試的架構(gòu)解析

MindSpore源碼工程審閱:算子、內(nèi)存與測(cè)試的架構(gòu)解析 最近一直在做源碼級(jí)別的工程審閱這期把目標(biāo)定在了華為開源的MindSpore框架上。選擇它的原因很簡(jiǎn)單這是少有的、能把“大廠基礎(chǔ)設(shè)施”級(jí)別的AI框架完整開源出來的項(xiàng)目從Python前端到C編譯器再到設(shè)備側(cè)運(yùn)行時(shí)全部攤開在眼前。市面上的教程大多告訴你“怎么用MindSpore訓(xùn)練一個(gè)模型”但我更關(guān)心的是另一個(gè)問題這套代碼本身經(jīng)不經(jīng)得起推敲。所以這一篇Valhalla靜態(tài)工程審閱的定位很明確——不跑訓(xùn)練、不做benchmark、不調(diào)參煉丹純粹以“源碼證據(jù)”為唯一裁決依據(jù)逐層拆解MindSpore的工程架構(gòu)、關(guān)鍵機(jī)制和代碼素養(yǎng)。如果你正準(zhǔn)備二次開發(fā)MindSpore、想研究AI框架底層實(shí)現(xiàn)或者只是單純好奇“大廠開源的代碼到底長什么樣”這篇應(yīng)該能給你一份比較完整的靜態(tài)審閱地圖。1. 開局先講方法這次“靜態(tài)審閱”到底審什么在動(dòng)手之前我先把方法說清楚。靜態(tài)工程審閱和動(dòng)態(tài)評(píng)測(cè)是兩條完全不同的路線動(dòng)態(tài)評(píng)測(cè)靠跑分、跑case、跑benchmark來觀察運(yùn)行時(shí)表現(xiàn)本質(zhì)上測(cè)的是“這臺(tái)機(jī)器上這套代碼表現(xiàn)得怎么樣”而靜態(tài)審閱靠讀代碼、追調(diào)用鏈、看目錄結(jié)構(gòu)、讀commit記錄來還原代碼庫本身的設(shè)計(jì)意圖和工程質(zhì)量測(cè)的是“這套代碼作為工程產(chǎn)品它的結(jié)構(gòu)、邊界、擴(kuò)展性和維護(hù)性處于什么水位”。1.1 為什么不用“跑一遍”代替“讀一遍”有人可能會(huì)問MindSpore都開源這么久了直接pip install然后跑個(gè)模型不就能看出好壞了嗎其實(shí)跑一遍能覆蓋的東西非常有限。一個(gè)模型訓(xùn)練跑通只能證明“主路徑上的代碼是能工作的”但一個(gè)框架的工程水平恰恰體現(xiàn)在主路徑之外的大量細(xì)節(jié)里——稀疏分支的越界檢查、設(shè)備內(nèi)存緊張時(shí)的降級(jí)策略、shape推導(dǎo)失敗時(shí)的錯(cuò)誤提示、多線程競(jìng)爭(zhēng)時(shí)的鎖粒度。這些場(chǎng)景在本地機(jī)器上極難復(fù)現(xiàn)但嵌在源碼里屬于一讀便知的部分。我上一期審閱過一個(gè)網(wǎng)絡(luò)中間件源碼動(dòng)態(tài)測(cè)試時(shí)吞吐量很好看但翻到錯(cuò)誤處理路徑發(fā)現(xiàn)大量catch(...){}空吞異常這類代碼一旦部署到生產(chǎn)環(huán)境出問題就是最難的“靜默故障”。這就是動(dòng)態(tài)評(píng)測(cè)給不了的信息。所以這一篇的結(jié)論全部來自代碼本身。1.2 證據(jù)來源代碼、目錄、注釋、測(cè)試與提交歷史“源碼證據(jù)驅(qū)動(dòng)”不是隨便翻幾眼代碼就下結(jié)論而是要建立證據(jù)鏈。這次審閱我取證的路徑有五條源碼主體MindSpore倉庫中mindspore/core、mindspore/ccsrc、mindspore/python三個(gè)關(guān)鍵目錄下的實(shí)現(xiàn)代碼目錄結(jié)構(gòu)通過頂層目錄的組織方式反推架構(gòu)分層意圖注釋與文檔字符串看代碼作者對(duì)接口邊界、使用前置條件、設(shè)計(jì)約束的說明測(cè)試代碼tests/ut與tests/st目錄下的用例分布和覆蓋傾向提交歷史與代碼注釋標(biāo)記用git log和git blame補(bǔ)全“為什么這么寫”的上下文。1.3 這期審什么、不審什么我把審閱范圍限制在“AI框架基礎(chǔ)設(shè)施”的核心鏈路算子注冊(cè)與調(diào)度、張量生命周期與設(shè)備內(nèi)存、錯(cuò)誤處理與日志、測(cè)試組織與工程素養(yǎng)。至于上層API的易用性對(duì)比、訓(xùn)練性能跑分、生態(tài)工具鏈豐富度這些不是靜態(tài)審閱能給出公正結(jié)論的這期不碰。另外要聲明一點(diǎn)審閱版本以官方公開倉庫的release分支為準(zhǔn)我拉取的是當(dāng)前穩(wěn)定分支的代碼快照不針對(duì)某個(gè)具體commit做版本考古。2. 源碼之骨架目錄結(jié)構(gòu)如何暴露MindSpore的設(shè)計(jì)觀一個(gè)大型項(xiàng)目的目錄結(jié)構(gòu)就是架構(gòu)師留給世界的“第一份代碼”。它比任何架構(gòu)文檔都真實(shí)——因?yàn)槲臋n可能是理想態(tài)而目錄結(jié)構(gòu)是落地后的物理事實(shí)。2.1 從根目錄開始的三層識(shí)別把倉庫克隆下來之后第一件事不是找README而是直接看根目錄下的模塊劃分。MindSpore的頂層結(jié)構(gòu)里有三個(gè)目錄幾乎決定了整個(gè)框架的骨架形態(tài)mindspore/pythonPython前端層也就是用戶直接接觸的mindspore.nn、mindspore.ops、mindspore.common等模塊的實(shí)際代碼所在mindspore/ccsrcC核心后端包含了前端優(yōu)化器、圖編譯、運(yùn)行時(shí)、內(nèi)核注冊(cè)、設(shè)備插件等繁重工作mindspore/core最底層的基礎(chǔ)庫提供IR數(shù)據(jù)結(jié)構(gòu)、張量對(duì)象、工具函數(shù)等與設(shè)備無關(guān)的通用能力。這個(gè)分層本身就說明了一個(gè)關(guān)鍵設(shè)計(jì)決策M(jìn)indSpore選擇了一條“Python DSL C編譯器 設(shè)備側(cè)插件”的三層結(jié)構(gòu)路線而不是像某些框架那樣把Python對(duì)象和C對(duì)象深度耦合在一起。三層之間有明確的調(diào)用邊界Python側(cè)只負(fù)責(zé)構(gòu)建計(jì)算圖和調(diào)用底層接口圖編譯和內(nèi)核執(zhí)行都下沉到C層。2.2 graphengine子模塊與圖編譯分界線在mindspore/ccsrc內(nèi)部我特別注意到frontend和backend的布局。frontend下面掛著optimizer、parser等子目錄是圖編譯的前端優(yōu)化器backend則偏向設(shè)備側(cè)適配和內(nèi)核執(zhí)行。MindSpore還通過子模塊方式引入了graphengine圖引擎這塊專門處理GEGraph Engine側(cè)的圖執(zhí)行管線。從目錄層面看MindSpore的圖編譯管線是“多引擎可切換”的——除了GE還有mindspore自己的編譯執(zhí)行路徑。這種“主路徑備選引擎”的冗余設(shè)計(jì)是大廠基礎(chǔ)設(shè)施常見的防御性架構(gòu)如果一條執(zhí)行路徑出問題至少還存在另一條可用的降級(jí)通道。2.3 從目錄命名看設(shè)備側(cè)插件化設(shè)計(jì)再看mindspore/ccsrc/plugin目錄下面的結(jié)構(gòu)是按設(shè)備類型組織的device/ascend、device/gpu、device/cpu各自獨(dú)立成目錄。這就是一個(gè)非常清晰的插件化信號(hào)。設(shè)備相關(guān)代碼被物理隔離在plugin目錄內(nèi)意味著新增一個(gè)設(shè)備后端時(shí)主干的圖編譯、IR定義、tensor管理代碼幾乎不需要改動(dòng)只需要實(shí)現(xiàn)該設(shè)備對(duì)應(yīng)的kernel注冊(cè)、內(nèi)存管理和執(zhí)行流。類似的設(shè)計(jì)思路在Linux內(nèi)核源碼的driver目錄、以及在muduo源碼里按模塊拆分網(wǎng)絡(luò)核心與業(yè)務(wù)handler的方式都能看到影子——基礎(chǔ)設(shè)施類項(xiàng)目最怕“牽一發(fā)而動(dòng)全身”插件化隔離是控制爆炸半徑的最基本手段。從靜態(tài)審閱的角度目錄的物理分隔是否清晰直接決定了后續(xù)二次開發(fā)的成本。MindSpore在這一項(xiàng)上是加分明顯的。3. 證據(jù)鏈一從算子注冊(cè)到內(nèi)核調(diào)度的完整代碼路徑看完骨架進(jìn)到具體機(jī)制。我選了一條貫穿前后端的核心路徑來追——一個(gè)算子從Python調(diào)用到設(shè)備執(zhí)行的完整旅程。這條路幾乎覆蓋了MindSpore一半的核心機(jī)制。3.1 Python側(cè)Primitive的注冊(cè)入口算子在MindSpore里對(duì)應(yīng)的核心對(duì)象叫Primitive。Python端的定義在mindspore/ops/primitive.py每個(gè)算子通過prim_attr_register裝飾器完成屬性注冊(cè)同時(shí)綁定到C側(cè)的Primitive對(duì)象。舉個(gè)例子以公開版本的實(shí)現(xiàn)為參考prim_attr_register def __init__(self): self.init_prim_io_names(inputs[x, y], outputs[output])這就是在聲明算子的輸入輸出名字。靜態(tài)審閱時(shí)我會(huì)特別關(guān)注這個(gè)裝飾器的使用是否規(guī)范——因?yàn)樗谋澈箅[藏著C側(cè)對(duì)象的映射邏輯。如果Python側(cè)聲明的算子屬性與C側(cè)的期望不一致通常會(huì)在圖編譯階段才暴露出晦澀難懂的報(bào)錯(cuò)。3.2 C側(cè)內(nèi)核注冊(cè)與分發(fā)機(jī)制Python只是前戲重頭戲在C側(cè)。算子最終要落到具體的設(shè)備計(jì)算上MindSpore在ccsrc/backend和plugin目錄下維護(hù)了一張內(nèi)核注冊(cè)表。不同設(shè)備通過各自的注冊(cè)宏把kernel實(shí)現(xiàn)掛載到算子名上比如GPU側(cè)的Cuda kernel、CPU側(cè)的Eigen或原生實(shí)現(xiàn)、Ascend側(cè)的TBE算子。靜態(tài)審閱時(shí)我重點(diǎn)檢查三類實(shí)現(xiàn)證據(jù)同算子多設(shè)備實(shí)現(xiàn)是否齊平如果Add這個(gè)算子CPU版、GPU版、Ascend版都有說明該算子的設(shè)備覆蓋度完整如果某個(gè)算子設(shè)備側(cè)缺失上層Python接口又沒有顯式攔截用戶就可能在切換到某類設(shè)備時(shí)踩到“算子不支持”的坑算子shape推導(dǎo)邏輯是否健全算子注冊(cè)時(shí)會(huì)掛載infer_shape和infer_dtype我傾向于認(rèn)為“shape推導(dǎo)代碼的完備度”是衡量算子實(shí)現(xiàn)質(zhì)量的最佳單項(xiàng)指標(biāo)——因?yàn)榭蚣茏钆碌牟皇撬愕每觳豢於恰八阃炅税l(fā)現(xiàn)shape不對(duì)”或者“該報(bào)錯(cuò)的時(shí)候沒報(bào)錯(cuò)”是否有通用的fallback路徑當(dāng)某設(shè)備缺少專用實(shí)現(xiàn)時(shí)是否有CPU回退或通用實(shí)現(xiàn)可兜底這決定了一個(gè)框架在異構(gòu)環(huán)境下的魯棒性。3.3 一條op從Python到設(shè)備的貫連把整條鏈路串起來大致是這樣的證據(jù)鏈Python側(cè)調(diào)用ops.Add構(gòu)造Primitive此時(shí)只建立符號(hào)描述該P(yáng)rimitive進(jìn)入計(jì)算圖Python對(duì)象與C側(cè)Primitive對(duì)象通過pybind綁定完成橋接圖編譯階段的優(yōu)化器對(duì)圖做改寫、算子融合等操作編譯期根據(jù)算子名和設(shè)備類型在內(nèi)核注冊(cè)表中查找對(duì)應(yīng)的kernel實(shí)現(xiàn)運(yùn)行時(shí)把輸入張量搬運(yùn)到設(shè)備內(nèi)存啟動(dòng)kernel執(zhí)行。這條鏈路里每一步之間都有對(duì)應(yīng)的代碼文件。審閱時(shí)我會(huì)逐一打開這幾段的頭文件和實(shí)現(xiàn)確認(rèn)接口邊界是否清楚、錯(cuò)誤分支是否有兜底。尤其是第4步的“查表”邏輯——一張?jiān)O(shè)計(jì)良好的內(nèi)核注冊(cè)表應(yīng)該支持“按設(shè)備按算子類型”的高效檢索而不是靠if-else鏈硬堆。從實(shí)際代碼看MindSpore核心注冊(cè)表是采用宏展開靜態(tài)映射實(shí)現(xiàn)的整體結(jié)構(gòu)比較清爽。3.4 靜態(tài)審閱如何判斷一個(gè)op的實(shí)現(xiàn)質(zhì)量這里分享一個(gè)我的習(xí)慣看一個(gè)算子質(zhì)量好不好不要只看主計(jì)算邏輯重點(diǎn)看三處邊角料——入?yún)⒑戏ㄐ孕r?yàn)、動(dòng)態(tài)shape支持、異常情況下的錯(cuò)誤信息。比如一個(gè)算子只支持靜態(tài)shape在動(dòng)態(tài)shape輸入時(shí)給出的錯(cuò)誤提示是“Shape is invalid”還是解釋了為什么invalid、需要滿足什么條件這直接反映了作者有沒有替調(diào)用者考慮。MindSpore里大量算子的錯(cuò)誤提示是帶參數(shù)的上文信息的這類細(xì)節(jié)在大廠基礎(chǔ)設(shè)施代碼里屬于“必須到位”的標(biāo)準(zhǔn)。4. 證據(jù)鏈二張量對(duì)象的生命周期與設(shè)備內(nèi)存管理算子是計(jì)算的主角張量Tensor則是數(shù)據(jù)流動(dòng)的載體。一個(gè)框架的張量管理和內(nèi)存管理直接決定了長時(shí)間訓(xùn)練時(shí)的穩(wěn)定性——顯存泄漏、內(nèi)存碎片、拷貝開銷多半都出在這一層。4.1 Tensor在Python側(cè)的暴露與C側(cè)本體用戶在Python側(cè)拿到的mindspore.Tensor本質(zhì)上是mindspore/common/tensor.py里的一個(gè)包裝類。它的底層C對(duì)象在core/tensor/tensor.h中定義持有數(shù)據(jù)指針、shape、dtype等描述信息。靜態(tài)審閱時(shí)我比較關(guān)注的是Python側(cè)Tensor與C側(cè)Tensor的同步方式是持有引用還是每次深拷貝。從代碼結(jié)構(gòu)來看Python側(cè)Tensor通過tensor_impl持有底層實(shí)現(xiàn)這是一種典型的“用戶態(tài)包裝 實(shí)現(xiàn)態(tài)本體”分離模式。好處是Python側(cè)可以做一些懶加載、延遲初始化之類的優(yōu)化壞處是如果包裝層和本體層之間的生命周期管理做得不細(xì)致容易出現(xiàn)Python對(duì)象被GC回收但C側(cè)還在使用的野指針問題。4.2 引用計(jì)數(shù)、拷貝策略與零拷貝接口內(nèi)存管理的基礎(chǔ)是生命周期。MindSpore的Tensor底層有一套引用計(jì)數(shù)機(jī)制核心思路跟高性能網(wǎng)絡(luò)庫中的引用計(jì)數(shù)管理類似——只有最后一個(gè)引用釋放時(shí)底層內(nèi)存才歸還給設(shè)備內(nèi)存池。但靜態(tài)審閱的樂趣在于發(fā)現(xiàn)細(xì)節(jié)差異。我在代碼里注意到MindSpore在部分接口上明確支持“零拷貝”語義當(dāng)你把一個(gè)Tensor傳給某個(gè)API時(shí)如果不顯式調(diào)用拷貝接口底層數(shù)據(jù)指針并不發(fā)生復(fù)制只是在引用計(jì)數(shù)上1。這類“默認(rèn)不拷貝”的設(shè)計(jì)對(duì)性能非常友好但也對(duì)使用者的心智模型提出了要求——如果你在原Tensor上做了in-place修改另一個(gè)共享底層數(shù)據(jù)的Tensor可能也會(huì)被無聲改變。文檔里其實(shí)有提但這類行為從代碼層面被確認(rèn)才真正讓人放心。4.3 設(shè)備內(nèi)存池從MemoryManager類看內(nèi)存復(fù)用策略在ccsrc/device目錄下可以找到各設(shè)備的內(nèi)存管理實(shí)現(xiàn)。以GPU為例CudaMemoryManager這類類中維護(hù)著內(nèi)存分配/釋放、緩存復(fù)用和碎片整理的邏輯。靜態(tài)審閱內(nèi)存池代碼時(shí)我會(huì)重點(diǎn)看三件事內(nèi)存塊分級(jí)策略設(shè)備內(nèi)存是否有大小分級(jí)小塊內(nèi)存和大塊內(nèi)存是否分池管理避免小塊分配拖累大塊分配釋放策略內(nèi)存釋放是立即返還給cudaMalloc還是進(jìn)入緩存池待復(fù)用緩存池的淘汰機(jī)制是什么峰值內(nèi)存控制在訓(xùn)練過程中是否能做到顯存的高效復(fù)用而非不斷擴(kuò)容。從實(shí)際代碼看MindSpore的內(nèi)存池確實(shí)提供了內(nèi)存復(fù)用機(jī)制訓(xùn)練時(shí)同shape的中間結(jié)果傾向于復(fù)用同一塊緩存這種“按shape緩存”的策略在動(dòng)態(tài)圖模式下尤為關(guān)鍵。如果你在閱讀時(shí)把device::mem_manager相關(guān)的實(shí)現(xiàn)代碼通讀一遍會(huì)對(duì)MindSpore在顯存控制上的設(shè)計(jì)意圖有更具體的感知。4.4 從代碼區(qū)分“真實(shí)優(yōu)化”和“文檔優(yōu)化”很多框架宣傳材料里說“做了顯存優(yōu)化”“支持零拷貝”但到底做到幾分代碼一翻便知。比如“零拷貝”如果只是Python側(cè)繞開了numpy的一次拷貝但C側(cè)在設(shè)備間搬運(yùn)時(shí)依然有重復(fù)的host-device復(fù)制那就算不上真正的零拷貝。審閱時(shí)我找到了幾個(gè)值得肯定的證據(jù)MindSpore在算子執(zhí)行路徑上支持輸出張量直接復(fù)用輸入張量的設(shè)備內(nèi)存避免額外分配同時(shí)在Tensor的賦值和拷貝語義上做了區(qū)分處理assign和copy走的不是同一條路徑。這類實(shí)現(xiàn)屬于“文檔里不會(huì)細(xì)講、但真實(shí)存在且好用”的東西。5. 工程素養(yǎng)藏在細(xì)節(jié)里錯(cuò)誤處理、日志與測(cè)試代碼如果說目錄結(jié)構(gòu)決定了一個(gè)項(xiàng)目的上限那錯(cuò)誤處理、日志和測(cè)試這“三件套”決定的是下限。線上出問題的時(shí)候框架報(bào)錯(cuò)是否可定位、日志是否可追蹤、回歸測(cè)試是否覆蓋到位往往比算子算得多快更影響用戶體驗(yàn)。5.1 錯(cuò)誤處理宏MS_LOG與MS_EXCEPTION的使用習(xí)慣MindSpore的C代碼里大量使用了MS_LOG和MS_EXCEPTION系列宏。靜態(tài)審閱時(shí)我會(huì)隨機(jī)抽取若干個(gè)文件統(tǒng)計(jì)這些宏的使用密度。一個(gè)直接的觀察在核心路徑比如圖編譯和內(nèi)核調(diào)度的主鏈路上錯(cuò)誤處理的密度明顯偏高幾乎每個(gè)可能失敗的調(diào)用后面都跟了日志輸出或異常拋出的分支而在一些非核心的輔助函數(shù)里日志密度會(huì)大幅下降。這個(gè)分布是合理的——核心路徑錯(cuò)誤要早暴露、早定位輔助路徑則避免日志刷屏。我還特別關(guān)注了一個(gè)細(xì)節(jié)MS_LOG的日志級(jí)別使用是否準(zhǔn)確。DEBUG、INFO、WARNING、ERROR這些級(jí)別如果被濫用嚴(yán)重后果是“想排查問題時(shí)日志里全是噪音”。從抽樣來看大部分日志的級(jí)別選擇是克制的INFO級(jí)不下探到每個(gè)調(diào)用細(xì)節(jié)WARNING也不濫用這點(diǎn)在大型C項(xiàng)目里屬于難得的自覺。5.2 測(cè)試組織ut與st的分工、命名規(guī)范與覆蓋傾向測(cè)試是另一個(gè)能在靜態(tài)審閱中給出大量信息的區(qū)域。MindSpore的測(cè)試目錄分為tests/ut單元測(cè)試和tests/st系統(tǒng)測(cè)試這種劃分并不罕見但值得看的細(xì)節(jié)在于用例的組織方式。打開tests/ut下面的目錄可以看到測(cè)試用例基本按照“組件/模塊”維度來組織每個(gè)核心模塊都有自己的專屬測(cè)試目錄文件名通常以test_xxx.py或test_xxx.cc命名。這里有一條隱藏信息測(cè)試的組織方式直接反映了被測(cè)代碼的模塊化程度——如果被測(cè)代碼是意大利面式的測(cè)試就不可能在物理上做成模塊化。我還發(fā)現(xiàn)MindSpore在CI側(cè)配置了多套測(cè)試環(huán)境CPU/GPU/Ascend分別跑這屬于靜態(tài)審閱中可以推斷出的“并行回歸”策略。大量測(cè)試用例帶有pytest.mark.level之類的分級(jí)標(biāo)記說明測(cè)試自身也有優(yōu)先級(jí)管理可以在回歸壓力大時(shí)分級(jí)裁剪。5.3 基礎(chǔ)設(shè)施級(jí)代碼的“穩(wěn)健性設(shè)計(jì)”讀大廠開源基礎(chǔ)設(shè)施代碼最容易感受到的一點(diǎn)就是它們對(duì)“異常不擴(kuò)散”有近乎偏執(zhí)的追求。MindSpore的C代碼中大量使用RAII來管理資源從DeviceStream到內(nèi)存池的鎖都封裝在析構(gòu)函數(shù)里保證異常安全。在文件讀寫、設(shè)備上下文切換等容易出錯(cuò)的環(huán)節(jié)能頻繁看到Try/Catch邊界和狀態(tài)恢復(fù)邏輯。這類設(shè)計(jì)不會(huì)給程序帶來性能提升也不會(huì)讓某個(gè)算子跑得更快但它決定了框架在長時(shí)間運(yùn)行、異常注入、顯存不足等惡劣條件下是否能“體面地失敗”。我在審閱網(wǎng)絡(luò)庫源碼時(shí)也養(yǎng)成了同樣的條件反射先看錯(cuò)誤路徑是否體面再看主路徑是否高效。5.4 值得商榷的代碼味道當(dāng)然這期審閱也不是一味唱贊歌。靜態(tài)審閱的價(jià)值之一就是要把那些“能跑但不太好”的代碼揪出來。在抽樣閱讀中我確實(shí)留意到一些可以商榷的地方部分文件頭注釋偏薄一些關(guān)鍵類只有一兩行的類注釋沒有說明設(shè)計(jì)約束和線程安全屬性。如果這個(gè)類需要多人協(xié)作維護(hù)后續(xù)接手的人只能靠猜TODO標(biāo)記分布不均代碼中散落著一定數(shù)量的TODO和FIXME有些年份看著比較久了。TODO本身不可怕可怕的是“TODO掛了三年也沒人處理”——這表明某些技術(shù)債被默認(rèn)了偶發(fā)的重復(fù)邏輯比如某些錯(cuò)誤分支的處理邏輯在不同device目錄下各寫了一遍理論上可以抽取成公共工具函數(shù)但目前是各管各的。這類重復(fù)在大廠代碼里很常見屬于“局部合理、整體可優(yōu)化”。這些都屬于“不影響當(dāng)前功能但會(huì)累死后來者”的類型。6. “證據(jù)驅(qū)動(dòng)”的另一面靜態(tài)審閱的邊界與校驗(yàn)手段講完具體發(fā)現(xiàn)還得聊聊方法論本身。靜態(tài)審閱盡管能挖掘出大量動(dòng)態(tài)測(cè)試看不到的信息但它不是萬能的。坦誠地講靜態(tài)審閱的結(jié)論是“代碼結(jié)構(gòu)層面的可能性判斷”不是“運(yùn)行效果層面的驗(yàn)證”。這兩者之間有一條不可逾越的鴻溝。6.1 靜態(tài)審閱的盲區(qū)并發(fā)、性能與運(yùn)行期行為靜態(tài)審閱最大的盲區(qū)有三個(gè)并發(fā)場(chǎng)景多線程競(jìng)爭(zhēng)、死鎖、ABA問題這些在代碼上很難一眼看穿。一個(gè)鎖的粒度寫得是否合理只有跑到高并發(fā)下才會(huì)現(xiàn)出原形。靜態(tài)讀代碼能發(fā)現(xiàn)“這里上了鎖”但很難判斷“這個(gè)鎖是否縫對(duì)了位置”真實(shí)性能代碼里的復(fù)雜度分析可以推斷但L2/L3緩存命中率、內(nèi)存分配器行為、kernel launch的純開銷這些只有profiler能給出定量結(jié)論運(yùn)行期偶發(fā)問題比如顯存碎片導(dǎo)致的大模型訓(xùn)練OOM、特定輸入shape下的數(shù)值異常這些幾乎不可能從靜態(tài)閱讀里找出根因。所以靜態(tài)審閱的定位應(yīng)該是“架構(gòu)體檢”是排查問題的第一站而不是最后結(jié)論。6.2 用git blame與git log補(bǔ)全“為什么”靜態(tài)審閱補(bǔ)充動(dòng)態(tài)信息最有效的手段是考古提交記錄。git blame一個(gè)看起來不合理的地方往往能看到當(dāng)年的commit message里寫了“fix #issue xxx”或者“revert xx because of perf regression”。這些上下文是純看代碼永遠(yuǎn)得不到的。這次審閱里我也用這個(gè)手段驗(yàn)證了幾個(gè)判斷。比如某個(gè)存儲(chǔ)管理類在多處都用了同一套加鎖模式初看以為是重復(fù)代碼git log一查原來是同一輪重構(gòu)中批量調(diào)整的屬于“有意為之的統(tǒng)一風(fēng)格”。所以審閱時(shí)不要輕易把“重復(fù)”判為“壞味道”先看提交歷史再下結(jié)論。6.3 與文檔對(duì)照發(fā)現(xiàn)文檔與實(shí)現(xiàn)的偏差另一個(gè)有價(jià)值的靜態(tài)審閱動(dòng)作是把官方文檔描述與源碼實(shí)現(xiàn)做對(duì)比。文檔寫的是“應(yīng)該的樣子”源碼展現(xiàn)的是“實(shí)際的樣子”兩者之間的縫隙常常埋著坑。我這次抽查了一個(gè)“支持動(dòng)態(tài)shape”的公開能力描述對(duì)照代碼后發(fā)現(xiàn)該能力在較新版本中確實(shí)有相關(guān)實(shí)現(xiàn)路徑但限制較多很多算子仍只支持靜態(tài)shape。如果你只看文檔以為所有算子都可以跑動(dòng)態(tài)shape那實(shí)際使用時(shí)就會(huì)被報(bào)錯(cuò)教育。這種“能力邊界只有源碼才說得清”的情況在AI框架里非常普遍。6.4 可以帶走的靜態(tài)審閱checklist如果把這次審閱方法論沉淀成一張可復(fù)用的checklist大概是這個(gè)結(jié)構(gòu)目錄結(jié)構(gòu)模塊邊界是否清晰設(shè)備相關(guān)代碼是否插件化隔離核心調(diào)用鏈從上層API到底層kernel是否路徑完整每層是否有邊界校驗(yàn)錯(cuò)誤處理核心路徑的日志密度是否足夠錯(cuò)誤信息是否有上下文內(nèi)存與資源RAII是否貫穿內(nèi)存池是否分級(jí)緩存拷貝是否可控測(cè)試組織單元測(cè)試是否模塊化測(cè)試是否有分級(jí)關(guān)鍵路徑是否有回歸守護(hù)提交歷史用git log和blame為“不可理解”的代碼尋找上下文文檔偏差宣稱的能力與代碼實(shí)際實(shí)現(xiàn)是否一致邊界條件是否說明清楚。這套清單不限于MindSpore審任何一個(gè)中大型開源基礎(chǔ)設(shè)施項(xiàng)目都可以按這個(gè)順序走一遍。最后分享兩個(gè)小技巧這次審閱MindSpore我用的工具鏈其實(shí)很簡(jiǎn)單VSCode打開倉庫配好clangd跳轉(zhuǎn)再配合ripgrep做全局搜索。但有一個(gè)小技巧挺想分享——用git log --oneline -- 文件路徑按文件看提交歷史。當(dāng)你想知道“這段代碼為什么這么寫”時(shí)單看這個(gè)文件的歷史commit往往比全局搜索高效得多。我在審閱內(nèi)存池實(shí)現(xiàn)時(shí)就是用這個(gè)命令定位到了當(dāng)年引入緩存淘汰策略的那次大重構(gòu)。另一個(gè)心得是審閱AI框架這種超大代碼庫一定不要抱著“全部讀完”的心態(tài)。抓主干、看邊界、追關(guān)鍵機(jī)制足夠了。比如這次我只深入追了“算子注冊(cè)與調(diào)度”“張量生命周期與內(nèi)存管理”兩條鏈路已經(jīng)能得到相當(dāng)豐滿的工程結(jié)論。如果貪多求全反而會(huì)在細(xì)節(jié)里迷失。說到底一個(gè)大廠開源項(xiàng)目能長期運(yùn)轉(zhuǎn)靠的從來不是一兩個(gè)牛逼算法而是底層工程是否經(jīng)得起“讀”。MindSpore這次審閱下來整體印象是架構(gòu)分層清楚、設(shè)備插件化做得到位、錯(cuò)誤處理有分寸感、測(cè)試體系比較完整屬于“確實(shí)能打”的開源基礎(chǔ)設(shè)施。至于那些分散在角落里的代碼味道反而不太讓人擔(dān)心——只要維護(hù)者在持續(xù)重構(gòu)技術(shù)債就是在可控范圍內(nèi)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
九热视频在线精品15| 婷婷天堂综合网| 天堂资源欧日浪女在线播放| 婷婷99| 99这里只有精品在线| 久爱综合| 色婷婷激情| 婷婷在线午夜| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 新99色色色色色色| 婷婷色色欧美| 丁香五月婷婷五月基地| 国产精品第一国产精品| 久久久免费精彩视频| 情涩婷婷五月天| 香蕉婷婷色五月| 日本不卡一区二区三区| 六月天婷婷| 久久婷婷成人综合色怡春院| 婷婷五月天熟妇| 国产avapp 网| 色99免费视频中文| 在线成人国产| 亚洲av另类在线观看| 久草狼人| 色五月婷婷小说亚洲中文字幕组| 欧美丁香五月天| 色久九| 久综合4| 九九艹女| 五月天网站免费欧美| 久久的爱大香蕉| 欧在线一区| 日韩欧美四五区| 我去色色网五雨天| 色色五月激情| 综合www色| 激情五月婷婷综合网| 婷婷五月天成人| 五月丁香在线婷婷美女| 五月婷婷视频28| 欧洲永久精品| 五月婷婷与六月丁香图片激情| 国产一区18| 色五月色综合| 九久热| 激情五月天婷婷| 人妻人人操| 天天碰夜夜爽| 快色t v在线入口| 深爱激情四射| 婷婷六月天激情影院| 婷婷激情五月视频| 日本九九视频| 99热偷拍| 激情久久四色| 996热| 国产原创视频91九色| 婷婷淫淫狠狠六月| 色五月久久成人婷婷| 五月美女婷婷风骚| 日本色道视频网站| 这里只有精品视频在线看| 日本熟女视频一区二区| 婷婷六月开心网| 国产精品久久久99视频| 成人AV在线网站| 激情99热| 色色丁香激情五月| 色婷六月| 婷婷五月色| 五月激情小说| 影音先锋AV男人站| 另类激情五月| 五月婷伊人| 人人肏逼视频在线一区二区| 九九婷婷综合| 久久草大香蕉| 蜜臀综合久草| 99riAv1国产在线观看| 金品在线视频99| yiqicaoav| www.一起草av| 五月激情影院| 色久婷婷网| 丁香丁香激情网| 色~性~乱~伦~噜| 日韩 中文 欧美| www.五月婷婷| 中文字幕性爱丰满| 99re久久| 亚洲无码99| 五月天开心网| 日本在线视频看se99| 五月久久| 五月丁香婷婷综合在线| 婷婷六月激情| 天天综合精品| 五月丁香啪综合| 婷婷色系婷色| 激情综合亚洲| 自拍盗摄 另类| 色婷婷AV在线| 爱99干99| 久久综合干| 久久婷婷亚洲| 国产精品热搜丁香五月婷婷| 北条麻妃九九九国产精品视频| 五月婷婷涩涩爱| 天天操天天插天天射| 玖玖婷婷精品| 99热99网| 欧美大香蕉视频| 五月丁香综合| 99ri精品| 日韩人妻在线观看| 九热视频在线伦| 色停停香蕉视频| 夜夜天天天天天干天天爽| 丁香五月激情欧欧美| 精品色色色| 超碰人人在线| 99爱99操| 久久99网| 婷婷丁香五月基地| 婷婷五月骚厕所| 五月婷网| 非洲一级AV| 一本伊人色婷| 丁香五月花| 亚洲旡码| 91九色精品| 色婷婷丁香五月| 71在线精品视频一区| 2025天天爽天天摸| 成人做爰A片免费看视频| 毛片蕉地一二| 五月天精品视频| 午夜69成人做爰视频| 久9热视频在线观看| 亚洲五月天婷婷综合| 九九综合| 五月婷伊人| 激情综合网五月| 丁香五月婷婷五月基地| 日本不卡五月婷婷丁香| 99欧美精品99日本精品| 99色最新在线视频网站| 亚洲狠9| 久久这里只有国产| 亚洲丁香花色| 五月丁香直播| 五月婷婷 激情按摩| 婷婷五月激情热播| 成人做爰A片免费看视频| 91碰超| 激情五月丁香六月| 亚洲成人中文字幕| 男人的天堂五月丁香| www.久久久.com| 综合AV在线| 日本三级中国三级99人妇网站| 日笨久久网| 色区域网站视频| 婷婷情色开心五月天99| 99热免费精品| 欧美色色色色色色| 婷婷九月丁香| 99高级会所久久| 色情综合| 99热综合在线观看| 丁香婷婷久久综合在线| 日本天堂爱爱| 99热大全在线观看| 江苏少妇性BBB搡BBB爽爽爽 | 色五月天天| 疯狂做受XXXX高潮A片动画| 99色综合网| 久久婷婷影院| 中文字幕无码AV| 青青操日本摸摸看看| 97资源碰碰| 激情色情五月天| 9视频在线成人网站| www.色五月天.com| 色女人久久| 日韩 中文 欧美| 人人操av| 综合亚洲色色| 激情五月天.色网| 亚洲日本韩国| 天天摸夜夜爽天天做| 亚洲精品字幕在线观看| 天天碰夜夜爽| 色五月天天在线观看资源站| 狠狠狠狠狠狠草| 五月天综合婷婷| 大香蕉久久婷婷精品综合| 大香蕉婷婷五月| 成人AV免费观看| 啊V视频在线观看| 精品久久婷婷五月天| 国产熟妇乱子伦hd| 激情综合99| wWwCom夜操wwW| 99噜噜噜在线播放| 美欧成人视频| 色婷婷五月天小说网| 色婷婷另类| 五月天综合影院| 欧美三级黄色片久久| 大香蕉综合| 婷婷无码视频| 丁香五月综合| 婷婷五月丁香五月| 热久久66| 一区色色色色网| av中文网| 九九99久久| 精品皮股午夜AV| 非洲一级AV| 老师的粉嫩小又紧水又多A片视频 粉嫩AV久久一区二区三区 | 亚洲视频在线网站| 婷婷久久网| 五月天婷婷黄色| 91人人网| 丁香五月天大香蕉啪啪| 九九热AV| 色色五月天丁香| 午夜精品777| 日本在线视频播放91| 嫩BBB搡BBBB榛BBBB| 色综合另类| 六月五月久久丁香| 五月婷婷激情刺激| 五月丁香婷婷基地| 婷五月天丁香婷五月| 9月色婷婷| aV直接看| 国产精产国品一二三在观看| 操91| 亚州色婷婷| 精品色色网| 欧美三级欧美一级| 色五月超碰| 日日操天堂| 日日夜夜天天| 91一起操| 97久久久久| 激情综合网五月激情| 色欲操| 成人短视频免费观看| 色噜噜狠狠色综无码久久合欧美| 日日干日日| 色婷婷超碰| 思思热精品在线观看| 五月激情偷拍婷婷| 五月天成人在线精品| 婷婷五月天美女| 人妻熟妇国产精品| 可以免费观看的av网址| 天天日夜夜高潮| 亚洲国产婷婷色五月| 成人Av在线大片| 婷色视频| 人妻AV在线观看| 国产操B视频| 日本少妇AA一级特黄大片| 少妇高潮呻吟A片免费看软件| 激情丁香社区| 丁香五月久久| 午夜婷婷| 涩丁香| 亚洲精品无码99热| 天天综合网~91| 人妻AV在线| 日本色色色| 天天干夜夜谢| 婷婷综合久久| 狠狠狠狠狠狠| www.婷婷五月天,com| 超碰在线中文字幕| eeuus五月婷| 色情五月天se| 九九视屏| www色婷婷| 国产精品99久久久久久久女警| 狠狠操狠狠爱| 91美女艹逼网站| 色黄啪啪| www久久久| 91免费在线视频6| 中国AV性爱观看| 激情五月丁香综合网站 | 婷婷五月骚厕所| 激情99在线视频| 亚洲激情久久| AV电影在线播放| 牛牛热这里只有jingpin| 亚洲精品视频在线| 秋霞少妇毛片| 99热国产这里只有| 五月开心深爱激情网| 伊人久热91网| 丁香五月激情网| 99在线观看精品视频| 九九视频精品这里只有| 不卡的AV网站| 色99在线视频| 嫩草AV久久伊人妇女超级A| 色婷婷五月丁香色| 亚洲激情高潮| 色五月婷婷久久| 久9热视频在线| 丁香大香蕉| 亚洲 五月 婷婷 成人| 婷婷五月天堂| 婷婷久久图片| 伊人狠狠操| 91一起操| 婷婷综合| 国成人网| 99色丁香婷婷综合网| 五月天婷婷AV| www.色色com| 色综久久AV| 色五月亚洲| 欧洲MV日韩MV国产| 丁香 婷婷五月| 色婷婷婷婷| WWW,五月| 久久视频婷婷| www.婷婷五月| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 综合激情婷婷| 91视频一起草| 最新av在线观看| 开心五月婷婷伊人| 婷婷亚洲五月色综合| 亚洲综合色网| 天天弄天天爽| 色色色综合| 国产激情在线| 青青草Avb在线| 超碰日韩成人| 国产丁香五月天婷婷| 99久久久免费| 97视频91| 亚洲精品视频在线播放| 超碰激情网| jiZZdr| 亚洲av另类在线观看| 极品 少妇 内射| 婷婷综合网| 色综合九九| 色狠狠综合网| 久久久激情| 婷婷激情性爱| 五月丁香综合啪啪啪啪啪| 99日在线视频| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 久久aaaaa| 五月丁香欧美在线| 青青草网武则天| 激情五月天 婷婷| 丁J香六月首页| 色婷婷五月天天天干天天操天天爽| 国产又爽又猛又粗的视频A片| 丁香六月婷婷综合激情欧美 | 亚洲色图欧美色图日本视频| 俺去也五月天婷婷| 大香蕉久久草| 九九综合色| 婷婷五月天,影院| 丁香六月视频免费观看| 99国产在线| AV色五月婷婷| 一起草AV| 色婷婷色九月| 26UUU精品一区二区| 日日爱678| 色色无码| 日本五月天一页| 99久免费视频| 婷婷五月天视频| 熟女五月天久久综合| 4399无码视频二区| 欧美色色色色色| 激情综合网五月在线播放| 99这里只有精品| 婷婷六月天精品| 91呦呦呦| 丁香五月婷久久| 草美女在线观看视频在线播放 | 红桃91人妻爽人妻爽| 六月丁香婷婷综合在线| 久久视这里只有精品| 国产熟妇乱子伦hd| 人人操AV| 亚洲色综合性| 激情五月深爱五月观看| 激情五月天福利| 婷香五月| 噜噜久| 综合色99| 久久99免费视频| 91九色视频| 婷婷中文字幕版| www.com任你艹| 天天干天天干天天操| 丁香五月天激情综合网| 91日本在线| 色哟呦av| 99热官网| 久久久999精品| 五月婷婷九| 最新av在线观看| 琪琪色网在线| 五月综合激情| 婷婷五月天AV在线| 99在这里有精品| 婷婷六月色开| 色欲婷婷五月天丁香| 97色吧| 色噜噜狠狠色综合网| 亚洲五月天伊人| 99久.| 中文字幕婷婷在线| 不卡成人免费| av免费在线看不卡无毒| 精品夜夜澡人妻无码AV| 五月激情六月宗合| 在线观看av网站| 亚洲色色精品| 亚洲五月天综合| 国产成人av在线| 91超级碰人人操| 激情五月婷婷| 九月色婷婷| 网色99| 五月婷婷香| 色情播放| 国熟女视频| 99热免费观看| 国产成人亚洲综合A∨婷婷| 五月四色婷婷| 91小黄书网址在线观看| 国产探花AV在线| 99这里是99在线视频| 国产精品日日躁夜夜躁| 99色在线观看视频| 97干在线播放| 91九色在线视频| 婷婷之玖玖| 丁香五月六月| 婷婷五月天影院| 丁香婷婷色五月| av 一区三区四区| 婷婷九月丁香| 婷婷六月天| 色情婷婷。| 天天色中文字幕女优AV| 中文av网| 97精品欧美91久久久久久久| 另类激情中文| 婷婷五月天激情诱惑| 精品婷婷五月天| 超碰九色| 同性gv国产精品一区二区| 五月欧美色播| 狠狠久久婷五月综合色| 日韩在线观看亚洲| 日韩啪| 天天综合 99久久婷婷| 99视频在线观看视频| 激情五月天第四色| 夜夜资源站| 婷婷色丁香五月| 97婷婷色| 天天拍夜夜爽日日| 久久99性爱视频| 99爱视频免费| www.色婷婷| 丁香六月激情| 91人妻九色大屁股| 9月色婷婷| 久久久久久久97| 久久五月视频| 天天色综合综合| 五月婷婷之美女图片| 色五月婷婷很很操| 激情综合久久| 色色色色色色综合网| 99热亚州综合| 色色色色色色色色五月先| 99综合视频在线| 五月永久激情| 激情综合五月| 国外亚洲成AV人片在线观看| 99精品久| 激情文学 综合 色| 丁香婷婷色五月| 99九九综合久久九九| 99在线精品视频| 婷婷色影音天| 婷婷五月激情网| oVV4WIB3vFi8D| 天天色天天| 97在线视频观看| 美女婷婷激情亚洲| 综合色99| 婷婷五月激情五月激情| 九九在线精品| 婷婷五月综合网激情| 五月丁香六月成人| 蜜臀av在线成人电影| 婷婷刺激综合| 午夜69成人做爰视频| 99ri视频在线观看| 丁香五月婷婷呀| 久久人妻人人| 激情亚洲五月| 婷婷97狠狠干| www.久久爱.com| 久久小说网| 91丨九色丨熟女丰满| renre人人操国产超碰在线| 五月天丁香久久| 婷婷香草网| 久久久久久久久久8888| 99爱视频在线观看这里只有精品| 日本人妻伦在线中文字幕| 99精品国产在热久久婷婷| 色狠狠六月| 亚洲激情四射| 色色九九五月天 | 色五月婷婷五月丁香五月| 超碰成人免费| 99亚洲精美视频在线观看| 天天久久综合| 五月激情综合网| 久久久久8888| 久久人妻精品| 欧美婷婷综合网| 婷婷天天综合| 国产精品第一国产精品| 久久er九九| 天堂A∨在线| 自拍视频99| 婷婷五月天亚洲图片| 婷婷五月天网| 99热国产这里只有| 婷婷视频网| 91操熟女| 99精品在线观看| www.maotanji.com| 99精品国产在热久久婷婷| 涩玖玖免费视频| 丁香久久久| 久久久天堂国产精品女人| 五月天国产成人| 综合色五月天| 婷婷综合网| 91ncom.色| 久久总和99| 婷婷五月天AV在线| AV网站免费在线| 免费国产视频| 91爱啪啪| 色色色热热热| 久久黄色网扯| 五月婷婷很很色| 99热99这里有免费的精品| 免费视频WWW在线观看网站| 综合丁香婷婷五月天| 天天色天天| 99久热这里只有精品视频删减版| 亚洲人人操| 狠狠狠激情网| 综久久久| 青青草原亚洲天堂| 五月丁香爱婷婷深深| 婷婷丁香六月| 天天爱天天做天天爽| 国产成人综合亚洲| 99热这里只有精品在线观看| 激情丁香九九五月综合网| 五月婷婷天堂| 亚洲精品操一操、噜一噜、摸一摸、爽 | 久久婷婷五月天激情| 色婷婷19| 色婷婷基地| 欧美婷| 丁香五月婷婷综合激情啪啪啪啪啪啪啪| 26uuu亚洲精品国产| 99免费青青蜜臀| 婷婷色九月| 激情综合五月色在线| 亚洲成人AV电影在线| 丁香五月另类小说| 99热这里是精品| 老师的粉嫩小又紧水又多A片视频| 9999热这里只有精品| 婷婷久久在线| 91超级碰碰| 丁香五月欧美激情| 99热精品在线| 啪啪五月婷婷| 99爱视频免费| 五月天综合激情网| 欧美狠狠草| 97sese婷婷| 操操啪| 99色热视频| 六月婷婷七月丁香| 久久一级AV| 九九 激情 网| 精品人妻久久久久久久| 亭亭色色五月天| www.seqingwuyuetian| 91超碰在线播放| 五月色婷婷AV| 亭亭色色五月天| www,99热在线观看| a久久| 亚洲视频99| 六月丁香婷| 97碰碰九九视频| 日韩成人精品中文字幕| 亚洲成人婷婷| 狠狠干狠狠干狠狠干狠狠干| 97久久五月丁香婷婷| 成人做爰A片免费看网站找不到了| 丁香五月成人社区| 六月婷婷影院| 五月丁香综合网色欲| 五月久久婷婷天堂视频| 西西4r午夜剧场| 九九在线视频| 99久视频| 国产avapp 网| 狠狠草狠狠草| 色色色色色色97| 激情综合啪啪啪| 婷婷综合影院| 色很久综合| 国产毛片精品一区二区色欲黄A片| 色色丁香婷婷| 色婷婷88| 99热| www.久热| 亚亚州久久高潮| 五月丁香综合精品| 色色啊| 婷婷五月综合激情| 99热这里只有精品1025| Www99热| 97碰碰碰| 色爱99| 久久久久久久久久久月丁| 精品日本视频444| AA片在线观看视频在线播放 | 五月激情综合性爱| 色五月婷婷天堂| www.久久色.com| www91色网站| 丁香五月激情图片婷婷| 色色色色丁香| 婷婷色资源| 碰碰人人人| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 伊人五月天久久| 97中文在线| 狼人婷婷久久| 91性高潮久久久久久久久| 超碰男人色| 激情综合网址| 啪啪啪综合网| 少妇性按摩无码中文A片| www.久久| 99re欧美精品| 激情丁香五月综合| 9 99免费视频| 中文字幕在线免费观看视频| 五月婷婷丁香啪啪| 天天综合五月| 色色色色色网站| 热99在线| 五月天激情影院| 五月婷婷激情五月| 欧美槡BBBB槡BBB少妇| 666555。COm毛片| 丁香五月玖玖| 色九月国产| 激情五月天视频| 婷婷激情五月天综合| 五月婷婷成人w| 色婷婷狠狠干芒果TV| 五月婷视频| 丁香久久| 五月丁香婷婷欧美色图视频五月丁香777电影| 影音先锋四区| 五月天精品| 91久女| 9热在线观看| 五月激情丁香五月| 五月婷导航| 啪啪综合| 欧美色片中文字幕久久久久| 亚洲一区二区无遮挡A片| 97操碰| 日日夜夜噜噜爽爽| 亚洲AV网站在线观看| www.99热| 五月婷婷色啪| 色婷婷欧美在线| 99精品性爱| 激情五月天视频| 婷婷五月丁香青青草在线| 婷婷综合网性| 色综合五月婷婷狠狠干| 超碰93在线观看| 日日躁夜夜躁狠狠久久AV| 亚洲精品成人片在线播| 九月婷婷综合八月丁香在线观看| 亚洲激情婷婷| 国产精品国产成人国产三级| www激情网站| 综合网激情五月天| 色五月婷婷在线| 少妇真实被内射视频三四区| 性爱网五月婷婷| 婷久久| 狠狠草综合网| 欧美精品18| 婷婷五月丁香香蕉| 日日操,夜夜撸| www激情| 啪精品| 欧美Va在线| 激情五月天综合| 久久99精品久久久久久青青AR| 五月情四婷婷| 久久综合激情| 国产激情在线观看| 久久精品视频9| 九九综合| 六月婷婷天天操夜夜爽视频| 日韩淑女人妻luan伦激情精品一区二| 丁香六月成人| 青青草a在线| 丁香婷婷大香蕉| 亚洲色综久久五月| 五月天另类小说| 成人婷婷色综合| 久久aaa| 久久婷婷五月| 日韩啪啪视频| 日本系列_4页_777FP| 野外99热| 97色色色色色| 超碰在线资源| 91chinese在线| 91成人视频| 在线资源av-超碰中文在线-成人AV| 99国产小视频| 亚洲综合视频八| 新激情五月开心五月婷婷五月丁香五月| 亚洲综合五月| 伊人婷婷青青cao| 色婷婷综合网站| 九九亚洲综合| 综合色色婷婷| 99精品热| 亚洲精品色| 久久婷婷成人视频| 成人片在线播放| 丁香六月婷婷缴情欧美| 丁香五月天电影| 只有精品在线观看| 美日韩成人| 九九热再线九九视频免费在线观看 | 大香网伊人久久综合| 久99久在线| 九九亚洲视频| 开心五月天私房婷婷| 色综合色综合网| 久久综合网免费视频| 激情综合五月天| 天色综合网站| 日韩人妻在线播放| 色色色热热热| 丁香婷婷网| 这里只有精品免费视频| 噜噜狠狠色综合久| 亚洲欧美婷婷五月色综合| 色情综合网| 狠狠精品干练久久久无码中文字幕| 午夜九九电影| 夜色.cnm| 九热精品| 99热这是里只有精品| 刘玥av在线| 激情五月,色播五月| 中文久久婷婷| 久久99网| 欧洲高清免费久久| 绿色小导航AV| 大香蕉AV在线| sewuyuejiqingwang| 一区中文字幕电影| 色情五月综合婷婷| 五月丁香六月婷精品视频| 婷婷五月天国产性感美女演员久久久久| 天天五月天综合网址| 久久久久激情| 欧美三级巜人妻互换| 思思热在线播放| 五月丁香婷婷中文| 亚洲偷| 波多野结衣AV无码Porn| 丁香香五月激情免费视频| 精品国婬伦V无码久久久| 91色噜噜狠狠狠狠色综合| 婷婷六月综合在线| 一级二级色大片| 色婷婷五月天激情在线观看| 色婷婷五月天中文字幕| 97人人干视频| 91久久婷婷| 久久机热思思热| 久激情网| 狠狠爱丁香婷| 色五月天在线观看| AV五月婷婷露脸| 婷婷综合久久| 五月婷丁香久久综合| 五月丁香在线观看| 国产视频婷婷| 色婷婷丁香五月在线| 97丁香五月| 国产AV熟妇人震精品一品二区| 成人色图情色成人网 www.5b5b5bcom 五月天| 那里有AV网址| 欧美伊人9| 深夜婷婷 丁香| www.久久爱| 久色资源| 甈吧vv| 色婷婷久久| 色站9/| 国产偷人爽久久久久久老妇APP| 99啪99| 一本综合丁香日日狠狠色| 66精品国产成人| 99久久五月天| 99九九精品视频推荐| 丁香色五月 97干| 色女人久久| 国产成人99久久亚洲综合精品| 热热久久精品视频| ww久久| 激情宗合 激情宗合| 婷婷香蕉精品| 五月婷在线影院| 丁香桃色网| A A色色| 思思久ren热| 99色热| 香蕉婷婷色五月| 色级婷婷| 九九色插| 99爱在线| 激情婷婷五月丁香啪啪啪| 丁香婷婷综合激情五月色| 久久久婷| 五月丁香激情综合网| 色五月婷婷大香蕉| 人妻少妇色综合| 久久只有18视频| 五月婷婷之美女图片| 激情五月天色爱| 五月综合亚洲| 五月丁香狠狠爱婷婷综合| 综合五月天亚洲婷婷| 色色精品色| 激情五月天婷婷直播| 婷婷天堂综合| 超碰免费人人| 婷婷丁香五月天婷婷| 婷婷综合激情| 成人噜噜网| 婷婷五月天最新综合你懂的| 五月婷婷色| 99色在线观看免费| 久久五月天激情婷婷| 美女丁香五月天| 99re这里只有精品国产99| 综合婷婷六月| 丁香五月婷婷88在线| 天天 青草 丝袜制服 在线| 色热久| 91九色首页| 婷婷色女| 欧美丁香六月激情视频| 五月天婷婷永久免费视频| AAA亚洲AV| 色色日本| 久久性操| 久久98| 丁香五月婷中字在线| 亚洲综合色婷婷文学| 久热伊人在91| 曰曰久久| 蜜臀av无码久久久久久久久| 激情五月丁香激情综合网| 婷婷五月天激情五月天深爱五月天| 夜夜躁爽日日| 91狠狠综合久久久| 国产精品18久久久| 丁香五月亚洲综合| 丁香六月婷婷综合啪啪| 99在线精品观看99| 26uuuavcom| 天天爽,夜夜爽| 91综合国免费久入| 国产毛片欧美毛片久久久| 任你干aa| 在线中文字幕av| 五月丁香六月婷婷不卡免费无码| 天天爽天天摸| 亚洲区视频| 免费视频WWW在线观看网站| 日本三级日本黄色| 影音先锋一区| 天天色综合色| 色99视频| 色综合久久久久| 99在线免费视频播放| 成人在线不卡| 国产小精品| 五月天综合在线观看| 久久9精品| 色婷婷在线电影| 手机在线日韩视频中文字幕| 天天爽天天日人人爱| 五月婷婷真爱激情网| 天天做天天爱天天爽| 996re热精品视频| 色色色色色热| 久热视频这里只有精品| 亚洲色在线观看| 伊人天堂婷婷| 亚洲精品va| 天天狠狠夜夜狠狠2023| 97人人干| 五月婷婷|欧美| 五月婷婷,六月激情| 91丨九色丨熟女丰满| 狠狠ri| 激情av| 五月天伊人网| 欧洲电影在线观看免费版英语版 | 啪啪啪啪五月天| 任你日视频| 神马久久五月天| 五月丁香色婷婷婷基地| 日日干夜夜干| 久99在线| 99极品视频| 久久网日本| 丁香五月婷婷久久久| 五月丁香啪啪拍| 久久精品婷婷| 激情五月婷婷啪啪| 六月婷婷影院| 亚洲综合五月天婷婷丁香| 亚洲碰碰碰| 五月丁香婷爱在线| 中文幕无线码中文字蜜桃| 97久久超碰| 99爱爱网| 五月丁香A∨在线| 成人狠狠成人狠狠成人狠狠成人狠狠| se99视频| 激情综合网址| 色色99| www.爱婷婷.com| 艾小青av| AA片在线观看视频在线播放| 亚洲VA欧美VA| 中文字幕永久在线| 玖玖99免费视频| 激情开心五月天| 色色色色色色色色色色色色色色,网站| 狠狠草婷婷| 裸睡玩奶头(高H)| 丁香五月综合久久八| 丁香久久久| 久久婷婷青青| 婷婷丁香基地在线| 国产精品日本一区二区在线播放| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 色九月综合网| 五月天婷婷在线播放| 激情婷婷护士激情| 99爱免费视频| 色五月噜噜| 久久九九视频| 91九色无码内射| www.操.com| 五月婷婷综合影院| 久久综合婷婷五月| 色欲九区| 婷婷金品综合视频| 99精品视频免费在线播放| 五月天激情网图片| 小视频aaa久久久| 日本欧美成人片AAAA| 婷婷 亚洲图片 丁香| 大香蕉久久视频久久视频| 激情九九综合网| 91碰碰碰久久久久| 婷五月天| 99久.| 九九成人| 久久久五月激| 最熟少妇乱码| 色五月婷婷五月天| 久99久热| .操區COm| 色久综合| 伊人婷婷五月天av| 琪琪色影音先锋| 激情99| 五月婷婷在线丁香| 欧美性生交A片免费看| 精品三区影院| av无码电影| 丁香婷婷深情五月亚洲| AV天堂淫乩| 9999热免费视频视频| 天天干天天干天天| 九九精品网站| 日日天天干| 五月天六月天| 91丁香色五月| 久久永久视频| 五月婷婷久久综合| 日韩精品无码AV| 亚洲另类电影| 天插天啪天啪天啪| 九九色院| 亚洲婷婷五月天| 玖玖资源站中文| 超碰人人在线| 国产av天天插天天操天天爽| 天堂网啪啪| 777.色色| 色婷九九九| 婷婷色色网| 天天久| 久婷婷五月丁香在线观看| 九九久久腿| 天干夜夜操| 啄木鸟丝袜美女福利视频| 超碰99热| 色综啪啪| 色99色| 色噜噜狠狠一区二区三区| 婷婷五月天美女| 久久久久五月丁香| 亚洲激情无码久久| 91视频免费后入强操| 国产午夜精品一区二区三区嫩草| 婷婷性福五月天| 激情五月综亚网| 久久婷婷五月天激情四射| 国产午夜精品一区二区三区四区| 97久久精品| 九九综合久久| 侠女刀之记忆电影在线看免费| 日本理论久久| 草草女人亚洲| 婷婷香五月天| 欧美婷婷五月天| 五月丁激情| 婷婷午夜| 中日韩狠狠色| 成人婷婷色综合| 色色色热| 色婷婷9| 亚洲成人婷婷| 色五月婷婷婷婷| 综合五月天亚洲婷婷| 美欧日韩国产成人在战| 婷婷丁香色女人| 成人国产欧美大片一区| 99热自拍| 五月丁香影院| 五月天天爱| 开心综合激情综合| 九九热10| 婷婷五月天影院| 激情爱爱网站| 色婷婷综合电影| 丁香五月欧美婷婷| 欧美成人在线观看| 性做久久久久久久免费看| 超碰国产在线| 激情五月综合网最新| 五月天开心婷婷激情网站| 五月天影院| 人人舔天天| 99秘 在线| 情欲综合网| 五月婷婷深深爱爱| 青青草原中文字幕| 色婷视频| 色综合九九| 99re在线精品视频| 亚洲小电影在线观看黄999| 欧美色碰| 欧美天天搞| 五月丁香色婷基地综合久久| 啪啪东京热| 午夜免费高清AV片| 人人97操| 99免费在线视频| 伊人久久综合| 免费亚洲成人电影AV| 日韩国产在线免费观看| 五月丁香综合中文| 色播五月综合网| 玖玖婷婷色五月| 人人操人人操919999| 亚洲AV日韩无码| www.天天干| 久草婷婷视频| 激情婷| 五月开心久久| 婷婷五月天激情电影| 五月丁香久久久久| 中文字幕av久久爽一区| 99亚洲精品视频在线观看| 九九热只有这里精品| 五月天免费色| 只有久久精品免费| 人人舔人人| 五月丁香啪啪啪| 色综合色色| 五月激情在线| 国产婷婷婷| 伊人久热91网| 99热综合在线| 蜜桃婷婷五月| 一级A片天天操夜夜操| 天天做天天爱天天要| 91凹凸在线| 久久久噜噜噜久久人妻| 中文毛片无遮挡高潮免费| 超碰97在线观看免费| 九九热91| 成人在线网址| 插插插色综合网| 国产三级秋霞| 亚洲天堂99| 国产偷人爽久久久久久老妇APP| 大香蕉福利导航| 日本久久人| 丁香六月天婷婷在线| 五月色精品| 99热综合色图| 大香网伊人久久综合| 噢美99| 欧美色99| 欧美成人网婷婷综合在线| 色综合99| 免费黄色视频网址| 97色天堂| 久九男女天堂| 色综合香蕉视频| 99开心五月五月丁香激情| 五月天电影网| 亚洲成人在线免费| av高清无码| 成人在线日韩欧美| 五婷婷六月合| 99热在线看| 99热官网| 天堂五月婷婷| 日本啪啪视频HD| 久久性刺激| 丁香综合伊人AV| www久久艹| 极品人妻VIDEOSSS人妻| 成人在线网站| 桔色成人官方网站| 久久久大香蕉| 青吴乐视频| 色 免费网站视频| 天天干夜夜想| 激情五月天婷婷| 亚洲免费观看高清完整版AV线| 狠狠色情婷婷| av在线资源| 五月婷综合| 色色色在线播放| 123草逼网| 99九九这里有免费视频| 26UUU| 亚洲精品永久久久久久| 国产毛片精品一区二区色欲黄A片| 精品女人九九九| 日本操逼九九九九58日本操逼| 久久综合五月天| 铁牛TV人妻| 久热这里只有精品在线| 另类在线| 99re热在线视频| 一级黄色尤物综合视频手机在线观看| 亚洲精品久久久久久久久久吃药| 99视频35精品视频在线观看| 这里只有精彩亚洲视频推荐| 天天干天天做| 狠狠干狠狠色| 99九九在线观看免费| 亚洲图色五月天| 激情 婷婷 插| 天天爽夜夜操| 欧美色婷婷| 欧美色久| 丁香五月婷婷五月| 久久五月天激情| 婷婷丁香五月天激情四射| 开心深爱五月天| 狠狠色丁香| 伊久久婷婷| 99热天堂| 狠狠爱婷婷丁香| 色色色色色网| 久久国产AV| 九九热视频精品| 日比视频91| 巴基斯坦粉嫩无码视频| 99久久人妻精品无码二区| 成人羞羞啪啪 全 视频| 色五月天婷婷| jiqingtaose五月天| 久热伊人| 色播五月丁香| 激情五月天小说网| 深爱激情中文五月天av| 亚洲色五月婷婷| 丁香婷婷人妻| 99亚洲精品| 色VA| 一本大道嫩草AV无码专区| 99精品视频在线免费观看| 99婷婷| 亚洲成人超碰| 91狠狠色丁香| 99热在线精品观看| 激情综合亚洲| VA五月激情在线| 国产真实乱了老女人视频|