亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 解剖大象的眼睛——中國象棋程序設計探索(六):并行搜索技術探索.htm

?? 象棋程序設計全資料集(介紹編寫象棋程序的方法思路)
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0056)http://www.elephantbase.net/computer/eleeye_parallel.htm -->
<HTML><HEAD><TITLE>解剖大象的眼睛——中國象棋程序設計探索(六):并行搜索技術探索</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb_2312-80">
<META content="MSHTML 6.00.3790.536" name=GENERATOR></HEAD>
<BODY background=解剖大象的眼睛——中國象棋程序設計探索(六):并行搜索技術探索_files/background.gif>
<DL>
  <DIV align=center>
  <CENTER>
  <DT><FONT face=隸書 size=6>解剖大象的眼睛</FONT><FONT 
  size=6><STRONG>——</STRONG></FONT><FONT face=隸書 size=6>中國象棋程序設計探索</FONT> 
  </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT>  </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT>黃晨 <FONT face="Times New Roman">*</FONT> <FONT 
  face="Times New Roman">2005</FONT>年<FONT 
  face="Times New Roman">6</FONT>月初稿,<FONT 
  face="Times New Roman">2005</FONT>年<FONT face="Times New Roman">11</FONT>月修訂 
  </CENTER></DT></DIV>
  <DIV align=center>
  <CENTER>
  <DT><FONT face="Times New Roman">( * </FONT>聯系地址:復旦大學化學系表面化學實驗室,<FONT 
  face="Times New Roman">eMail</FONT>:<A 
  href="mailto:webmaster@elephantbase.net"><FONT 
  face="Times New Roman">webmaster@elephantbase.net</FONT></A><FONT 
  face="Times New Roman">)</FONT> </CENTER></DT></DIV>
  <DT>  
  <DT><FONT face=Arial size=5><STRONG>(</STRONG></FONT><FONT face=楷體_GB2312 
  size=5><STRONG>六</STRONG></FONT><FONT face=Arial size=5><STRONG>) 
  </STRONG></FONT><FONT face=楷體_GB2312 size=5><STRONG>并行搜索技術探索</STRONG></FONT> 
  <DT>  </DT></DL>
<DL>
  <DT>  在閱讀本章前,建議讀者先閱讀《<A href="http://www.elephantbase.net/" 
  target=_blank>象棋百科全書</A>》網站中《<A 
  href="http://www.elephantbase.net/computer/outline.htm" 
  target=_blank>對弈程序基本技術</A>》專題的以下幾篇譯文: 
  <DT>  <FONT face="Times New Roman">(1) </FONT><A 
  href="http://www.elephantbase.net/computer/advanced_aspiration.htm" 
  target=_blank>高級搜索方法——期望窗口</A><FONT face="Times New Roman">(Bruce 
  Moreland)</FONT>; 
  <DT>  <FONT face="Times New Roman">(2) </FONT><A 
  href="http://www.elephantbase.net/computer/advanced_pvs.htm" 
  target=_blank>高級搜索方法——主要變例搜索</A><FONT face="Times New Roman">(Bruce 
  Moreland)</FONT>。 </DT></DL>
<DL>
  <DT>  并行搜索是博弈搜索技術中最復雜的組成部分,這就是<FONT 
  face="Times New Roman">ElephantEye</FONT>沒有采用并行技術的原因。盡管如此,筆者還是在這里簡單地談一下對并行搜索的認識。 

  <DT>  
  <DT><FONT face=Arial size=4><STRONG>6.1 </STRONG></FONT><FONT face=楷體_GB2312 
  size=4><STRONG>并行計算的基本操作</STRONG></FONT> 
  <DT>  
  <DT>  并行計算有兩種體系,一是單機體系,即一個程序在單機的多個處理器上運行,簡稱<FONT 
  face="Times New Roman">SMP(</FONT>對稱多處理器<FONT 
  face="Times New Roman">)</FONT>,二是分布式體系,即一個程序在多個計算機聯成的網絡上運行,簡稱<FONT 
  face="Times New Roman">Cluster(</FONT>計算機集群<FONT 
  face="Times New Roman">)</FONT>。兩者最大的區別是,單機體系的多個處理器可以共享存儲器<FONT 
  face="Times New Roman">(</FONT>并且共享同一地址的存儲單元<FONT 
  face="Times New Roman">)</FONT>,而分布式體系則必須通過網絡來交換信息<FONT 
  face="Times New Roman">(</FONT>盡管傳輸速度非常高,通常在<FONT 
  face="Times New Roman">1000MBPS</FONT>以上<FONT face="Times New Roman">)</FONT>。 

  <DT>  由于博弈搜索需要用到置換表,所以特別適合以<FONT 
  face="Times New Roman">SMP</FONT>的方式作并行計算。<FONT 
  face="Times New Roman">Windows</FONT>、<FONT 
  face="Times New Roman">UNIX</FONT>等多任務操作系統都有線程<FONT 
  face="Times New Roman">(Thread)</FONT>這個概念,線程是處理器任務的最小單位,一個線程是不可能同時在兩個處理器上運行的,建立線程后,操作系統就會自動把新建的線程分配到空閑的處理器上。<FONT 
  face="Times New Roman">Windows</FONT>下建立線程的方法是: 
  <DD>  
  <DD>#include &lt;windows.h&gt; 
  <DD>…… 
  <DD>DWORD ThreadId; 
  <DD>CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadEntry, (LPVOID) 
  &amp;ArgList, 0, &amp;ThreadId); 
  <DT>  
  <DT>  <FONT face="Times New Roman">UNIX</FONT>下建立線程的方式是: 
  <DD>  
  <DD>#include &lt;pthread.h&gt; 
  <DD>…… 
  <DD>pthread_t pthread; 
  <DD>pthread_attr_t pthread_attr; 
  <DD>pthread_attr_init(&amp;pthread_attr); 
  <DD>pthread_attr_setscope(&amp;pthread_attr, PTHREAD_SCOPE_SYSTEM); 
  <DD>pthread_create(&amp;pthread, &amp;pthread_attr, (void *(*)(void *)) 
  ThreadEntry, (void *) &amp;ArgList); 
  <DT>  
  <DT>  這里<FONT face="Times New Roman">ThreadEntry</FONT>僅僅是某個線程的入口,以便整理參數<FONT 
  face="Times New Roman">ArgList</FONT>并且在線程中調用其他函數。例如,一個用遞歸函數來計算斐波那契數列的并行程序<FONT 
  face="Times New Roman">(Windows</FONT>版本<FONT face="Times New Roman">)</FONT>: 

  <DD>  
  <DD>static volatile int IdleThreads; 
  <DD>  
  <DD>struct ArgListStruct { 
  <DD> volatile bool Active; 
  <DD> volatile int Value; 
  <DD>}; 
  <DD>  
  <DD>static void *ThreadEntry(ArgListStruct *ArgListPtr); 
  <DD>  
  <DD>static int Fibonacci(int Arg) { 
  <DD> if (Arg &lt; 2) { 
  <DD>  return 1; 
  <DD> } else { 
  <DD>  return Fibonacci(Arg - 2) + Fibonacci(Arg - 1); 
  <DD> } 
  <DD>} 
  <DD>  
  <DD>static int FibonacciSMP(int Arg) { 
  <DD> DWORD ThreadId; 
  <DD> int Result; 
  <DD> ArgListStruct ArgList; 
  <DD> if (Arg &lt; 2) { 
  <DD>  return 1; 
  <DD> } else { 
  <DD>  if (Arg &gt; 30) { 
  <DD>   if (Decrement(&amp;IdleThreads) &lt; 0) { 
  <DD>    Increment(&amp;IdleThreads); 
  <DD>    return FibonacciSMP(Arg - 2) + FibonacciSMP(Arg - 1); 
  <DD>   } else { 
  <DD>    ArgList.Value = Arg - 2; 
  <DD>    ArgList.Active = true; 
  <DD>    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) ThreadEntry, (LPVOID) 
  &amp;ArgList, 0, &amp;ThreadId); 
  <DD>    Result = FibonacciSMP(Arg - 1); 
  <DD>    while (ArgList.Active) { 
  <DD>     Idle(); 
  <DD>    } 
  <DD>    return Result + ArgList.Value; 
  <DD>   } 
  <DD>  } else { 
  <DD>   return Fibonacci(Arg - 2) + Fibonacci(Arg - 1); 
  <DD>  } 
  <DD> } 
  <DD>} 
  <DD>  
  <DD>static void *ThreadEntry(ArgListStruct *ArgListPtr) { 
  <DD> ArgListPtr-&gt;Value = FibonacciSMP(ArgListPtr-&gt;Value); 
  <DD> ArgListPtr-&gt;Active = false; 
  <DD> Increment(&amp;IdleThreads); 
  <DD> return NULL; 
  <DD>} 
  <DT>  
  <DT>  由于<FONT 
  face="Times New Roman">Fibonacci()</FONT>函數的遞歸形式如同二叉樹一樣擴展開來,所以當處理器有空閑時,就可以把其中一個分枝交給另一個線程,這個操作稱為遞歸樹的分割<FONT 
  face="Times New Roman">(Split)</FONT>。為此程序需要維護變量<FONT 
  face="Times New Roman">IdleThreads</FONT>來判斷是否還有空閑的處理器,對該變量的操作必須用<FONT 
  face="Times New Roman">Increment()</FONT>和<FONT 
  face="Times New Roman">Decrement()</FONT>函數<FONT 
  face="Times New Roman">(</FONT>即<FONT 
  face="Times New Roman">Intel</FONT>處理器的<FONT 
  face="Times New Roman">INC</FONT>和<FONT 
  face="Times New Roman">DEC</FONT>原子指令,參閱<FONT 
  face="Times New Roman">&lt;x86asm.h&gt;)</FONT>,以保證不會因為有兩個線程同時對該變量操作而發生錯誤,這樣的共享變量都應該標記為<FONT 
  face="Times New Roman">volatile</FONT>屬性,以避免編譯器對這些變量作優化。 
  <DT>  由于線程的維護需要消耗額外的處理器資源,所以并非每個遞歸結點要作分割的嘗試,以上這段程序的核心問題盡管是<FONT 
  face="Times New Roman">FibonacciSMP()</FONT>的遞歸,但當遞歸樹不太大<FONT 
  face="Times New Roman">(</FONT>參數不超過<FONT 
  face="Times New Roman">30)</FONT>時,調用單純的遞歸函數<FONT 
  face="Times New Roman">Fibonacci()</FONT>會得到更高的效率。 
  <DT>  
  <DT><FONT face=Arial size=4><STRONG>6.2 </STRONG></FONT><FONT face=楷體_GB2312 
  size=4><STRONG>加鎖技術和非加鎖技術</STRONG></FONT> 
  <DT>  
  <DT>  如果兩個線程同時存取同一存儲單元,就有可能產生錯誤,為此必須建立預防錯誤的機制,通常的措施是加鎖<FONT 
  face="Times New Roman">(Lock)</FONT>。一個比較簡單的加鎖方法是調用函數<FONT 
  face="Times New Roman">Exchange()(</FONT>即<FONT 
  face="Times New Roman">Intel</FONT>處理器的<FONT 
  face="Times New Roman">XCHG</FONT>原子指令,參閱<FONT 
  face="Times New Roman">&lt;x86asm.h&gt;)</FONT>,因為兩個線程的原子語句是不可能同時存取同一存儲單元的<FONT 
  face="Times New Roman">(</FONT>正因為如此,處理器對存儲單元作<FONT 
  face="Times New Roman">INC</FONT>、<FONT 
  face="Times New Roman">DEC</FONT>、<FONT 
  face="Times New Roman">XCHG</FONT>等操作就需要考慮沖突,所以比較耗時<FONT 
  face="Times New Roman">)</FONT>。在某塊共享的存儲單元中,第一個變量就是加鎖標志,<FONT 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩专区欧美专区| 热久久一区二区| 日产国产欧美视频一区精品| 国产精品1024| 欧美在线影院一区二区| 国产无一区二区| 亚洲成人7777| 欧美日韩dvd在线观看| 中文字幕免费观看一区| 美女视频黄a大片欧美| 欧美亚洲尤物久久| 国产精品久久久久9999吃药| 久久精品二区亚洲w码| 欧美艳星brazzers| 中文字幕日韩一区| 成人美女视频在线看| 欧美一级在线免费| 亚洲第一搞黄网站| 色一情一乱一乱一91av| 国产精品剧情在线亚洲| 国产乱人伦精品一区二区在线观看 | 午夜电影久久久| 不卡视频一二三| 国产亚洲欧美日韩俺去了| 日本不卡123| 制服丝袜成人动漫| 午夜日韩在线电影| 欧美在线播放高清精品| 亚洲综合色网站| 色综合久久综合网| 亚洲欧美日韩在线| 91日韩一区二区三区| 国产精品久久夜| 高清在线不卡av| 欧美激情一区二区三区蜜桃视频| 狠狠狠色丁香婷婷综合久久五月| 91精品在线观看入口| 日韩高清不卡一区| 日韩欧美高清一区| 麻豆精品在线视频| 亚洲免费成人av| 欧美亚洲禁片免费| 亚洲国产中文字幕在线视频综合| 欧美午夜精品久久久久久超碰| 一区二区三区在线免费| 欧美亚日韩国产aⅴ精品中极品| 一区二区三区精品在线观看| 欧美日韩美女一区二区| 日韩精品乱码免费| 欧美本精品男人aⅴ天堂| 国产一区二区在线视频| 欧美高清在线一区| 91在线视频在线| 亚洲地区一二三色| 日韩欧美色综合| 国产精品综合二区| 亚洲人成在线观看一区二区| 欧美日韩黄色一区二区| 奇米888四色在线精品| 久久日韩精品一区二区五区| 国产成人h网站| 亚洲精品视频在线观看免费| 欧美顶级少妇做爰| 国产精品一区2区| 亚洲欧美aⅴ...| 日韩一区二区三区免费看| 国产精品1区2区| 夜夜嗨av一区二区三区网页| 欧美成人激情免费网| 99久久久免费精品国产一区二区| 亚洲国产日韩av| 久久午夜免费电影| 91久久精品一区二区| 精品一区二区三区在线观看国产| 欧美国产一区在线| 4438成人网| 99免费精品视频| 蜜桃视频在线一区| 亚洲欧美国产毛片在线| 日韩欧美一区二区久久婷婷| 色综合天天综合给合国产| 东方欧美亚洲色图在线| 亚洲图片欧美一区| 国产精品亲子乱子伦xxxx裸| 欧美一区二区三区四区久久| 99久久久久免费精品国产| 另类小说综合欧美亚洲| 亚洲曰韩产成在线| 国产精品久久久久一区二区三区| 666欧美在线视频| 色乱码一区二区三区88| 国产高清在线精品| 日韩中文欧美在线| 一二三区精品福利视频| 国产精品毛片高清在线完整版 | 三级影片在线观看欧美日韩一区二区| 欧美精品一区二| 91精品国产综合久久香蕉麻豆| 9i在线看片成人免费| 国产综合色视频| 久久99热国产| 美女视频一区在线观看| 日韩va欧美va亚洲va久久| 一区二区三区四区中文字幕| 国产精品入口麻豆九色| 国产人成一区二区三区影院| 精品国产一区久久| 日韩亚洲欧美在线观看| 4438x亚洲最大成人网| 欧美三级三级三级爽爽爽| 91免费视频网址| 欧美日本视频在线| 全部av―极品视觉盛宴亚洲| 亚洲一区欧美一区| 亚洲精品va在线观看| 亚洲天堂中文字幕| 综合婷婷亚洲小说| 免费的国产精品| 麻豆精品精品国产自在97香蕉| 天天操天天综合网| 蜜臀av一级做a爰片久久| 石原莉奈在线亚洲三区| 日韩国产欧美视频| 精品一区二区三区视频在线观看| 免费不卡在线视频| 加勒比av一区二区| 国产成人8x视频一区二区| 国产69精品久久777的优势| 国产+成+人+亚洲欧洲自线| 成人午夜电影网站| 一本色道久久加勒比精品| 欧美这里有精品| 日韩一级免费一区| 久久日一线二线三线suv| 国产精品久久久久影视| 亚洲一区日韩精品中文字幕| 日韩精品乱码免费| 亚洲丰满少妇videoshd| 94色蜜桃网一区二区三区| 91视频精品在这里| 欧美三级蜜桃2在线观看| 欧美精三区欧美精三区| 91精品国产乱| 欧美激情一区二区三区蜜桃视频| 亚洲日本在线天堂| 日韩精品乱码av一区二区| 国产精品一区二区免费不卡| 91蜜桃在线观看| 欧美一级夜夜爽| 国产精品视频一二三区| 亚洲国产日韩精品| 国产在线不卡一区| 欧美在线一区二区| 久久久久国产精品人| 亚洲精品国产精华液| 久久国产免费看| 一本色道久久综合狠狠躁的推荐| 4438成人网| 成人免费一区二区三区在线观看| 日韩高清国产一区在线| av网站免费线看精品| 欧美人与禽zozo性伦| 国产精品私人影院| 五月天欧美精品| av日韩在线网站| 91精品麻豆日日躁夜夜躁| 国产精品电影院| 久久成人av少妇免费| 色婷婷亚洲婷婷| 久久久国产精品不卡| 五月婷婷激情综合网| 成人av先锋影音| 精品久久国产老人久久综合| 亚洲一区免费观看| 成人免费看视频| 欧美大白屁股肥臀xxxxxx| 亚洲精品国产无套在线观| 国产成人精品aa毛片| 日韩一级片在线观看| 亚洲激情第一区| 国产成人免费视频一区| 日韩一区国产二区欧美三区| 亚洲国产精品久久久久秋霞影院| 高清久久久久久| 精品88久久久久88久久久| 天天色综合成人网| 欧美色综合影院| 亚洲手机成人高清视频| 国产激情精品久久久第一区二区 | 69久久99精品久久久久婷婷| 亚洲欧美国产三级| 丁香婷婷综合五月| 国产三级精品视频| 国产在线一区二区综合免费视频| 欧美日韩一区中文字幕| 一区二区三区中文字幕精品精品| www.综合网.com| 日韩一区在线播放| 成人高清视频在线| 国产精品网站导航|