亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
东方欧美亚洲色图在线| 午夜欧美2019年伦理| 日韩欧美亚洲国产精品字幕久久久 | 在线欧美小视频| 成人国产电影网| aaa欧美色吧激情视频| 国产成人午夜精品影院观看视频| 韩国三级电影一区二区| 美日韩一区二区| 国产一区二区三区在线看麻豆| 男男视频亚洲欧美| 精品一区二区三区不卡| 激情综合色播激情啊| 国产精品主播直播| caoporn国产一区二区| 色婷婷精品久久二区二区蜜臀av| 色综合久久中文综合久久牛| 色呦呦网站一区| 欧美另类一区二区三区| 精品国产免费视频| 国产欧美精品一区二区色综合朱莉| 国产亚洲午夜高清国产拍精品 | caoporm超碰国产精品| va亚洲va日韩不卡在线观看| 色综合天天综合网国产成人综合天 | 精品无码三级在线观看视频| 韩国欧美国产一区| 91免费观看国产| 日韩一区二区视频| 国产日本欧洲亚洲| 亚洲一二三四在线| 久久99国内精品| 99精品视频在线观看| 欧美色大人视频| 久久精品一区二区| 一区二区三区欧美在线观看| 久久av资源站| 一本色道久久综合精品竹菊| 欧美大片在线观看| 亚洲天堂久久久久久久| 蜜桃精品在线观看| 色天使久久综合网天天| 精品欧美乱码久久久久久1区2区| 中文字幕制服丝袜成人av| 丝袜亚洲另类欧美| proumb性欧美在线观看| 日韩一区二区在线观看视频| 欧美韩日一区二区三区四区| 亚洲色欲色欲www| 国产精品中文字幕日韩精品 | 国产一区二区三区四| 在线精品视频免费观看| 久久久久久久久久久黄色| 亚洲成人av免费| 91视频在线观看免费| 精品乱码亚洲一区二区不卡| 亚洲高清免费视频| 不卡一区在线观看| 欧美精品一区二区在线播放 | 国产麻豆精品在线| 91精品久久久久久久91蜜桃| 亚洲色大成网站www久久九九| 国精品**一区二区三区在线蜜桃| 欧美日韩免费一区二区三区| 亚洲色图色小说| 成人蜜臀av电影| 国产亚洲精品精华液| 另类调教123区| 91精品国产福利| 水野朝阳av一区二区三区| 99re这里只有精品6| 中文字幕+乱码+中文字幕一区| 久久99精品久久久久久久久久久久 | 色天使久久综合网天天| 成人免费在线观看入口| 成人免费看片app下载| 久久久久久久久久久久久久久99 | 制服丝袜日韩国产| 亚洲不卡在线观看| 欧美精品第1页| 日韩av电影免费观看高清完整版 | xf在线a精品一区二区视频网站| 婷婷丁香久久五月婷婷| 这里只有精品视频在线观看| 日韩精品成人一区二区三区 | 久久综合999| 国产成人欧美日韩在线电影| 国产日产精品1区| av男人天堂一区| 一区二区三区av电影| 欧美丝袜丝交足nylons图片| 午夜在线成人av| 91精品在线观看入口| 日韩国产在线观看| 欧美精品一区二区蜜臀亚洲| 国产精品一级黄| 亚洲欧美日韩综合aⅴ视频| 91麻豆高清视频| 午夜电影一区二区三区| 欧美成人官网二区| 成人听书哪个软件好| 亚洲精品国产第一综合99久久 | 国产综合久久久久影院| 一色屋精品亚洲香蕉网站| 在线精品视频一区二区三四| 奇米精品一区二区三区在线观看 | 顶级嫩模精品视频在线看| 国产精品理论在线观看| 色菇凉天天综合网| 麻豆精品国产传媒mv男同| 欧美国产一区在线| 欧美在线观看视频在线| 久久99国产精品久久| 日韩一区日韩二区| 日韩欧美一区二区久久婷婷| 成人app网站| 日韩vs国产vs欧美| 亚洲欧美另类久久久精品| 日韩欧美在线网站| 色天天综合久久久久综合片| 激情小说亚洲一区| 亚洲午夜免费电影| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩一区中文字幕| 国模冰冰炮一区二区| 亚洲aaa精品| 国产精品精品国产色婷婷| 日韩一区二区三区在线观看| 91亚洲永久精品| 精品一区精品二区高清| 亚洲国产精品尤物yw在线观看| 国产日产欧美一区二区视频| 欧美一区二区黄| 欧美亚洲一区二区三区四区| 成人av动漫在线| 国产一区二区三区免费播放 | 欧美成人综合网站| 欧美色成人综合| 日本久久一区二区| 成人中文字幕在线| 国产激情91久久精品导航| 美女视频第一区二区三区免费观看网站| 中文字幕五月欧美| 国产精品久久久久久久久久免费看| 日韩欧美国产综合一区| 69av一区二区三区| 91国产福利在线| 色偷偷久久人人79超碰人人澡| 国产高清亚洲一区| 国产一区二区成人久久免费影院 | 26uuu成人网一区二区三区| 欧美一级精品在线| 7777精品伊人久久久大香线蕉的| 在线亚洲一区观看| 欧美性猛交一区二区三区精品| 成人app在线观看| 99麻豆久久久国产精品免费优播| 国产精品影视天天线| 国产一区福利在线| 国产福利一区二区三区视频| 国产高清久久久| 成人av电影在线观看| 91香蕉视频黄| 欧美日韩小视频| 欧美日韩国产在线观看| 精品视频在线免费观看| 欧美日韩一级黄| 日韩午夜在线播放| 亚洲精品一区二区三区蜜桃下载 | 奇米影视在线99精品| 理论电影国产精品| 国内精品伊人久久久久av一坑| 精品一区二区在线看| 粉嫩av一区二区三区粉嫩| 成人avav影音| 欧美丰满嫩嫩电影| 久久―日本道色综合久久| 国产精品网曝门| 亚洲韩国精品一区| 玖玖九九国产精品| 成人h精品动漫一区二区三区| 欧美伊人久久大香线蕉综合69| 日韩女优av电影| 国产精品热久久久久夜色精品三区| 亚洲女女做受ⅹxx高潮| 奇米综合一区二区三区精品视频| 国产精品99久久久久久久女警| 91小视频免费看| 欧美不卡一二三| 国产精品电影院| 欧美a级理论片| 91麻豆精品在线观看| 欧美大尺度电影在线| 亚洲色图视频网站| 国产一区欧美二区| 欧美狂野另类xxxxoooo| 日本一区二区三区免费乱视频| 亚洲成人激情自拍| 白白色 亚洲乱淫| 日韩欧美视频一区|