哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

谷歌DeepMind發(fā)現(xiàn)更快排序算法,已集成到C++庫(kù)

jf_WZTOguxH ? 來(lái)源:AI前線(xiàn) ? 2023-06-09 17:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

接觸過(guò)基礎(chǔ)計(jì)算機(jī)科學(xué)課程的朋友們,肯定都曾親自動(dòng)手設(shè)計(jì)排序算法——也就是借助代碼將無(wú)序列表中的各個(gè)條目按升序或降序方式重新排列。這是個(gè)有趣的挑戰(zhàn),可行的操作方法也多種多樣。人們?cè)度氪罅繒r(shí)間探索如何更高效地完成排序任務(wù)。

作為一項(xiàng)基礎(chǔ)操作,大多數(shù)編程語(yǔ)言的標(biāo)準(zhǔn)庫(kù)中都內(nèi)置有排序算法。世界各地的代碼庫(kù)中使用了許多不同的排序技術(shù)和算法來(lái)在線(xiàn)組織大量數(shù)據(jù),但至少就與 LLVM 編譯器配套使用的 C++ 庫(kù)而言,排序代碼已經(jīng)有十多年沒(méi)有任何變化了。

近日,谷歌 DeepMind AI 小組如今開(kāi)發(fā)出一種強(qiáng)化學(xué)習(xí)工具 AlphaDev,能夠在無(wú)需通過(guò)人類(lèi)代碼示例做預(yù)訓(xùn)練的情況下,開(kāi)發(fā)出極限優(yōu)化的算法。如今,這些算法已經(jīng)集成到 LLVM 標(biāo)準(zhǔn) C++ 排序庫(kù)中,這是十多年來(lái)排序庫(kù)部分第一次發(fā)生變化,也是第一次將通過(guò)強(qiáng)化學(xué)習(xí)設(shè)計(jì)的算法添加到該庫(kù)中。

編程過(guò)程視為“游戲”

由于不必預(yù)先接觸任何人類(lèi)游戲策略,DeepMind 系統(tǒng)往往能發(fā)現(xiàn)人類(lèi)從未設(shè)想過(guò)的攻關(guān)思路。當(dāng)然,由于完全依靠自我對(duì)抗來(lái)學(xué)習(xí)經(jīng)驗(yàn),DeepMind 在某些情況下也會(huì)形成可被人類(lèi)利用的盲點(diǎn)。

這種方法跟編程其實(shí)非常相似。大語(yǔ)言模型之所以能夠編寫(xiě)出有效代碼,就是因?yàn)樗鼈兛吹竭^(guò)大量人類(lèi)代碼示例。但也正因?yàn)槿绱耍Z(yǔ)言模型很難產(chǎn)出人類(lèi)之前沒(méi)做過(guò)的東西。如果我們希望對(duì)普遍存在的現(xiàn)有算法(例如排序函數(shù))做進(jìn)一步優(yōu)化,那么繼續(xù)依賴(lài)現(xiàn)有人類(lèi)代碼將很難突破固有思路的束縛。那么,如何才能讓 AI 找到真正的新方向?

DeepMind 的研究人員采用了與國(guó)際象棋和圍棋相同的方法:把代碼優(yōu)化任務(wù)轉(zhuǎn)化成單人“組裝游戲”。AlphaDev 系統(tǒng)開(kāi)發(fā)出一種 x86 匯編算法,會(huì)將代碼的運(yùn)行延遲視為一個(gè)分?jǐn)?shù),在努力將該分?jǐn)?shù)最小化的同時(shí)確保代碼能夠順暢跑通。通過(guò)強(qiáng)化學(xué)習(xí),AlphaDev 逐漸具備了編寫(xiě)緊湊、高效代碼的能力。

AlphaDev 基于 AlphaZero。DeepMind 向來(lái)以開(kāi)發(fā)能自學(xué)游戲規(guī)則的 AI 軟件而聞名。這種思路被證明效果拔群,也先后攻克了國(guó)際象棋、圍棋和《星際爭(zhēng)霸》等諸多游戲難題。雖然具體細(xì)節(jié)因所玩游戲而異,但 DeepMind 軟件確實(shí)能在重復(fù)游玩中不斷學(xué)習(xí),持續(xù)探索能令得分最大化的辦法。

AlphaDev 的兩個(gè)核心組件是學(xué)習(xí)算法和表示函數(shù)。

AlphaDev 學(xué)習(xí)算法可以結(jié)合 DRL 和隨機(jī)搜索優(yōu)化算法來(lái)玩組裝游戲。AlphaDev 中的主要學(xué)習(xí)算法是 AlphaZero 33 的擴(kuò)展,AlphaZero 33 是一種著名的 DRL 算法,其中訓(xùn)練神經(jīng)網(wǎng)絡(luò)以指導(dǎo)搜索完成游戲。

表示函數(shù),負(fù)責(zé)跟蹤代碼開(kāi)發(fā)時(shí)的整體性能,其中包括算法的常規(guī)結(jié)構(gòu)以及對(duì) x86 寄存器和內(nèi)存的使用。該系統(tǒng)會(huì)單獨(dú)添加匯編指令,通過(guò)蒙特卡洛樹(shù)搜索(同樣是一種從游戲系統(tǒng)中借用的方法)進(jìn)行選擇。樹(shù)狀結(jié)構(gòu)允許系統(tǒng)快速將搜索范圍縮小至包含大量潛在指令的有限區(qū)域,而蒙特卡洛方法則以一定程度的隨機(jī)性從這個(gè)分支區(qū)域內(nèi)選擇具體指令。(請(qǐng)注意,這里所說(shuō)的“指令”是為創(chuàng)建有效、完整程序集而選擇特定寄存器等操作。)

之后,系統(tǒng)會(huì)評(píng)估匯編代碼的延遲和有效性狀態(tài),為其打分并與前一次得分進(jìn)行比較。而通過(guò)強(qiáng)化學(xué)習(xí),系統(tǒng)會(huì)在給定的程序狀態(tài)之下保留樹(shù)結(jié)構(gòu)中不同分支的工作信息。隨著時(shí)間推移,系統(tǒng)將逐漸“學(xué)會(huì)”如何以最高得分(代表最低延遲)獲得游戲勝利(成功完成排序)。AlphaDev 的主要表示函數(shù)基于 Transformer。

為了訓(xùn)練 AlphaDev 發(fā)現(xiàn)新算法,AlphaDev 在每輪中都會(huì)觀(guān)察它生成的算法和中央處理器 (CPU) 中包含的信息,然后通過(guò)選擇要添加到算法中的指令完成游戲。AlphaDev 必須有效地搜索大量可能的指令組合,以找到可以排序的算法,并且還要比當(dāng)前最好的算法更快,同時(shí)代理模型可以根據(jù)算法的正確性和延遲獲得獎(jiǎng)勵(lì)。

4093e6a4-0691-11ee-962d-dac502259ad0.png

圖 A:組裝游戲,圖 B:獎(jiǎng)勵(lì)計(jì)算

最終,AlphaDev 發(fā)現(xiàn)了新的排序算法,這些算法可以讓 LLVM libc++ 排序庫(kù)得到改進(jìn):對(duì)于較短的序列,排序庫(kù)的速度提高了 70%;對(duì)于超過(guò) 250,000 個(gè)元素的序列,速度提高了約 1.7%。

具體而言,該算法的創(chuàng)新主要在于兩種指令序列:AlphaDev Swap Move(交換移動(dòng))和 AlphaDev Copy Move(復(fù)制移動(dòng)),通過(guò)這兩個(gè)指令,AlphaDev 跳過(guò)了一個(gè)步驟,以一種看似錯(cuò)誤但實(shí)際上是捷徑的方式連接項(xiàng)目。

40ae4328-0691-11ee-962d-dac502259ad0.png

左圖:帶有 min(A,B,C) 的原始 sort3 實(shí)現(xiàn)。?

右圖:AlphaDev Swap Move - AlphaDev 發(fā)現(xiàn)你只需要 min(A,B)。

40ec3dc2-0691-11ee-962d-dac502259ad0.png

左:max (B, min (A, C)) 的原始實(shí)現(xiàn)用于對(duì)八個(gè)元素進(jìn)行排序的更大排序算法。

?右:AlphaDev 發(fā)現(xiàn)在使用其復(fù)制移動(dòng)時(shí)只需要 max (B, min (A, C))。

這套系統(tǒng)的主要優(yōu)勢(shì)在于,其訓(xùn)練過(guò)程不借助任何代碼示例。相反,系統(tǒng)會(huì)自主生成代碼示例,然后對(duì)其做出評(píng)估。過(guò)程當(dāng)中,它也就逐漸掌握了關(guān)于有效排序的指令組合信息。

從排序到散列

在發(fā)現(xiàn)更快的排序算法后,DeepMind 測(cè)試了 AlphaDev 是否可以概括和改進(jìn)不同的計(jì)算機(jī)科學(xué)算法:散列。

哈希是計(jì)算中用于檢索、存儲(chǔ)和壓縮數(shù)據(jù)的基本算法。就像使用分類(lèi)系統(tǒng)來(lái)定位某本書(shū)的圖書(shū)管理員一樣,散列算法可以幫助用戶(hù)知道他們正在尋找什么以及在哪里可以找到它。這些算法獲取特定密鑰的數(shù)據(jù)(例如用戶(hù)名“Jane Doe”)并對(duì)其進(jìn)行哈希處理——這是一個(gè)將原始數(shù)據(jù)轉(zhuǎn)換為唯一字符串(例如 1234ghfty)的過(guò)程。計(jì)算機(jī)使用此散列來(lái)快速檢索與密鑰相關(guān)的數(shù)據(jù),而不是搜索所有數(shù)據(jù)。

DeepMind 將 AlphaDev 應(yīng)用于數(shù)據(jù)結(jié)構(gòu)中最常用的散列算法之一,以嘗試發(fā)現(xiàn)更快的算法。當(dāng)將其應(yīng)用于散列函數(shù)的 9-16 字節(jié)范圍時(shí),AlphaDev 發(fā)現(xiàn)的算法速度提高了 30%。

今年,AlphaDev 的新哈希算法被發(fā)布到開(kāi)源 Abseil 庫(kù)中,可供全球數(shù)百萬(wàn)開(kāi)發(fā)人員使用,該庫(kù)現(xiàn)在每天被數(shù)萬(wàn)億次使用。

實(shí)際可用的代碼

復(fù)雜程序中的排序機(jī)制能夠處理大量任意條目的集合。但在標(biāo)準(zhǔn)庫(kù)層面來(lái)看,這種能力源自一系列高度限定的具體函數(shù)。這些函數(shù)各自只能處理一種或幾種情況。例如,某些單獨(dú)算法只能對(duì) 3、4 或 5 個(gè)條目做排序。我們也可以同時(shí)使用一組函數(shù)對(duì)任意數(shù)量的條目作排序,但原則上每一次函數(shù)調(diào)用最多只能對(duì) 4 個(gè)條目做排序。

DeepMind 在每個(gè)函數(shù)上都設(shè)置了 AlphaDev,其實(shí)際運(yùn)行方式有著很大區(qū)別。對(duì)于負(fù)責(zé)處理特定數(shù)量條目的函數(shù),可以編寫(xiě)出不含任何分支的代碼,即根據(jù)變量狀態(tài)執(zhí)行不同的代碼。因此代碼性能往往與所涉及的指令數(shù)量成反比。

AlphaDev 已經(jīng)成功將 sort-3、sort-5 和 sort-8 的指令數(shù)量各減一,在 sort-6 和 sort-7 中的指令削減量甚至更多。只有 sort-4 上沒(méi)能找到改進(jìn)現(xiàn)有代碼的方法。而在實(shí)際系統(tǒng)上的重復(fù)運(yùn)行測(cè)試證明,更少的指令確實(shí)帶來(lái)了更好的性能。

至于對(duì)可變數(shù)量條目進(jìn)行排序,則要求代碼中包含分支,而不同處理器專(zhuān)用于處理這些分支的元件數(shù)量也有區(qū)別。

對(duì)于這類(lèi)情況,研究人員在 100 臺(tái)不同的計(jì)算設(shè)備上對(duì)代碼性能做出了評(píng)估。AlphaDev 在這類(lèi)場(chǎng)景下同樣找到了進(jìn)一步榨取性能的方法,下面我們以一次最多排序 4 個(gè)條目的函數(shù)為例,看看它到底是怎么操作的。

在 C++ 庫(kù)的現(xiàn)有實(shí)現(xiàn)中,代碼需要進(jìn)行一系列測(cè)試來(lái)確認(rèn)具體需要對(duì)多少個(gè)條目做排序,再根據(jù)條目數(shù)量調(diào)用相應(yīng)的排序函數(shù)。

而 AlphaDev 修改后的代碼則采取更加“神奇”的思路:它先測(cè)試是不是 2 個(gè)條目,如果是則調(diào)用相應(yīng)函數(shù)立即做排序。如果數(shù)量大于 2 個(gè),則代碼會(huì)先對(duì)前 3 個(gè)條目做排序。這樣如果確實(shí)只有 3 個(gè)條目,則返回排序結(jié)果。由于實(shí)際是有 4 個(gè)條目要做排序,所以 AlphaDev 會(huì)運(yùn)行專(zhuān)門(mén)代碼,以非常高效的方式將第 4 個(gè)條目插入到前 3 個(gè)已經(jīng)排序完成的條目中的適當(dāng)位置。

這種辦法聽(tīng)起來(lái)有點(diǎn)怪異,但事實(shí)證明其性能確實(shí)始終優(yōu)于現(xiàn)有代碼。

由于 AlphaDev 確實(shí)生成了更高效的代碼,所以研究團(tuán)隊(duì)打算把這些成果重新合并到 LLVM 標(biāo)準(zhǔn) C++ 庫(kù)中。但問(wèn)題是這些代碼為匯編格式,而非 C++。所以他們必須通過(guò)逆向計(jì)算找到能夠生成相同程序集的 C++ 代碼。

現(xiàn)如今,代碼成果已經(jīng)被合并至 LLVM 工具鏈內(nèi),成為十多年來(lái)這部分代碼的首次更新。研究人員估計(jì),AlphaDev 生成的新代碼正每天被執(zhí)行數(shù)萬(wàn)億次。

結(jié)束語(yǔ)

“太棒了!將我們程序員很早就學(xué)會(huì)的這種基本排序任務(wù)的速度提高了 70%??吹?AI 在我們都依賴(lài)的算法和庫(kù)中提供重大加速,真是令人興奮?!庇?a target="_blank">開(kāi)發(fā)者對(duì)谷歌 DeepMind 的成果表示振奮。

但也有開(kāi)發(fā)者并不買(mǎi)賬:“相當(dāng)令人失望……1.7% 的改善?5 個(gè)元素的序列 70%?可能是最不受歡迎、最不切實(shí)際的應(yīng)用研究……”也有開(kāi)發(fā)者表示:“說(shuō)發(fā)現(xiàn)了新算法是不是有點(diǎn)誤導(dǎo)人?似乎更像是算法優(yōu)化。無(wú)論如何這仍然很酷?!?/p>

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4805

    瀏覽量

    98553
  • 編程語(yǔ)言
    +關(guān)注

    關(guān)注

    10

    文章

    1965

    瀏覽量

    39868
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2129

    瀏覽量

    77372
  • 強(qiáng)化學(xué)習(xí)

    關(guān)注

    4

    文章

    273

    瀏覽量

    11997

原文標(biāo)題:AI幫助人類(lèi)打破十年算法瓶頸:谷歌 DeepMind 發(fā)現(xiàn)更快排序算法,已集成到C++庫(kù)

文章出處:【微信號(hào):AI前線(xiàn),微信公眾號(hào):AI前線(xiàn)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    手搓C++離散小波變換DWT程序

    關(guān)于小波變換,我們當(dāng)然可以選擇速度更快地方式來(lái)使用它。和python相比,C++編譯后的代碼在對(duì)同一組參數(shù)配置并且處理同一組數(shù)據(jù),在沒(méi)有優(yōu)化的情況下,處理速度可以快達(dá)10倍上,均不包括把結(jié)果寫(xiě)入csv文件步驟的時(shí)間。下圖中的19.9s是指被處理的數(shù)據(jù)時(shí)長(zhǎng)。
    的頭像 發(fā)表于 04-22 14:15 ?64次閱讀
    手搓<b class='flag-5'>C++</b>離散小波變換DWT程序

    C++音視頻實(shí)戰(zhàn)-FFmpeg基礎(chǔ)工程-多路H265監(jiān)控錄放開(kāi)發(fā)

    pan.baidu.com/s/1g64x9D_jp9ufk4uBpQBmvA?pwd=497f? 未來(lái)安防底層核心:C++ 音視頻實(shí)戰(zhàn),從 FFmpeg 多路 H265 監(jiān)控開(kāi)發(fā) 站在2026年
    的頭像 發(fā)表于 04-20 15:49 ?525次閱讀

    C++:const 的空間,常量也能占內(nèi)存?

    5g.5jh.dg8sg.cnJIWWQc++語(yǔ)言 c++語(yǔ)言5g.Zq2.dg8sg.cnJIWWQc++語(yǔ)言 def lock_tetromino(self): \"\"\"將落地的方塊鎖定網(wǎng)格中
    發(fā)表于 04-16 19:19

    keil實(shí)現(xiàn)cc++混合編程

    起因項(xiàng)目中使用到一個(gè)開(kāi)源的模擬IIC的庫(kù),封裝的比較好,但是是使用c++寫(xiě)的。于是將其移植自己的項(xiàng)目中,主要有以下三步操作: 在工程選項(xiàng)中 C/
    發(fā)表于 01-26 08:58

    C語(yǔ)言插入排序算法和代碼

    插入排序排序算法的一種,它不改變?cè)械男蛄?數(shù)組),而是創(chuàng)建一個(gè)新的序列,在新序列上進(jìn)行操作。   這里以從小到大排序為例進(jìn)行講解。   基本思想及舉例說(shuō)明   插入
    發(fā)表于 01-15 06:44

    C語(yǔ)言增量式PID的通用算法

    C語(yǔ)言增量式PID通用算法控制算法中PID使用的非常廣泛,但是在網(wǎng)上找代碼的時(shí)候發(fā)現(xiàn)好多代碼都不夠通用,需要自己改好多東西,而且當(dāng)一個(gè)項(xiàng)目需要使用多個(gè)PID控制器時(shí)也頗為麻煩,這里設(shè)計(jì)
    發(fā)表于 01-14 08:28

    C語(yǔ)言與C++的區(qū)別及聯(lián)系

    C語(yǔ)言和C++到底是什么關(guān)系? 首先C++C語(yǔ)言本來(lái)就是兩種不同的編程語(yǔ)言,但C++確實(shí)是對(duì)C
    發(fā)表于 12-24 07:23

    CC++之間的聯(lián)系

    1、語(yǔ)法兼容性: C++完全兼容C語(yǔ)言的語(yǔ)法,這意味著任何有效的C語(yǔ)言程序都可以直接在C++編譯器下編譯通過(guò)。 2、底層控制: C++
    發(fā)表于 12-11 06:51

    C語(yǔ)言和C++之間的區(qū)別是什么

    C++的標(biāo)準(zhǔn)庫(kù)那樣集成度高和功能齊全。 6、編譯器與語(yǔ)言特性: C++編譯器通常比C語(yǔ)言編譯器更加復(fù)雜,因?yàn)樗枰幚砀嗟恼Z(yǔ)言特性,
    發(fā)表于 12-11 06:23

    C++程序異常的處理機(jī)制

    的健壯不僅僅有算法上的優(yōu)越性,還存在程序?qū)Ω鞣N異常情況的識(shí)別和處理能力,如果對(duì)這些異常沒(méi)有得到較好的處理,就非常容易引起程序的奔潰。 那么C++設(shè)計(jì)了一套異常處理機(jī)制,一方面能夠使得異常處理和正常
    發(fā)表于 12-02 07:12

    C語(yǔ)言的常見(jiàn)算法

    # C語(yǔ)言常見(jiàn)算法 C語(yǔ)言中常用的算法可以分為以下幾大類(lèi): ## 1. 排序算法 ###
    發(fā)表于 11-24 08:29

    技能+1!如何在樹(shù)莓派上使用C++控制GPIO?

    在使用樹(shù)莓派時(shí),你會(huì)發(fā)現(xiàn)Python和Scratch是許多任務(wù)(包括GPIO編程)中最常用的編程語(yǔ)言。但你知道嗎,你也可以使用C++進(jìn)行GPIO編程,而且這樣做還有不少好處。借助WiringPi
    的頭像 發(fā)表于 08-06 15:33 ?4501次閱讀
    技能+1!如何在樹(shù)莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    C++ 與 Python:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    Python是樹(shù)莓派上的首選編程語(yǔ)言,我們的大部分教程都使用它。然而,C++在物聯(lián)網(wǎng)項(xiàng)目中同樣廣受歡迎且功能強(qiáng)大。那么,在樹(shù)莓派項(xiàng)目中選擇哪種語(yǔ)言更合適呢?Python因其簡(jiǎn)潔性、豐富的庫(kù)和資源而被
    的頭像 發(fā)表于 07-24 15:32 ?1108次閱讀
    <b class='flag-5'>C++</b> 與 Python:樹(shù)莓派上哪種語(yǔ)言更優(yōu)?

    Perforce QAC產(chǎn)品簡(jiǎn)介:面向C/C++的靜態(tài)代碼分析工具(通過(guò)SO 26262認(rèn)證)

    Perforce QAC專(zhuān)為C/C++開(kāi)發(fā)者打造,支持多種編碼規(guī)范、功能安全標(biāo)準(zhǔn)(ISO 26262)等,廣泛用于汽車(chē)、醫(yī)療、嵌入式開(kāi)發(fā)領(lǐng)域,可幫助快速識(shí)別關(guān)鍵缺陷、提升代碼質(zhì)量、實(shí)現(xiàn)合規(guī)交付。
    的頭像 發(fā)表于 07-10 15:57 ?1461次閱讀
    Perforce QAC產(chǎn)品簡(jiǎn)介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的靜態(tài)代碼分析工具(<b class='flag-5'>已</b>通過(guò)SO 26262認(rèn)證)

    AlphaEvolve有望革新AI玩具芯片設(shè)計(jì),算法進(jìn)化驅(qū)動(dòng)能效與成本雙突破

    電子發(fā)燒友網(wǎng)綜合報(bào)道,近期,谷歌?DeepMind發(fā)布了一款A(yù)lphaEvolve,是一款通用科學(xué)AI代理,基于大語(yǔ)言模型Gemini系列與進(jìn)化計(jì)算框架,專(zhuān)注于算法發(fā)現(xiàn)與優(yōu)化??梢灾С?/div>
    的頭像 發(fā)表于 06-18 00:09 ?3971次閱讀
    福贡县| 凭祥市| 麻阳| 耒阳市| 黔西县| 陵水| 抚顺市| 南康市| 沅江市| 洛扎县| 镇巴县| 青河县| 普定县| 长葛市| 北票市| 乌鲁木齐县| 海盐县| 房产| 贵州省| 广水市| 阿拉善盟| 民丰县| 邹城市| 马鞍山市| 保德县| 红河县| 万年县| 读书| 县级市| 庄河市| 盐边县| 北安市| 黔江区| 乌兰浩特市| 高碑店市| 山阳县| 平阳县| 美姑县| 晋城| 郸城县| 腾冲县|