<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Remixman</title>
	<atom:link href="http://remixman.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://remixman.wordpress.com</link>
	<description>Just another Remixman weblog</description>
	<lastBuildDate>Sun, 15 Jan 2012 15:31:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='remixman.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Remixman</title>
		<link>http://remixman.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://remixman.wordpress.com/osd.xml" title="Remixman" />
	<atom:link rel='hub' href='http://remixman.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Assignment 5 (CS427) &#8211; Game of Life</title>
		<link>http://remixman.wordpress.com/2010/04/06/assignment-5-cs427-game-of-life/</link>
		<comments>http://remixman.wordpress.com/2010/04/06/assignment-5-cs427-game-of-life/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 15:10:55 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[Game of Life]]></category>
		<category><![CDATA[MPI]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=198</guid>
		<description><![CDATA[ข้อกำหนดของโปรแกรม จำนวนโปรเซสทั้งหมดจะต้องมีจำนวนเท่ากับ (N/K)^2 + 1 ค่าของความกว้างของบอร์ด(N) และขนาดของTile(K) จะต้องมีค่าอย่างน้อย 1 และ ค่าของ N จะต้องหารด้วย k ลงตัวเสมอ ค่าการสุ่มความน่าจะเป็นในการมีชีวิตของแต่ละเซลจะต้องมีค่าอยู่ระหว่าง [0, 100] เท่านั้น การคอมไพล์โปรแกรมและการใช้งาน คอมไพล์โปรแกรมด้วยคำสั่ง mpicc -o Game_of_Life Game_of_Life.c จะได้ไฟล์โปรแกรมชื่อ Game_of_Life รันโปรแกรมด้วยคำสั่ง mpirun –np processnum Game_of_Life โดยจะต้องกำหนดจำนวนโปรเซสให้ถูกต้องตามข้อกำหนด โปรแกรมจะถามถึงค่าของ ความกว้างของบอร์ด(N) ขนาดของTile(K) จำนวนหน่วยเวลา(t) ต้องการอ่านค่าเริ่มต้นจากไฟล์หรือสุ่มจากโปรแกรม ถ้าเลือกอ่านค่าจากไฟล์จะต้องกำหนดชื่อไฟล์ด้วย หากเลือกสุ่มจากโปรแกรมจะต้องกำหนดค่าความน่าจะเป็นในการที่แต่ละช่องจะมีชีวิตด้วย และ ต้องการเซฟไฟล์ Immediate หรือไม่  ซึ่งจะต้องกรอกให้สอดคล้องกับจำนวนโปรเซสที่กำหนดไว้ หากข้อมูลที่กรอกไม่สอดคล้องหรือไม่ถูกต้องได้แก่ ค่า N หรือ k ไม่ใช่เลขจำนวนเต็มบวก N หาร k ได้ไม่ลงตัว [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=198&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><span style="text-decoration:underline;"><strong>ข้อกำหนดของโปรแกรม</strong></span></p>
<ol>
<li>จำนวนโปรเซสทั้งหมดจะต้องมีจำนวนเท่ากับ (N/K)^2 + 1</li>
<li>ค่าของความกว้างของบอร์ด(N) และขนาดของTile(K) จะต้องมีค่าอย่างน้อย 1 และ ค่าของ N จะต้องหารด้วย k ลงตัวเสมอ</li>
<li>ค่าการสุ่มความน่าจะเป็นในการมีชีวิตของแต่ละเซลจะต้องมีค่าอยู่ระหว่าง [0, 100] เท่านั้น</li>
</ol>
<p><span style="text-decoration:underline;"><strong>การคอมไพล์โปรแกรมและการใช้งาน</strong></span></p>
<ol>
<li>คอมไพล์โปรแกรมด้วยคำสั่ง mpicc -o Game_of_Life Game_of_Life.c จะได้ไฟล์โปรแกรมชื่อ Game_of_Life</li>
<li>รันโปรแกรมด้วยคำสั่ง mpirun –np processnum Game_of_Life โดยจะต้องกำหนดจำนวนโปรเซสให้ถูกต้องตามข้อกำหนด</li>
<li>โปรแกรมจะถามถึงค่าของ ความกว้างของบอร์ด(N) ขนาดของTile(K) จำนวนหน่วยเวลา(t) ต้องการอ่านค่าเริ่มต้นจากไฟล์หรือสุ่มจากโปรแกรม ถ้าเลือกอ่านค่าจากไฟล์จะต้องกำหนดชื่อไฟล์ด้วย หากเลือกสุ่มจากโปรแกรมจะต้องกำหนดค่าความน่าจะเป็นในการที่แต่ละช่องจะมีชีวิตด้วย และ ต้องการเซฟไฟล์ Immediate หรือไม่  ซึ่งจะต้องกรอกให้สอดคล้องกับจำนวนโปรเซสที่กำหนดไว้ หากข้อมูลที่กรอกไม่สอดคล้องหรือไม่ถูกต้องได้แก่</li>
</ol>
<ul>
<li>ค่า N หรือ k ไม่ใช่เลขจำนวนเต็มบวก</li>
<li>N หาร k ได้ไม่ลงตัว</li>
<li>จำนวนโปรเซสไม่ถูกต้อง</li>
<li>ไม่พบไฟล์ที่ต้องการอ่าน</li>
</ul>
<p>เมื่อพบเงื่อนไขดังกล่าวโปรแกรมจะจบการทันงานโดนทันที ซึ่งจะต้องเริ่มทำการรันโปรแกรมใหม่</p>
<p><span style="text-decoration:underline;"><strong>การออกแบบโปรแกรมและขั้นตอนการทำงาน</strong></span></p>
<p>การทำงานของโปรแกรมจะใช้จำนวนโปรเซสเท่ากับจำนวนของ Tile ทั้งหมดบวกด้วย 1 เนื่องจากจะใช้โปรเซส 0 ในการติดต่อกับผู้ใช้ เขียนข้อมูลลงไฟล์ สุ่มค่าเริ่มต้น และใช้โปรเซสที่เหลือทั้งหมดในการคำนวนค่าของแต่ละ Tile ที่ได้รับมอบหมาย</p>
<p>1. โปรเซส 0 จะจองพื้นที่บอร์ดขนาด N x N เพื่อรับข้อมูลจากไฟล์หรือสุ่มขึ้น ส่วนโปรเซสอื่นทั้งหมดจะทำการจองบอร์ดย่อยขนาด (K + 2) x (K + 2) ซึ่งจะสร้างขอบเพิ่มให้กับแต่ละ Tile ในทุกด้านเพื่อใช้ในการคำนวน โดยบอร์ดย่อยที่สร้างขึ้นจะสร้างขึ้นเป็นจำนวน 2 บอร์ดเพื่อใช้ในการคำนวน จากนั้นส่งค่าของ N, k, t ไปยังทุกโปรเซสด้วยคำสั่ง MPI_Bcast()</p>
<p>2. จากนั้นโปรเซส 0 จะแบ่งบอร์ดเป็น Tile และส่งไปให้แต่ละโปรเซสเรียงตามลำดับจากซ้ายไปทางขวาและขึ้นแถวใหม่จนครบดังภาพที่ 1</p>
<p style="text-align:center;"><a href="http://remixman.files.wordpress.com/2010/04/assign5_03.gif"><img class="aligncenter size-full wp-image-229" title="assign5_03" src="http://remixman.files.wordpress.com/2010/04/assign5_03.gif?w=600" alt=""   /></a>ภาพที่ 1</p>
<p>3. โปรเซสอื่นทั้งหมดจะรับมาเก็บไว้ที่ตรงกลางของบอร์ดย่อยที่มีความยาวมากกว่าขนาดของ Tile อยู่ 2 ดังภาพที่ 2</p>
<p style="text-align:center;"><a href="http://remixman.files.wordpress.com/2010/04/assign5_02.gif"><img class="aligncenter size-full wp-image-227" title="assign5_02" src="http://remixman.files.wordpress.com/2010/04/assign5_02.gif?w=600" alt=""   /></a>ภาพที่ 2</p>
<p>4. ส่งข้อมูลระหว่างแต่ละโปรเซสเพื่อคำนวนเวลาถัดไปของแต่ละ Tile ด้วยการตรวจสอบว่าแต่ละโปรเซสจะต้องส่งค่าไปยังโปรเซสใดบ้าง และรับค่ามาจากโปรเซสที่ส่งค่าไปหาเสมอ</p>
<ul>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบบนและไม่ได้อยู่ขอบซ้าย ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านซ้ายบน ดังลูกศรสีแดงในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข (rank-1)%c != 0 &amp;&amp; (rank-1)/c &gt; 0 โดยจะส่งเฉพาะข้อมูลที่อยู่ในแถวที่สองและหลักที่สองจำนวน 1 ค่าเท่านั้น ดังภาพที่ 4</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบล่างและไม่ได้อยู่ขอบขวา ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านขวาล่าง ดังลูกศรสีเหลืองในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข rank%c != 0 &amp;&amp; (rank-1)/c &lt; c-1 โดยจะส่งเฉพาะข้อมูลที่อยู่ในแถวรองสุดท้ายและหลักรองสุดท้ายจำนวน 1 ค่าเท่านั้น ดังภาพที่ 4</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบบน ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านบน ดังลูกศรสีส้มในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข (rank-1)/c &gt; 0 โดยจะส่งเฉพาะข้อมูลในแถวที่สอง ตั้งแต่หลักที่สองจนถึงหลักรองสุดท้ายรวมทั้งสิ้น k ค่า ดังภาพที่ 5</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบล่าง ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านล่าง ดังลูกศรสีม่วงในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข (rank-1)/c &lt; c-1 โดยจะส่งเฉพาะข้อมูลในแถวรองสุดท้าย ตั้งแต่หลักที่สองจนถึงหลักรองสุดท้ายรวมทั้งสิ้น k ค่า ดังภาพที่ 5</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบบนและไม่ได้อยู่ขอบขวา ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านขวาบน ดังลูกศรสีเขียวในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข (rank-1)/c &gt; 0 &amp;&amp; rank%c !=0 โดยจะส่งเฉพาะข้อมูลที่อยู่ในแถวที่สองและหลักรองสุดท้ายจำนวน 1 ค่าเท่านั้น ดังภาพที่ 6</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบล่างและไม่ได้อยู่ขอบซ้าย ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านซ้ายล่าง ดังลูกศรสีน้ำเงินในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข (rank-1)/c &lt; c-1 &amp;&amp; (rank-1)%c != 0 โดยจะส่งเฉพาะข้อมูลที่อยู่ในแถวรองสุดท้ายและหลักที่สองจำนวน 1 ค่าเท่านั้น ดังภาพที่ 6</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบขวา ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านขวา ดังลูกศรสีฟ้าในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข rank%c !=0 โดยจะส่งเฉพาะข้อมูลในหลักรองสุดท้าย ตั้งแต่แถวที่สองจนถึงแถวรองสุดท้ายรวมทั้งสิ้น k ค่า ดังภาพที่ 7</li>
<li>โปรเซสที่มี Tile ที่ไม่ได้อยู่ขอบซ้าย ให้ส่งและรับข้อมูลจากโปรเซสที่มี Tile อยู่ด้านซ้าย ดังลูกศรสีดำในภาพที่ 3 โดยคำนวนจากโปรเซสที่ตรงกับเงื่อนไข (rank-1)%c != 0 โดยจะส่งเฉพาะข้อมูลในหลักที่สอง ตั้งแต่แถวที่สองจนถึงแถวรองสุดท้ายรวมทั้งสิ้น k ค่า ดังภาพที่ 7</li>
</ul>
<p>หมายเหตุ: rank เป็นหมายเลขของโปรเซส, c เป็นจำนวนเต็มบวกที่ได้มาจาก N/k</p>
<p style="text-align:center;"><a href="http://remixman.files.wordpress.com/2010/04/pic31.gif"><img class="aligncenter size-full wp-image-208" title="pic3" src="http://remixman.files.wordpress.com/2010/04/pic31.gif?w=600" alt=""   /></a>ภาพที่ 3</p>
<table border="0" width="500" align="center">
<tbody>
<tr>
<td><a href="http://remixman.files.wordpress.com/2010/04/01.gif"><img class="aligncenter size-full wp-image-211" title="01" src="http://remixman.files.wordpress.com/2010/04/01.gif?w=600" alt=""   /></a></td>
<td><a href="http://remixman.files.wordpress.com/2010/04/02.gif"><img class="aligncenter size-full wp-image-213" title="02" src="http://remixman.files.wordpress.com/2010/04/02.gif?w=600" alt=""   /></a></td>
</tr>
<tr>
<td style="text-align:center;">ภาพที่ 4</td>
<td style="text-align:center;">ภาพที่ 5</td>
</tr>
<tr>
<td><a href="http://remixman.files.wordpress.com/2010/04/04.gif"><img class="aligncenter size-full wp-image-214" title="04" src="http://remixman.files.wordpress.com/2010/04/04.gif?w=600" alt=""   /></a></td>
<td><a href="http://remixman.files.wordpress.com/2010/04/03.gif"><img class="aligncenter size-full wp-image-215" title="03" src="http://remixman.files.wordpress.com/2010/04/03.gif?w=600" alt=""   /></a></td>
</tr>
<tr>
<td style="text-align:center;">ภาพที่ 6</td>
<td style="text-align:center;">ภาพที่ 7</td>
</tr>
</tbody>
</table>
<p style="text-align:left;">
<p style="text-align:left;"><span style="text-decoration:underline;"><strong>MPI Defined Type ที่ใช้</strong></span></p>
<p style="text-align:left;">MPI_Subboard_type : บอร์ดย่อยที่ได้จากการแบ่งเป็น Tile ของบอร์ดใหญ่เพื่อส่งจากโปรเซส 0 ไปยังโปรเซสอื่น<br />
<em>MPI_Type_vector(K, K, N, MPI_INT, &amp;MPI_Subboard_type);</em></p>
<p style="text-align:left;">MPI_Subboard_type2 : บอร์ดย่อยที่ใช้ในการประมวลผลของแต่ละโปรเซส และรับส่งบอร์ดย่อยกับโปรเซส 0<br />
<em>MPI_Type_vector(K, K, K+2, MPI_INT, &amp;MPI_Subboard_type2);</em></p>
<p style="text-align:left;">MPI_Boardrow_type : แถวของบอร์ดย่อยที่ใช้ในการส่งระหว่าง Tile ที่อยู่ด้านล่างและบน<br />
<em>MPI_Type_contiguous(K, MPI_INT, &amp;MPI_Boardrow_type);</em></p>
<p style="text-align:left;">MPI_Boardcol_type : หลักของบอร์ดย่อยที่ใช้ในการส่งข้อมูลระหว่าง Tile ที่อยู่ด้านซ้ายและขวา<br />
<em>MPI_Type_vector(K, 1, K+2, MPI_INT, &amp;MPI_Boardcol_type);</em></p>
<p style="text-align:left;"><span style="text-decoration:underline;"><strong>ตัวอย่างการใช้งานแบบอ่านค่าจากไฟล์</strong></span></p>
<p style="text-align:left;"><span style="color:#008000;"><em>$</em></span> mpirun –np 5 Game_of_Life<br />
<em><span style="color:#008000;">Enter board size (N):</span></em> 6<br />
<em><span style="color:#008000;">Enter tile size (K):</span></em> 3<br />
<span style="color:#008000;"><em>Enter time step (t):</em></span> 2<br />
<span style="color:#008000;"><em>Do you want to save immediate file (yes/no):</em></span> yes<br />
<em><span style="color:#008000;">Read board from file (yes/no &#8211; if no board is initialize by random):</span></em> yes<br />
<em><span style="color:#008000;">Enter input file name :</span></em> inputboard2.txt</p>
<table width="450" align="center">
<tbody>
<tr>
<td style="text-align:center;" width="150">inputboard2.txt</td>
<td style="text-align:center;" width="150">Board.Immediate</td>
<td style="text-align:center;" width="150">Board.output</td>
</tr>
<tr>
<td valign="top">XX-XX-<br />
&#8212;XXX<br />
&#8212;-XX<br />
X-X-X-<br />
-X-X-X<br />
XXX&#8212;</td>
<td valign="top">t = 0<br />
XX-XX-<br />
&#8212;XXX<br />
&#8212;-XX<br />
X-X-X-<br />
-X-X-X<br />
XXX&#8212;t = 1<br />
&#8211;XX-X<br />
&#8211;X&#8212;<br />
&#8212;&#8212;<br />
-XX&#8212;<br />
&#8212;XX-<br />
XXX&#8212;t = 2<br />
&#8211;XX&#8211;<br />
&#8211;XX&#8211;<br />
-XX&#8212;<br />
&#8211;XX&#8211;<br />
X&#8211;X&#8211;<br />
-XXX&#8211;</td>
<td valign="top">&#8211;XX&#8211;<br />
&#8211;XX&#8211;<br />
-XX&#8212;<br />
&#8211;XX&#8211;<br />
X&#8211;X&#8211;<br />
-XXX&#8211;</td>
</tr>
</tbody>
</table>
<p style="text-align:left;">
<p style="text-align:left;">
<p style="text-align:left;"><span style="text-decoration:underline;"><strong>ตัวอย่างการใช้งานแบบสุ่มความน่าจะเป็นของการมีชีวิต</strong></span></p>
<p style="text-align:left;"><em><span style="color:#008000;">$</span></em> mpirun –np 5 Game_of_Life<br />
<span style="color:#008000;"><em>Enter board size (N):</em></span> 6<br />
<span style="color:#008000;"><em>Enter tile size (K):</em></span> 3<br />
<span style="color:#008000;"><em>Enter time step (t):</em></span> 8<br />
<span style="color:#008000;"><em>Do you want to save immediate file (yes/no):</em></span> no<br />
<span style="color:#008000;"><em>Read board from file (yes/no &#8211; if no board is initialize by random):</em></span> no<br />
<span style="color:#008000;"><em>Random life cell probability (0-100):</em></span> 60</p>
<table width="400" align="center">
<tbody>
<tr>
<td width="200">RandomBoard.input</td>
<td width="200">Board.output</td>
</tr>
<tr>
<td>X-XX-X<br />
-X&#8211;XX<br />
-X&#8212;X<br />
XX-XXX<br />
&#8211;XXX-<br />
XX-X-X</td>
<td>&#8212;&#8212;<br />
&#8212;&#8212;<br />
&#8212;&#8212;<br />
-XX&#8212;<br />
X&#8211;X&#8211;<br />
-XX&#8212;</td>
</tr>
</tbody>
</table>
<p>ดาวน์โหลด : <a href="http://remixman.net/cuda/Game_of_Life.c">ซอร์สโค้ด</a>, <a href="http://remixman.net/cuda/inputboard.txt">ตัวอย่าง input 1</a>, <a href="http://remixman.net/cuda/inputboard2.txt">ตัวอย่าง input 2</a></p>
<br />Filed under: <a href='http://remixman.wordpress.com/category/parallel-programming/'>Parallel Programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/198/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/198/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/198/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=198&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/04/06/assignment-5-cs427-game-of-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/assign5_03.gif" medium="image">
			<media:title type="html">assign5_03</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/assign5_02.gif" medium="image">
			<media:title type="html">assign5_02</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/pic31.gif" medium="image">
			<media:title type="html">pic3</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/01.gif" medium="image">
			<media:title type="html">01</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/02.gif" medium="image">
			<media:title type="html">02</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/04.gif" medium="image">
			<media:title type="html">04</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/04/03.gif" medium="image">
			<media:title type="html">03</media:title>
		</media:content>
	</item>
		<item>
		<title>การ Live Migration ภายในเครื่อง</title>
		<link>http://remixman.wordpress.com/2010/03/25/%e0%b8%81%e0%b8%b2%e0%b8%a3-live-migration-%e0%b8%a0%e0%b8%b2%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87/</link>
		<comments>http://remixman.wordpress.com/2010/03/25/%e0%b8%81%e0%b8%b2%e0%b8%a3-live-migration-%e0%b8%a0%e0%b8%b2%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 04:54:47 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[DSL]]></category>
		<category><![CDATA[kvm]]></category>
		<category><![CDATA[Live Migration]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=104</guid>
		<description><![CDATA[การทำการ Live Migration ภายในเครื่องนั้นมีขั้นตอนดังนี้ 1. เริ่มต้นด้วยการเปิดเครื่องปลายทางด้วยคำสั่ง kvm -m 512 host.img -incoming tcp:0.0.0.0:8000 โดย -m 512 หมายถึงให้เปิดเครื่องโดยกำหนด memory ไว้ที่ 512 MB (ใส่หรือไม่ใส่ก็ได้) host.img อิมเมจไฟล์ของเครื่องที่จะทำการย้าย -incoming tcp:0.0.0.0:8000 เป็นการบอกว่าจะทำการ migrate ผ่านทาง tcp ที่ ip 0.0.0.0 และ port 8000 เมื่อเปิดเครื่องสำเร็จ ตัวเครื่องจะอยู่ในสถานะ stopped รอการย้ายการทำงานมาที่เครื่อง 2. เปิดเครื่องที่จะทำการ Migrate โดยใช้คำสั่ง kvm -m 512 host.img เหมือนทำการเปิด virtual machine ปรกติ 3. ทดสอบการทำงานของการ Migrate ด้วยการเปิดโปรแกรม [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=104&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>การทำการ Live Migration ภายในเครื่องนั้นมีขั้นตอนดังนี้</p>
<p>1. เริ่มต้นด้วยการเปิดเครื่องปลายทางด้วยคำสั่ง kvm -m 512 host.img -incoming tcp:0.0.0.0:8000 โดย</p>
<ul>
<li>-m 512 หมายถึงให้เปิดเครื่องโดยกำหนด memory ไว้ที่ 512 MB (ใส่หรือไม่ใส่ก็ได้)</li>
<li>host.img อิมเมจไฟล์ของเครื่องที่จะทำการย้าย</li>
<li>-incoming tcp:0.0.0.0:8000 เป็นการบอกว่าจะทำการ migrate ผ่านทาง tcp ที่ ip 0.0.0.0 และ port 8000</li>
</ul>
<p>เมื่อเปิดเครื่องสำเร็จ ตัวเครื่องจะอยู่ในสถานะ stopped รอการย้ายการทำงานมาที่เครื่อง</p>
<p>2. เปิดเครื่องที่จะทำการ Migrate โดยใช้คำสั่ง <em>kvm -m 512 host.img</em> เหมือนทำการเปิด virtual machine ปรกติ</p>
<p>3. ทดสอบการทำงานของการ Migrate ด้วยการเปิดโปรแกรม Siag บนหน้าจอ Desktop</p>
<p>4. เข้าสู่ command mode ของ kvm ด้วยการกด ctrl+alt+2</p>
<p>5. พิมพ์คำสั่ง <em>migrate -d tcp:0.0.0.0:8000</em> ลงไปเพื่อเป็นการบอกว่าให้ทำการ migrate ไปที่ ip 0.0.0.0 และ port 8000</p>
<p>6. จากนั้นที่เครื่องปลายทางจะสังเกตุเห็นว่าการทำงานของเครื่องต้นทางถูกย้ายมาทำงานที่เครื่องปลายทาง สังเกตุได้จากโปรแกรม Siag ที่ได้เปิดเอาไว้ก่อนทำการ migrate</p>
<br />Filed under: <a href='http://remixman.wordpress.com/category/virtualization/'>Virtualization</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=104&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/03/25/%e0%b8%81%e0%b8%b2%e0%b8%a3-live-migration-%e0%b8%a0%e0%b8%b2%e0%b8%a2%e0%b9%83%e0%b8%99%e0%b9%80%e0%b8%84%e0%b8%a3%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>
	</item>
		<item>
		<title>เว็บไซต์ทุนเรียนต่อ</title>
		<link>http://remixman.wordpress.com/2010/03/13/%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b9%84%e0%b8%8b%e0%b8%95%e0%b9%8c%e0%b8%97%e0%b8%b8%e0%b8%99%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%95%e0%b9%88%e0%b8%ad/</link>
		<comments>http://remixman.wordpress.com/2010/03/13/%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b9%84%e0%b8%8b%e0%b8%95%e0%b9%8c%e0%b8%97%e0%b8%b8%e0%b8%99%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%95%e0%b9%88%e0%b8%ad/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 10:15:45 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/2010/03/13/%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b9%84%e0%b8%8b%e0%b8%95%e0%b9%8c%e0%b8%97%e0%b8%b8%e0%b8%99%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%95%e0%b9%88%e0%b8%ad</guid>
		<description><![CDATA[ช่วงนี้กำลังวางแผนว่าจะเรียนต่อหรือทำงานดี ก็เลยลองๆหาทุนดู   กลัวจะลืมเลยเอาเว็บไซต์มาแปะไว้ในนี้แล้วกัน   http://www.scholarships-links.com   http://freestudiesabroad.blogspot.com Filed under: Uncategorized<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=243&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!87085A1545329383!567" class="bvMsg">
<div>ช่วงนี้กำลังวางแผนว่าจะเรียนต่อหรือทำงานดี ก็เลยลองๆหาทุนดู</div>
<div> </div>
<div>กลัวจะลืมเลยเอาเว็บไซต์มาแปะไว้ในนี้แล้วกัน</div>
<div> </div>
<div><a href="http://www.scholarships-links.com">http://www.scholarships-links.com</a></div>
<div> </div>
<div><a href="http://freestudiesabroad.blogspot.com">http://freestudiesabroad.blogspot.com</a></div>
</div>
<br />Filed under: <a href='http://remixman.wordpress.com/category/uncategorized/'>Uncategorized</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/243/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=243&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/03/13/%e0%b9%80%e0%b8%a7%e0%b9%87%e0%b8%9a%e0%b9%84%e0%b8%8b%e0%b8%95%e0%b9%8c%e0%b8%97%e0%b8%b8%e0%b8%99%e0%b9%80%e0%b8%a3%e0%b8%b5%e0%b8%a2%e0%b8%99%e0%b8%95%e0%b9%88%e0%b8%ad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>
	</item>
		<item>
		<title>การใช้งาน MPI บน Microsoft Visual Studio 2008</title>
		<link>http://remixman.wordpress.com/2010/03/13/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-mpi-%e0%b8%9a%e0%b8%99-microsoft-visual-studio-2008/</link>
		<comments>http://remixman.wordpress.com/2010/03/13/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-mpi-%e0%b8%9a%e0%b8%99-microsoft-visual-studio-2008/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 05:48:18 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[Microsoft Visual Studio]]></category>
		<category><![CDATA[MPI]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=165</guid>
		<description><![CDATA[วิธีนี้ใช้ได้กับโปรแกรม Microsoft Visual Studio 2008 เพื่อเอาไว้ทดสอบการเขียนโปรแกรม MPI บนวินโดวส์ 1. ก่อนอื่นทำการดาวน์โหลด HPC Pack 2008 SDK จากลิงค์ http://www.microsoft.com/downloads/details.aspx?FamilyID=12887DA1-9410-4A59-B903-693116BFD30E&#38;displaylang=en และติดตั้งโปรแกรม 2. เปิดโปรแกรม Microsoft Visual Studio 2008 สร้างโปรเจคใหม่ โดยเลือกที่ Visual C++ &#62;&#62; Win32 และเลือกรูปแบบโปรเจคเป็น Win32 Console Application ใส่ชื่อของโปรเจคที่ต้องการที่ช่อง Name ด้านล่าง 3. เมื่อเลือกที่ Win32 Console Application แล้วกด OK จะปรากฏหน้าต่างใหม่ขี้น ให้กดปุ่ม Next &#62; และเลือกเช็ค Precompiled header ออก แล้วจึงกด Finish 4. หลังจากสร้างโปรเจคเสร็จแล้ว ให้คลิกขวาที่โปรเจคและเลือกที่ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=165&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>วิธีนี้ใช้ได้กับโปรแกรม Microsoft Visual Studio 2008 เพื่อเอาไว้ทดสอบการเขียนโปรแกรม MPI บนวินโดวส์</p>
<p>1. ก่อนอื่นทำการดาวน์โหลด HPC Pack 2008 SDK จากลิงค์ <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=12887DA1-9410-4A59-B903-693116BFD30E&amp;displaylang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=12887DA1-9410-4A59-B903-693116BFD30E&amp;displaylang=en</a> และติดตั้งโปรแกรม</p>
<p>2. เปิดโปรแกรม Microsoft Visual Studio 2008 สร้างโปรเจคใหม่ โดยเลือกที่ Visual C++ &gt;&gt; Win32 และเลือกรูปแบบโปรเจคเป็น Win32 Console Application ใส่ชื่อของโปรเจคที่ต้องการที่ช่อง Name ด้านล่าง</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/untitled-11.jpg"><img class="aligncenter size-full wp-image-175" title="Untitled-1" src="http://remixman.files.wordpress.com/2010/03/untitled-11.jpg?w=600&#038;h=437" alt="" width="600" height="437" /></a><br />
<br />
3. เมื่อเลือกที่ Win32 Console Application แล้วกด OK จะปรากฏหน้าต่างใหม่ขี้น ให้กดปุ่ม Next &gt; และเลือกเช็ค Precompiled header ออก แล้วจึงกด Finish</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/untitled-21.jpg"><img class="aligncenter size-full wp-image-179" title="Untitled-2" src="http://remixman.files.wordpress.com/2010/03/untitled-21.jpg?w=600&#038;h=506" alt="" width="600" height="506" /></a><br />
<br />
4. หลังจากสร้างโปรเจคเสร็จแล้ว ให้คลิกขวาที่โปรเจคและเลือกที่ Properties  เลือกเมนูในส่วนของ Configuration Properties &gt;&gt; C/C++ &gt;&gt; General และเพิ่มพาธของที่อยู่เฮดเดอร์ไฟล์ โดยปกติแล้วจะอยู่ที่ C:\Program Files\Microsoft HPC Pack 2008 SDK\Include ในช่อง Additional Include Directories</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/untitled-6.jpg"><img class="aligncenter size-full wp-image-181" title="Untitled-6" src="http://remixman.files.wordpress.com/2010/03/untitled-6.jpg?w=600&#038;h=418" alt="" width="600" height="418" /></a><br />
<br />
5. เลือกเมนู Configuration Properties &gt;&gt; Linker &gt;&gt; General และใส่พาธของที่อยู่ไลบรารี ซึ่งปกติจะอยู่ที่ C:\Program Files\Microsoft HPC Pack 2008 SDK\Lib\i386 ในช่อง Additional Library Directories</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/untitled-4.jpg"><img class="aligncenter size-full wp-image-182" title="Untitled-4" src="http://remixman.files.wordpress.com/2010/03/untitled-4.jpg?w=600&#038;h=418" alt="" width="600" height="418" /></a><br />
<br />
6. เลือกเมนู Configuration Properties &gt;&gt; Linker &gt;&gt; Input  และพิมพ์ msmpi.lib ในช่อง Additional Dependencies</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/untitled-5.jpg"><img class="aligncenter size-full wp-image-183" title="Untitled-5" src="http://remixman.files.wordpress.com/2010/03/untitled-5.jpg?w=600&#038;h=418" alt="" width="600" height="418" /></a><br />
<br />
7. เลือกเมนู Configuration Properties &gt;&gt; Linker &gt; System และในช่อง SubSystem ให้เลือกเป็น Console(/SUBSYSTEM:CONSOLE)</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/untitled-3.jpg"><img class="aligncenter size-full wp-image-184" title="Untitled-3" src="http://remixman.files.wordpress.com/2010/03/untitled-3.jpg?w=600&#038;h=418" alt="" width="600" height="418" /></a><br />
<br />
8. ทดสอบโปรแกรมโดยพิมพ์โค้ดดังต่อไปนี้</p>
<pre>#include &lt;stdio.h&gt;
#include &lt;mpi.h&gt; 

int main(int argc, char* argv[])
{
	int rank, size;

	MPI_Init(&amp;argc, &amp;argv);
	MPI_Comm_size(MPI_COMM_WORLD, &amp;size);
	MPI_Comm_rank(MPI_COMM_WORLD, &amp;rank);

	if(rank==0){
		printf("Hello Kitty form root\n");
	}
	else{
		printf("Hello Kitty from rank %d\n", rank);
	}

	MPI_Finalize();

	return 0;
}</pre>
<p>
9. Build โปรแกรมด้วย Build &gt;&gt; Build Solution แล้วรันโปรแกรมด้วยการออกคำสั่ง mpiexec -n 10 programname.exe (อยู่ในโฟลเดอร์ Debug หลังจาก build เสร็จ) จะได้ผลลัพท์ดังนี้</p>
<p><a href="http://remixman.files.wordpress.com/2010/03/res.gif"><img class="aligncenter size-full wp-image-186" title="res" src="http://remixman.files.wordpress.com/2010/03/res.gif?w=600&#038;h=141" alt="" width="600" height="141" /></a></p>
<p>ข้อควรระวัง : ทุกครั้งที่ใช้ฟังก์ชัน printf() ต้องเพิ่มคำสั่ง fflush (stdout); ตามไปด้วยเสมอ (เป็นบัคที่มาจากการ Implement MPI ของ Microsoft)</p>
<p>
<strong>แหล่งข้อมูลเพิ่มเติม</strong></p>
<p><a href="http://blogs.msdn.com/risman/archive/2009/01/04/ms-mpi-with-visual-studio-2008.aspx">http://blogs.msdn.com/risman/archive/2009/01/04/ms-mpi-with-visual-studio-2008.aspx</a></p>
<p><a href="http://www.cs.utah.edu/~delisi/vsmpi/">http://www.cs.utah.edu/~delisi/vsmpi/</a></p>
<p><a href="http://www.oerc.ox.ac.uk/resources/wcc/support/documentation/sub-documentation/mpi">http://www.oerc.ox.ac.uk/resources/wcc/support/documentation/sub-documentation/mpi</a></p>
<br />Filed under: <a href='http://remixman.wordpress.com/category/parallel-programming/'>Parallel Programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=165&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/03/13/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-mpi-%e0%b8%9a%e0%b8%99-microsoft-visual-studio-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/untitled-11.jpg" medium="image">
			<media:title type="html">Untitled-1</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/untitled-21.jpg" medium="image">
			<media:title type="html">Untitled-2</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/untitled-6.jpg" medium="image">
			<media:title type="html">Untitled-6</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/untitled-4.jpg" medium="image">
			<media:title type="html">Untitled-4</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/untitled-5.jpg" medium="image">
			<media:title type="html">Untitled-5</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/untitled-3.jpg" medium="image">
			<media:title type="html">Untitled-3</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/03/res.gif" medium="image">
			<media:title type="html">res</media:title>
		</media:content>
	</item>
		<item>
		<title>Assignment 4 (CS427) – Use hpccluster and MPI programming</title>
		<link>http://remixman.wordpress.com/2010/02/09/assignment-4-cs427-%e2%80%93-use-hpccluster-and-mpi-programming/</link>
		<comments>http://remixman.wordpress.com/2010/02/09/assignment-4-cs427-%e2%80%93-use-hpccluster-and-mpi-programming/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 14:21:17 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[HPC]]></category>
		<category><![CDATA[MPI]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=148</guid>
		<description><![CDATA[ขั้นตอนการติดต่อเครื่อง hpccluster และคำสั่งพื้นฐาน 1. เมื่อเริ่มต้นติดต่อไปยังเครื่อง hpccluster.cs.tu.ac.th เป็นครั้งแรก ระบบจะถามถึง passphrase ที่ต้องการใช้ และตำแหน่งที่เก็บ passphrase เพื่อใช้ในการเข้ารหัส private key 2. ใช้คำสั่ง $ ssh-agent /bin/sh เพื่อให้สามารถสั่งงาน compute-node โดยที่ไม่จำเป็นจะต้องกรอก passphrase เข้าไปใหม่ และใช้คำสั่ง $ ssh-add เพื่อให้ private-key ถูกโหลดขึ้นไปยังหน่วยความจำ เมื่อเรียกโปรแกรมนี้ โปรแกรมจะถามถึง passphrase เพื่อใช้ในการถอดรหัส ให้กรอก passphrase ตามที่ได้ตั้งไว้ 3. ใช้คำสั่ง $ cluster-fork uptime เพื่อแสดงว่าเครื่อง compute-node ใดบ้างที่ทำงานอยู่และมี workload เป็นอย่างไร ซึ่งเมื่อทำการ Redirect ออกมาเป็นไฟล์ด้วยคำสั่ง $ cluster-frok uptime &#62; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=148&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>ขั้นตอนการติดต่อเครื่อง hpccluster และคำสั่งพื้นฐาน</strong></p>
<p>1. เมื่อเริ่มต้นติดต่อไปยังเครื่อง hpccluster.cs.tu.ac.th เป็นครั้งแรก ระบบจะถามถึง passphrase ที่ต้องการใช้ และตำแหน่งที่เก็บ passphrase เพื่อใช้ในการเข้ารหัส private key</p>
<p>2. ใช้คำสั่ง <strong><em>$ ssh-agent /bin/sh</em></strong> เพื่อให้สามารถสั่งงาน compute-node โดยที่ไม่จำเป็นจะต้องกรอก passphrase เข้าไปใหม่ และใช้คำสั่ง <strong><em>$ ssh-add</em></strong> เพื่อให้ private-key ถูกโหลดขึ้นไปยังหน่วยความจำ เมื่อเรียกโปรแกรมนี้ โปรแกรมจะถามถึง passphrase เพื่อใช้ในการถอดรหัส ให้กรอก passphrase ตามที่ได้ตั้งไว้</p>
<p>3. ใช้คำสั่ง <strong><em>$ cluster-fork uptime</em></strong> เพื่อแสดงว่าเครื่อง compute-node ใดบ้างที่ทำงานอยู่และมี workload เป็นอย่างไร ซึ่งเมื่อทำการ Redirect ออกมาเป็นไฟล์ด้วยคำสั่ง <strong><em>$ cluster-frok uptime &gt; output</em></strong> และทำการโหลดไฟล์มายังเครื่องด้วยโปรแกรมจะได้ไฟล์ที่มีข้อมูลดังนี้</p>
<pre>
compute-0-14: down
compute-0-17:  21:04:52 up 30 days, 12:14,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-20:  21:04:52 up 30 days, 12:15,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-28: down
compute-0-29:  21:04:55 up 30 days, 12:14,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-30:  21:04:55 up 30 days, 12:15,  0 users,  load average: 0.15, 0.08, 0.01

compute-0-31:  21:04:56 up 30 days, 12:15,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-32: down
</pre>
<p><strong>MPI Programming</strong></p>
<p>1. คัดลอกโฟลเดอร์ของไฟล์โปรแกรม MPI ตัวอย่างโดยใช้คำสั่ง <strong><em>$ cp -r /opt/mpich/gnu/examples /home/cs4270904/examples</em></strong> ทำการคอมไพล์โปรแกรม cpi.c ด้วยคำสั่ง <strong><em>$ mpicc cpi.c –o cpi</em></strong> โดยจะได้ executable file ชื่อว่า cpi</p>
<p>2. ออกคำสั่ง <strong><em>$ lamboot</em></strong> เพื่อสร้าง LAM runtime system และออกคำสั่ง <strong><em>$ lamnodes</em></strong> เพื่อตรวจสอบว่ามีเครื่องใดอยู่ใน LAM runtime system ซึ่งควรจะมีเพียงเครื่องเดียว เนื่องจากยังไม่ได้กำหนดเครื่องอื่นเพิ่มเติม</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-1.jpg?w=600" alt="" title="ex4-1"   class="aligncenter size-full wp-image-155" /></p>
<p>3. รันโปรแกรม cpi ด้วยคำสั่ง $ mpirun –np 1 cpi โดยที่ –np1 หมายถึงให้รันโปรแกรมโดยใช้ 1 โพรเซส จะได้ผลลัพท์คือ</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-2.gif?w=600" alt="" title="ex4-2"   class="aligncenter size-full wp-image-156" /></p>
<p>ทดสอบด้วยการเพิ่มจำนวนโพรเซสที่ใช้รันเป็น 4 และ 8 ตามลำดับ</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-3.gif?w=600" alt="" title="ex4-3"   class="aligncenter size-full wp-image-157" /></p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-4.gif?w=600" alt="" title="ex4-4"   class="aligncenter size-full wp-image-158" /></p>
<p>โปรแกรม cpi ทำหน้าที่หาค่า Pi ซึ่งจากการทดสอบพบว่ายิ่งเพิ่มจำนวนโพรเซสก็จะใช้เวลาในการทำงานเพิ่มขึ้น เนื่องจากยังกำหนดให้ประมวลผลบนเครื่องเดียว และยิ่งเพิ่มจำนวนโพรเซสก็จะยิ่งได้ค่า Pi ที่แม่นยำขึ้น (Error ลดน้อยลง)</p>
<p>4. และเมื่อทดสอบการใช้งานแล้วให้ออกคำสั่ง <strong><em>$ lamhalt</em></strong> เพื่อปิด LAM runtime system</p>
<p>5. เพื่อที่จะรันโปรแกรมด้วยการใช้เครื่องหลายเครื่องช่วยกันประมวลผล จะต้องทำการสร้าง hostfile ที่จะระบุชื่อของเครื่องทั้งหมดที่จะใช้งาน (ดูเครื่องที่ปัจจุบันสามารถใช้งานได้จากคำสั่ง cluster-fork uptime) ซึ่งในที่นี้จะตั้งชื่อไฟล์ว่า machine จะเปิดระบบ LAM runtime system ใหม่โดยใช้คำสั่ง <strong><em>$ lamboot machines</em></strong> เพื่อให้เริ่มต้นการทำงานโดยมีเครื่องภายในไฟล์ machines เป็นเครื่อง cluster ที่จะร่วมกันทำงาน ไฟล์ machine ที่ใช้ เป็นดังนี้</p>
<pre>
hpccluster
compute-0-17
compute-0-20
compute-0-29
compute-0-30
compute-0-31
</pre>
<p>6. จากนั้นใช้คำสั่ง <strong><em>$ lamnodes</em></strong> เพื่อดูเครื่องทั้งหมดที่ทำงานอยู่</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-5.gif?w=600" alt="" title="ex4-5"   class="aligncenter size-full wp-image-159" /></p>
<p>7. ทดสอบการรันโปรแกรม cpi อีกครั้ง ซึ่งแตกต่างจากเดิมในส่วนที่ครั้งนี้จะใช้เครื่องหลายเครื่องช่วยในการประมวลผลโดยออกคำสั่งคือ <strong><em>$ mpirun n1-5 –np 4 cpi</em></strong> ซึ่งหมายถึงให้ใช้เครื่อง n1 ถึง n5 ในการประมวลผล (ไม่ใช้เครื่อง hpscluster เป็น front node) และใช้โพรเซสจำนวนทั้งหมด 4 โพรเซส ได้ผลลัพท์คือ</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-6.gif?w=600" alt="" title="ex4-6"   class="aligncenter size-full wp-image-160" /></p>
<p>และทดลองใช้ 8 โพรเซส</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-7.gif?w=600" alt="" title="ex4-7"   class="aligncenter size-full wp-image-161" /></p>
<p>ผลลัพธ์ที่ได้คือทั้งการใช้ 4 และ 8 โพรเซสบนเครื่องที่มีจำนวนมากขึ้นจะทำให้สามารถประมวลผลได้เร็วขึ้น</p>
<p>8. คัดลอกโปรแกรม Master/slave จากเว็บ http://www.mcs.anl.gov/research/projects/mpi/tutorial/mpiexmpl/src2/io/C/main.html และเซฟไฟล์ด้วยชื่อ io.c จากนั้นทำการอัพโหลดขึ้นไปยังเครื่อง Server โดยโปรแกรมนี้มีการทำงานคือจะส่งข้อความจากโพรเซสที่เป็น Slave มายังโพรเซสที่เป็น Master และทำการแสดงผลออกทางหน้าจอ</p>
<p>9. คอมไพล์โปรแกรมด้วยคำสั่ง <strong><em>$ mpicc io.c –o io</em></strong> และทดสอบรันด้วยการใช้ 4 โพรเซส ซึ่งจะมีโพรเซสที่เป็น Master 1 โพรเซส และ Slave อีก 3 โพรเซส</p>
<p><img src="http://remixman.files.wordpress.com/2010/02/ex4-8.gif?w=600" alt="" title="ex4-8"   class="aligncenter size-full wp-image-163" /></p>
<br />Filed under: <a href='http://remixman.wordpress.com/category/parallel-programming/'>Parallel Programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/148/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/148/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/148/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=148&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/02/09/assignment-4-cs427-%e2%80%93-use-hpccluster-and-mpi-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-1.jpg" medium="image">
			<media:title type="html">ex4-1</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-2.gif" medium="image">
			<media:title type="html">ex4-2</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-3.gif" medium="image">
			<media:title type="html">ex4-3</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-4.gif" medium="image">
			<media:title type="html">ex4-4</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-5.gif" medium="image">
			<media:title type="html">ex4-5</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-6.gif" medium="image">
			<media:title type="html">ex4-6</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-7.gif" medium="image">
			<media:title type="html">ex4-7</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/ex4-8.gif" medium="image">
			<media:title type="html">ex4-8</media:title>
		</media:content>
	</item>
		<item>
		<title>Assignment 3 (CS427) &#8211; Game of Life</title>
		<link>http://remixman.wordpress.com/2010/02/03/assignment-3-cs427-game-of-life/</link>
		<comments>http://remixman.wordpress.com/2010/02/03/assignment-3-cs427-game-of-life/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 06:40:17 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[Cellular Automaton]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[Game of Life]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=136</guid>
		<description><![CDATA[1. โปรแกรม Game of Life ที่เป็นการทำงานแบบ Sequential จำเป็นจะต้องมีอาร์เรย์จำนวน 2 ชุดในการเก็บข้อมูลของเวลาที่ต่างกันในการทำงาน และใช้ Pointer ในการสลับอาร์เรย์เพื่อประมวลผล #include &#60;stdio.h&#62; #include &#60;time.h&#62; #define MAX_WIDTH 1000 FILE *f; char board1[MAX_WIDTH * MAX_WIDTH]; char board2[MAX_WIDTH * MAX_WIDTH]; char *currentBoard; char *pastBoard; int maxx, maxy; void init(); /* initial board */ void rand_init_pop(int rand_size); /* initial population */ int in_bound(int i, int j); [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=136&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1. โปรแกรม Game of Life ที่เป็นการทำงานแบบ Sequential จำเป็นจะต้องมีอาร์เรย์จำนวน 2 ชุดในการเก็บข้อมูลของเวลาที่ต่างกันในการทำงาน และใช้ Pointer ในการสลับอาร์เรย์เพื่อประมวลผล</p>
<pre>#include &lt;stdio.h&gt;
#include &lt;time.h&gt;
#define MAX_WIDTH 1000

FILE *f;
char board1[MAX_WIDTH * MAX_WIDTH];
char board2[MAX_WIDTH * MAX_WIDTH];
char *currentBoard;
char *pastBoard;
int maxx, maxy;

void init();                           	        /* initial board */
void rand_init_pop(int rand_size);      	/* initial population */
int in_bound(int i, int j);
int neighbor_num(int i, int j);
void process();
void print_board();
void write_to_file();

int main(){
     int i, t = 10;
     int randnum = 0;

     printf("Enter board width : ");
     scanf("%d", &amp;maxx);
     printf("Enter board height : ");
     scanf("%d", &amp;maxy);
     printf("Enter number of random population : ");
     scanf("%d", &amp;randnum);
     printf("Enter time step : ");
     scanf("%d", &amp;t);

     pastBoard = board1;
     currentBoard = board2;

     init();
     rand_init_pop(randnum);

     f = fopen("sequential_board.txt", "w");

     for(i=0;i&lt;t;i++){
          fprintf(f, "t = %d\n", i);
          write_to_file();
          process();
     }
     fprintf(f, "t = %d\n", i);
     write_to_file();

     fclose(f);

     return 0;
}
void init(){
     int i, j;
     for(i=0;i&lt;maxy;i++) for(j=0;j&lt;maxx;j++)
          board1[i * maxx + j] = board2[i * maxx + j] = 'O';
}
void rand_init_pop(int rand_size){
     int i, x, y;
     srand( time(0));

     for(i=0;i&lt;rand_size;i++){
          y = rand() % maxy;
          x = rand() % maxx;
          if(pastBoard[y * maxx + x] == 'X') i--;
          else pastBoard[y * maxx + x] = 'X';
     }
}
int in_bound(int i, int j){
     if(i&lt;0 || j=maxy || j&gt;=maxy)    return 0;
     else                                    return 1;
}
int neighbor_num(int i, int j){
     int num = 0;
     if( in_bound(i-1,j-1) &amp;&amp; pastBoard[(i-1) * maxx + (j-1)]=='X' ) num++;
     if( in_bound(i-1, j ) &amp;&amp; pastBoard[(i-1) * maxx + ( j )]=='X' ) num++;
     if( in_bound( i ,j-1) &amp;&amp; pastBoard[( i ) * maxx + (j-1)]=='X' ) num++;
     if( in_bound(i+1,j+1) &amp;&amp; pastBoard[(i+1) * maxx + (j+1)]=='X' ) num++;
     if( in_bound(i+1, j ) &amp;&amp; pastBoard[(i+1) * maxx + ( j )]=='X' ) num++;
     if( in_bound( i ,j+1) &amp;&amp; pastBoard[( i ) * maxx + (j+1)]=='X' ) num++;
     if( in_bound(i+1,j-1) &amp;&amp; pastBoard[(i+1) * maxx + (j-1)]=='X' ) num++;
     if( in_bound(i-1,j+1) &amp;&amp; pastBoard[(i-1) * maxx + (j+1)]=='X' ) num++;
     return num;
}
void process(){
     int i,j;
     char* tmp;

     for(i=0;i&lt;maxy;i++){
          for(j=0;j&lt;maxx;j++){
               //For a space that is 'populated'
               if(pastBoard[i * maxx + j]=='X'){
                    //Each cell with one or no neighbors dies, as if by loneliness.
                    if(neighbor_num(i,j) &lt;= 1) currentBoard[i * maxx + j] = 'O';
                    //Each cell with two or three neighbors survives.
                    else if(neighbor_num(i,j) &lt;= 3) currentBoard[i * maxx + j] = 'X';
                    // Each cell with four or more neighbors dies, as if by overpopulation.
                    else currentBoard[i * maxx + j] = 'O';
               }
               //For a space that is 'empty' or 'unpopulated'
               else{
                    // Each cell with three neighbors becomes populated.
                    if(neighbor_num(i,j) == 3) currentBoard[i * maxx + j] = 'X';
                    else currentBoard[i * maxx + j] = 'O';
               }
          }
     }
     tmp = pastBoard;
     pastBoard = currentBoard;
     currentBoard = tmp;
}
void write_to_file(){
     int i, j;
     for(i=0;i&lt;maxy;i++){
          for(j=0;j&lt;maxx;j++){
               if(pastBoard[i * maxx + j]=='X')    fprintf(f, "1”);
               else                                fprintf(f, "0”);
          }
          fprintf(f, "\n");
     }
     fprintf(f, "\n");
}
</pre>
<p>เมื่อเริ่มต้นโปรแกรม โปรแกรมจะให้ใส่ข้อมูลขนาดความกว้าง และความสูงของตารางที่จะใช้ จากนั้นจะถามถึงจำนวน Cell ที่มีชีวิตเริ่มต้นที่ต้องการกำหนด โดยจะมีตำแหน่งแบบสุ่ม และสุดท้ายจะถามถึง จำนวนหน่วยเวลาที่ต้องการทำการ Simulation เมื่อใส่ข้อมูลครบแล้วโปรแกรมจะทำงาน และเขียนข้อมูลของตารางในแต่ละช่วงเวลาไปยังไฟล์ที่ชื่อ “sequential_board.txt”</p>
<hr />
<p>2. การทำงานของโปรแกรม Game of Life บนจีพียู ใน 1 time step จะต้องเข้าถึงหน่วยความจำเฉลี่ยประมาณ 8 ครั้งต่อ 1 เทรด ดังนั้นเพื่อให้มีความรวดเร็วในการทำงาน จะต้องทำการคัดลอดข้อมูลจาก Global Memory มายัง Shared Memory ก่อน เพื่อให้เข้าถึงหน่วยความจำได้เร็วขึ้น โดยวิธีที่ใช้คือการแบ่งการทำงานออกเป็นเทรดบล็อคโดยที่ในตอนเริ่มต้นการทำงาน แต่ละเทรดบล็อคจะต้องคัดลอกข้อมูลในส่วนของ cell ที่มีพื้นที่ติดกันกับพื้นที่ที่เทรดบล็อคนั้นรับผิดชอบมาด้วย แต่ในการเขียนข้อมูลจะเขียนข้อมูลลงใน Global Memory ในช่องที่เทรดบล็อคนั้นรับผิดชอบเท่านั้น</p>
<p><a href="http://remixman.files.wordpress.com/2010/02/shared.jpg"><img class="aligncenter size-full wp-image-142" title="shared" src="http://remixman.files.wordpress.com/2010/02/shared.jpg?w=600" alt=""   /></a></p>
<pre>#include &lt;stdio.h&gt;
#include &lt;math.h&gt;
#include &lt;time.h&gt;
#define MAX_WIDTH 500
#define TILE_WIDTH 16
#define TY threadIdx.y
#define TX threadIdx.x

void rand_init_pop(int *board, int maxx, int maxy, int rand_size);
void write_to_file(FILE *f, int *board, int maxx, int maxy);

__global__ void process(int *board, int maxx, int maxy);

int main(){
     int *board, *d_board, i, t;
     int maxx, maxy, size, randnum;
     FILE *f;

     printf("Enter board width : ");
     scanf("%d", &amp;maxx);
     printf("Enter board height : ");
     scanf("%d", &amp;maxy);
     printf("Enter number of random population : ");
     scanf("%d", &amp;randnum);
     printf("Enter time step : ");
     scanf("%d", &amp;t);
     size = sizeof(int) * maxx * maxy;

     f = fopen("cuda_board.txt", "w");

     board = (int*)malloc(size);
     cudaMalloc((void**)&amp;d_board, size);
     rand_init_pop(board, maxx, maxy, randnum);

     dim3 blockDim(TILE_WIDTH+2, TILE_WIDTH+2);
     dim3 gridDim(ceil(maxy*1.0/TILE_WIDTH), ceil(maxx*1.0/TILE_WIDTH));

     cudaMemcpy(d_board, board, size, cudaMemcpyHostToDevice);

     for(i=0;i&lt;t;i++){
          fprintf(f, "t = %d\n", i);
          write_to_file(f, board, maxx, maxy);

          process&lt;&lt;&gt;&gt;(d_board, maxx, maxy);
          cudaMemcpy(board, d_board, size, cudaMemcpyDeviceToHost);
     }
     fprintf(f, "t = %d\n", i);
     write_to_file(f, board, maxx, maxy);

     fclose(f);
     free(board);
     cudaFree(d_board);

     return 0;
}

void init(int *board, int maxx, int maxy){
     int i, j;
     for(i=0;i&lt;maxy;i++) for(j=0;j&lt;maxx;j++)
          board[i * maxx + j] = 0;
}
void rand_init_pop(int *board, int maxx, int maxy, int rand_size){
     int i, x, y;
     srand( time(0));
     init(board, maxx, maxy);

     for(i=0;i&lt;rand_size;i++){
          y = rand() % maxy;
          x = rand() % maxx;
          if(board[y * maxx + x] == 1) i--;
          else board[y * maxx + x] = 1;
     }
}
void write_to_file(FILE *f, int *board, int maxx, int maxy){
     for(int i=0;i&lt;maxy;i++){
          for(int j=0;j&lt;maxx;j++)
               fprintf(f, "%d", board[i * maxx + j]);
          fprintf(f, "\n");
     }
     fprintf(f, "\n");
}

__global__ void process(int *board, int maxx, int maxy){
     __shared__ int sboard[TILE_WIDTH+2][TILE_WIDTH+2];

     int i = (blockIdx.x * TILE_WIDTH) + TX - 1;
     int j = (blockIdx.y * TILE_WIDTH) + TY - 1;

     if(i&lt;=maxy &amp;&amp; j=0 &amp;&amp; j&gt;=0 &amp;&amp; i&lt;maxy &amp;&amp; j0 &amp;&amp; TX0 &amp;&amp; TY&lt;TILE_WIDTH){
          int n = 0;
          n += sboard[TY+1][TX+1];
          n += sboard[TY+1][TX-1];
          n += sboard[TY-1][TX-1];
          n += sboard[TY-1][TX+1];
          n += sboard[TY+1][ TX ];
          n += sboard[ TY ][TX+1];
          n += sboard[ TY ][TX-1];
          n += sboard[TY-1][ TX ];

          if(sboard[TY][TX]==1 &amp;&amp; n!=2 &amp;&amp; n!=3)
               board[boardidx] = 0;
          else if(sboard[TY][TX]==0 &amp;&amp; n==3)
               board[boardidx] = 1;
          }
     }
}
</pre>
<p>เมื่อรันโปรแกรม โปรแกรมจะถามข้อมูลเช่นเดียวกับโปรแกรม Sequential แต่ข้อมูลจะเขียนลงไปที่ไฟล์ที่มีชื่อว่า “cuda_board.txt”</p>
<p>สามารถดาวน์โหลดไฟล์โปรแกรมได้ที่ด้านล่าง<br />
<a href="http://remixman.net/cuda/GameOfLife.c">GameOfLife.c</a><br />
<a href="http://remixman.net/cuda/GameOfLifeCUDA.cu">GameOfLifeCUDA.cu</a></p>
<br />Filed under: <a href='http://remixman.wordpress.com/category/parallel-programming/'>Parallel Programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/136/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/136/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/136/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=136&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/02/03/assignment-3-cs427-game-of-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/02/shared.jpg" medium="image">
			<media:title type="html">shared</media:title>
		</media:content>
	</item>
		<item>
		<title>Assignment 2 (CS427)</title>
		<link>http://remixman.wordpress.com/2010/01/10/assignment-2-cs427/</link>
		<comments>http://remixman.wordpress.com/2010/01/10/assignment-2-cs427/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 02:07:45 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[OpenMP]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=107</guid>
		<description><![CDATA[1. การทำให้โปรแกรมมีลักษณะการทำงานแบบ Parallelism มากที่สุด จะต้องทำการวิเคราะห์ความสัมพันธ์ของโปรแกรม ในส่วนต่างๆว่ามีส่วนใดที่สามารถทำงานพร้อมกันได้โดยดูจากกราฟ จากโปรแกรมตัวอย่างเมื่อเขียนความสัมพันธ์ในรูปแบบกราฟจะได้กราฟลักษณะข้างต้น ซึ่งหมายความว่าลูปที่ 2 และ 3 ที่เป็นส่วนที่คำนวนค่าของ c และ d สามารถทำงานพร้อมกันได้ ดังนั้นจึงสามารถใช้คำสั่ง #pragma omp sections ในส่วนนี้ และภายในลูปแต่ละลูปก็มีไม่ความสัมพันธ์กันระหว่างแต่ละการวนรอบสังเกตุได้จากการอ้างอิงถึง index เดียวกันในแต่ละการวนรอบเท่านั้น ดังนั้นทุกลูปสามารถใช้คำสั่ง #pragma omp for เพื่อให้เกิดการทำงานแบบขนานขึ้นในแต่ละลูป โดยสามารถเขียนเป็นโปรแกรมได้ดังดังนี้ #include &#60;omp.h&#62; #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #define N 50 int main (int argc, char *argv[]) { int i, nthreads, tid; float a[N], b[N], c[N], d[N]; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=107&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1.	การทำให้โปรแกรมมีลักษณะการทำงานแบบ Parallelism มากที่สุด จะต้องทำการวิเคราะห์ความสัมพันธ์ของโปรแกรม ในส่วนต่างๆว่ามีส่วนใดที่สามารถทำงานพร้อมกันได้โดยดูจากกราฟ</p>
<p><a href="http://remixman.files.wordpress.com/2010/01/asg2-1.gif"><img class="aligncenter size-full wp-image-108" title="asg2-1" src="http://remixman.files.wordpress.com/2010/01/asg2-1.gif?w=600" alt=""   /></a></p>
<p>จากโปรแกรมตัวอย่างเมื่อเขียนความสัมพันธ์ในรูปแบบกราฟจะได้กราฟลักษณะข้างต้น ซึ่งหมายความว่าลูปที่ 2 และ 3 ที่เป็นส่วนที่คำนวนค่าของ c และ d สามารถทำงานพร้อมกันได้ ดังนั้นจึงสามารถใช้คำสั่ง #pragma omp sections ในส่วนนี้ และภายในลูปแต่ละลูปก็มีไม่ความสัมพันธ์กันระหว่างแต่ละการวนรอบสังเกตุได้จากการอ้างอิงถึง index เดียวกันในแต่ละการวนรอบเท่านั้น ดังนั้นทุกลูปสามารถใช้คำสั่ง #pragma omp for เพื่อให้เกิดการทำงานแบบขนานขึ้นในแต่ละลูป</p>
<p>โดยสามารถเขียนเป็นโปรแกรมได้ดังดังนี้</p>
<pre>#include &lt;omp.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define N 50

int main (int argc, char *argv[])
{
     int i, nthreads, tid;
     float a[N], b[N], c[N], d[N];
     float pa[N], pb[N], pc[N], pd[N];

     /* Sequential Program */
     for (i=0; i&lt;N; i++) {
          a[i] = i * 1.5;
          b[i] = i + 22.35;
          c[i] = d[i] = 0.0;
     }

     for (i=0; i&lt;N; i++){
          c[i] = a[i] + b[i];
     }
     for (i=0; i&lt;N; i++){
          d[i] = a[i] * b[i];
     }

     /* Parallel Program with OpenMP */
     #pragma omp parallel for
     for (i=0; i&lt;N; i++) {
          pa[i] = i * 1.5;
          pb[i] = i + 22.35;
          pc[i] = pd[i] = 0.0;
     }

     #pragma omp parallel sections
     {
          #pragma omp section
          #pragma omp parallel for
          for (i=0; i&lt;N; i++){
               pc[i] = pa[i] + pb[i];
          }

          #pragma omp section
          #pragma omp parallel for
          for (i=0; i&lt;N; i++){
               pd[i] = pa[i] * pb[i];
          }
     }

     /* check answers */
     for(i=0;i&lt;N;i++){
          if(c[i]!=pc[i] || d[i]!=pd[i]){
               printf("Compute Error\n");
               break;
          }
     }
     if(i==N) printf("Corrected Answer\n");

     return 0;
}</pre>
<p>โปรแกรมดังกล่าวจะทำงานทั้งหมดสองครั้งคือ คำนวนเชิงลำดับ (Sequential) และคำนวนแบบขนาน (Parallel) ด้วยการใช้ OpenMP หลังจากนั้นจะนำคำตอบมาตรวจสอบว่าการคำนวนแบบขนานให้ผลลัพท์เช่นเดียวกับการทำงานเชิงลำดับหรือไม่ ซึ่งหากคำนวนได้ถูกต้องจะปรากฎผลลัพท์ขึ้นมาเป็น Corrected Answer และจะปรากฎผลลัพท์ว่า Compute Error หากทำงานผิดพลาด ในที่นี้จะทำการคอมไพล์ด้วยโปรแกรม gcc เวอร์ชัน 4 ด้วยคำสั่ง</p>
<blockquote><p>$gcc-4 –fopenmp program1.c –o program1</p></blockquote>
<p>และเมื่อนำโปรแกรมไปรันทดสอบ ผลลัพท์ที่ได้คือ Corrected Answer หรือโปรแกรมทำงานได้ถูกต้อง ถึงแม้โปรแกรมนี้จะมีความเป็น Parallelism สูง แต่ในการทำงานจริงจะทำงานได้ช้า เนื่องจากโปรแกรมจะเสียเวลาในการสร้างเทรดขึ้นมาจำนวนมาก ซึ่งไม่คุ้มกับการคำนวนข้อมูลที่มีจำนวนน้อย ในการทำงานจริงเพื่อให้มีประสิทธิภาพสูงสุดอาจจะกำหนดให้มีการทำงานแบบขนานเพียงบางส่วนเท่านั้น เพื่อลด overhead ในการสร้างเทรด</p>
<hr />2. ในข้อนี้จะทำการเปลี่ยนโปรแกรมเชิงลำดับให้เป็นโปรแกรมแบบขนานที่ทำงานได้บนจีพียู ซึ่งจะเขียนโปรแกรมที่คำนวนบนซีพียูและจีพียูจากนั้นจะนำคำตอบที่ได้มาตรวจสอบว่าได้ค่าที่เหมือนกัน ซึ่งการคำนวนค่าของ Floating-point บนซีพียูและจีพียูนั้นให้ค่าที่แตกต่างกันเล็กน้อย ดังนั้นเทียบค่าของ Floating-point ที่คำนวนได้ด้วยฟังก์ชัน floatIsEqual ในโปรแกรม</p>
<pre>#include &lt;stdio.h&gt;
#include &lt;time.h&gt;
#define DELTA 0.001

int floatIsEqual(float a, float b){
     if( (b&lt;a+DELTA) &amp;&amp; (b&gt;a-DELTA) ) return 1;
     else  return 0;
}

__global__ void GPUfunction(float *A, float *B, float *C){
     int i = blockIdx.x * blockDim.x + threadIdx.x;

     if(i&lt;1024)       C[i] = A[i] + B[i];
     else if(i&lt;2048) C[i] = A[i] * B[i];
     else if(i&lt;3072) C[i] = A[i] - B[i];
     else if(i&lt;4096) C[i] = A[i] / B[i];
}

void CPUfunction(float *A, float *B, float *C){
     int i;

     for(i=0; i&lt;1024; i++)              C[i] = A[i] + B[i];
     for(i=1024; i&lt;2048; i++)         C[i] = A[i] * B[i];
     for(i=2048; i&lt;3072; i++)         C[i] = A[i] - B[i];
     for(i=3072; i&lt;4096; i++)         C[i] = A[i] / B[i];
}

int main(){
     int i;
     float A[4096], B[4096], C[4096];
     float *hA, *hB, *hC;
     float *dA, *dB, *dC;
     int size = 4096 * sizeof(float);

     hA = (float*)malloc(size);
     hB = (float*)malloc(size);
     hC = (float*)malloc(size);

     cudaMalloc((void**)&amp;dA, size);
     cudaMalloc((void**)&amp;dB, size);
     cudaMalloc((void**)&amp;dC, size);

     /* initialize */
     srand(time(0));
     for(i=0;i&lt;4096;i++){
          A[i] = hA[i] = rand() % 40;
          // make sure that B is not zero
          B[i] = hB[i] = rand() % 39 + 1;
     }

     /* GPU code */
     cudaMemcpy(dA, hA, size, cudaMemcpyHostToDevice);
     cudaMemcpy(dB, hB, size, cudaMemcpyHostToDevice);
     GPUfunction&lt;&lt;&lt;8, 512&gt;&gt;&gt;(dA, dB, dC);
     cudaMemcpy(hC, dC, size, cudaMemcpyDeviceToHost);

     /* CPU code */
     CPUfunction(A, B, C);

     /* check answers from CPU and GPU are same */
     for(i=0;i&lt;4096;i++){
          if(!floatIsEqual(C[i], hC[i])){
               printf("Compute Error\n");
               break;
          }
     }
     if(i==4096) printf("Corrected Answer\n");

     free(hA);
     free(hB);
     free(hC);

     cudaFree(dA);
     cudaFree(dB);
     cudaFree(dC);

     return 0;
}</pre>
<p>ทำการคอมไพล์โปรแกรมด้วยคำสั่ง</p>
<blockquote><p>$nvcc  program2.cu –o program2</p></blockquote>
<p>ได้ผลลัพท์ออกมาเป็น Corrected Answer ซึ่งหมายถึงโปรแกรมทำงานได้ถูกต้อง การคำนวนแบบขนานจากจีพียูให้ผลลัพท์ตรงตามการคำนวนจากซีพียู</p>
<hr />3. โปรแกรมนี้สามารถเพิ่มประสิทธิภาพได้ด้วยการใช้ Shared Memory และ Parallel Reduction ในการรวมข้อมูลหลังจากนั้นจึงทำการคำนวน โค้ดของโปรแกรมเหมือนกับข้อ 2 ยกเว้นในส่วนของฟังก์ชัน GPUfunction และ CPUfunction ซึ่งทำการเปลี่ยนแปลงดังนี้</p>
<p>GPUfunction :</p>
<pre>__global__ void GPUfunction(float *A, float *B, float *C){
     int i = blockIdx.x * blockDim.x + threadIdx.x;
     __shared__ float ssuma[512];
     float sum;
     int s, tid = threadIdx.x;

     /* copy global mem to shared mem synchonously */
     ssuma[tid] = A[i];
     __syncthreads();

     /* parallel reduction */
     for(s=256; s&gt;0; s/=2){
          if(tid&lt;s)  ssuma[tid] = ssuma[tid] + ssuma[tid+s];
          __syncthreads();
     }
     sum = ssuma[0];

     if(i&lt;1024)        C[i] = sum + B[i];
     else if(i&lt;2048) C[i] = sum * B[i];
     else if(i&lt;3072) C[i] = sum - B[i];
     else if(i&lt;4096) C[i] = sum / B[i];
}</pre>
<p>CPUfunction :</p>
<pre>void CPUfunction(float *A, float *B, float *C){
     int i;
     float SUMA[8];

     /* initialize SUMA */
     for(i=0;i&lt;8;i++)           SUMA[i] = 0.0;
     for(i=0;i&lt;4096;i++)     SUMA[i/512] += A[i];

     for(i=0; i&lt;1024; i++)
          C[i] = SUMA[i/512] + B[i];
     for(i=1024; i&lt;2048; i++)
          C[i] = SUMA[i/512] * B[i];
     for(i=2048; i&lt;3072; i++)
          C[i] = SUMA[i/512] - B[i];
     for(i=3072; i&lt;4096; i++)
          C[i] = SUMA[i/512] / B[i];

}</pre>
<p>ทำการคอมไพล์โปรแกรมด้วย nvcc โดยใช้คำสั่ง</p>
<blockquote><p>$nvcc  program3.cu –o program3</p></blockquote>
<p>ซึ่งเมื่อรันโปรแกรมแล้วให้ผลลัพท์ถูกต้อง และแสดงข้อความว่า Corrected Answer เช่นเดียวกันในข้อ 2</p>
<p>ดาวน์โหลดโปรแกรมทั้ง 3 โปรแกรมได้ที่ด้านล่าง<br />
<a href="http://remixman.64tk.com/program1.c">program 1</a><br />
<a href="http://remixman.64tk.com/program2.cu">program 2</a><br />
<a href="http://remixman.64tk.com/program3.cu">program 3</a></p>
<br />Posted in Parallel Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=107&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2010/01/10/assignment-2-cs427/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2010/01/asg2-1.gif" medium="image">
			<media:title type="html">asg2-1</media:title>
		</media:content>
	</item>
		<item>
		<title>ขั้นตอนการติดตั้ง CUDA Toolkit และ NVIDIA CUDA SDK</title>
		<link>http://remixman.wordpress.com/2009/12/13/%e0%b8%82%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-cuda-toolkit-%e0%b9%81%e0%b8%a5%e0%b8%b0-nvidi/</link>
		<comments>http://remixman.wordpress.com/2009/12/13/%e0%b8%82%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-cuda-toolkit-%e0%b9%81%e0%b8%a5%e0%b8%b0-nvidi/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 16:22:39 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Parallel Programming]]></category>
		<category><![CDATA[CUDA]]></category>
		<category><![CDATA[CUDA SDK]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[nvcc]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=65</guid>
		<description><![CDATA[1. หลังจากที่ Log in เข้าไปที่เครื่องเซิฟเวอร์แล้ว ทำการสร้างไดเรคเทอรี่ส่วนตัวขึ้นมา (ในที่นี้จะเก็บไว้ที่ /tmp/4909611727) ทำการคัดลอกไฟล์ cudatoolkit_2.3_linux_64_ubuntu9.04.run  และ cudasdk_2.3_linux.run จาก /home/kasidit มาไว้ยังไดเรคเทอรี่ที่สร้างขึ้น 2. ติดตั้ง CUDA Toolkit ด้วยคำสั่ง sh cudatoolkit_2.3_linux_64_ubuntu9.04.run จากนั้นโปรแกรมจะถามถึง path ที่ต้องการจะใช้ติดตั้ง พิมพ์ /tmp/4909611727 ลงไป 3. คอมไพเลอร์ของ CUDA หรือ nvcc นั้นจะเก็บไว้ที่ /tmp/4909611727/cuda/bin ให้ตั้งค่าของ $PATH และ $LD_LIBRARY_PATH ดังนี้       export PATH=/tmp/4909611727/cuda/bin:$PATH       export LD_LIBRARY_PATH=/tmp/4909611727/cuda/lib64:$LD_LIBRARY_PATH 4. ทดสอบว่าสามารถใช้งาน nvcc ได้ด้วยการพิมพ์คำสั่ง nvcc –version ซึ่งจะได้ผลลัพท์ดังนี้ 5. ติดตั้ง NVIDIA [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=65&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1. หลังจากที่ Log in เข้าไปที่เครื่องเซิฟเวอร์แล้ว ทำการสร้างไดเรคเทอรี่ส่วนตัวขึ้นมา (ในที่นี้จะเก็บไว้ที่ /tmp/4909611727) ทำการคัดลอกไฟล์ cudatoolkit_2.3_linux_64_ubuntu9.04.run  และ cudasdk_2.3_linux.run จาก /home/kasidit มาไว้ยังไดเรคเทอรี่ที่สร้างขึ้น</p>
<p>2. ติดตั้ง CUDA Toolkit ด้วยคำสั่ง sh cudatoolkit_2.3_linux_64_ubuntu9.04.run จากนั้นโปรแกรมจะถามถึง path ที่ต้องการจะใช้ติดตั้ง พิมพ์ /tmp/4909611727 ลงไป</p>
<p>3. คอมไพเลอร์ของ CUDA หรือ nvcc นั้นจะเก็บไว้ที่ /tmp/4909611727/cuda/bin ให้ตั้งค่าของ $PATH และ $LD_LIBRARY_PATH ดังนี้</p>
<p>      export PATH=/tmp/4909611727/cuda/bin:$PATH<br />
      export LD_LIBRARY_PATH=/tmp/4909611727/cuda/lib64:$LD_LIBRARY_PATH</p>
<p>4. ทดสอบว่าสามารถใช้งาน nvcc ได้ด้วยการพิมพ์คำสั่ง nvcc –version ซึ่งจะได้ผลลัพท์ดังนี้</p>
<p style="text-align:center;"><img class="size-full wp-image-68  aligncenter" title="ex1-nvcc" src="http://remixman.files.wordpress.com/2009/12/ex1-nvcc.gif?w=600" alt=""   /></p>
<p>5. ติดตั้ง NVIDIA CUDA SDK ด้วยคำสั่ง sh cudasdk_2.3_linux.run โปรแกรมจะถามถึง path ที่จะใช้ติดตั้ง ซึ่งถ้าไม่ใส่จะถูกกำหนดให้เป็น NVIDIA_GPU_Computing_SDK แต่ในที่นี้จะกำหนดให้เป็น /tmp/4909611727/NVIDAI_CUDA_SDK</p>
<p>6. คอมไพล์ไฟล์ตัวอย่างที่มากับ NVIDIA CUDA SDK ด้วยการเข้าไปที่ /tmp/4909611727/NVIDIA_CUDA_SDK/C แล้วใช้คำสั่ง make</p>
<p>7. ทดสอบโปรแกรมด้วยการรันโปรแกรมตัวอย่างที่อยู่ที่ /tmp/4909611727/NVIDIA_CUDA_SDK/C/bin/linux/release ซึ่งโปรแกรมตัวอย่างที่จะทดสอบคือ deviceQuery และ bandwidthTest</p>
<p><strong>deviceQuery</strong></p>
<p>โปรแกรม deviceQuery เป็นโปรแกรมที่ใช้แสดงคุณลักษณะของกราฟิกการ์ดที่ใช้ ซึ่งผลลัพธ์จากการรันโปรแกรม deviceQuery เป็นดังต่อไปนี้</p>
<p><img class="aligncenter size-full wp-image-85" title="ex1-1" src="http://remixman.files.wordpress.com/2009/12/ex1-1.gif?w=600" alt=""   /></p>
<p><strong>bandwidthTest</strong></p>
<p>โปรแกรม bandwidthTest จะแสดงให้เห็นถึงความสามารถในการส่งข้อมูลแบบต่างๆระหว่างหน่วยความจำหลัก และหน่วยความจำ Global ของ GPU ทดสอบโดยการส่งข้อมูลขนาด 32 MB ผลได้เป็นดังโปรแกรม</p>
<p><img class="aligncenter size-full wp-image-87" title="ex1-2" src="http://remixman.files.wordpress.com/2009/12/ex1-2.gif?w=600" alt=""   /></p>
<p><strong>Vector Addition</strong></p>
<p>เขียนโปรแกรมบวกเวกเตอร์ เซฟด้วยชื่อไฟล์ vecadd.cu แล้วทำการคัดลอกไปยังเครื่องเซิฟเวอร์ และคอมไพล์ด้วยคำสั่ง nvcc vecadd.cu และรันโปรแกรมจะได้ผลลัพท์ออกมาดังนี้</p>
<p style="text-align:center;"><img class="size-full wp-image-92  aligncenter" title="ex1-vecadd" src="http://remixman.files.wordpress.com/2009/12/ex1-vecadd.gif?w=600" alt=""   /></p>
<p>โค้ดของโปรแกรมนี้คือ</p>
<pre><code><span style="font-size:xx-small;">
#include &lt;stdio.h&gt;
__global__ void VecAdd(float *A, float *B, float *C, int N){
	int idx = (blockIdx.x * blockDim.x) + threadIdx.x;

	if(idx&lt;N){
		C[idx] = A[idx] + B[idx];
	}
}
int main(){
	float *h_A, *h_B, *h_C;
	float *d_A, *d_B, *d_C;
	int N = 200000;
	int size = sizeof(float) * N;
	int threadPerBlock = 512;
	int blockPerGrid = (N + threadPerBlock -1) / threadPerBlock;

	// Allocate host and device memory
	h_A = (float*)malloc(size); h_B = (float*)malloc(size); h_C = (float*)malloc(size);
	cudaMalloc((void**)&amp;d_A, size); cudaMalloc((void**)&amp;d_B, size); cudaMalloc((void**)&amp;d_C, size); 

	// Initial value on vector A and B
	for(int i=0;i&lt;N;i++)
		h_A[i] = rand()/200, h_B[i] = rand()/200;

	// Copy vector A and B to device
	cudaMemcpy(d_A, h_A, size, cudaMemcpyHostToDevice);
	cudaMemcpy(d_B, h_B, size, cudaMemcpyHostToDevice);

	// Call kernel
	VecAdd&lt;&lt;&lt; blockPerGrid, threadPerBlock &gt;&gt;&gt;(d_A, d_B, d_C, N);

	// Copy back vector C
	cudaMemcpy(h_C, d_C, size, cudaMemcpyDeviceToHost);

	printf("%s\n", cudaGetErrorString( cudaGetLastError() ) );
	printf("Threads per block = %d\nBlocks per grid = %d\n", threadPerBlock, blockPerGrid);
	printf("Vector size = %d\nMemory used = %f MB\n", N, 3 * size / 1024.0 / 1024);

	// Deallocate host and device memory
	free(h_A); free(h_B); free(h_C);
	cudaFree(d_A); cudaFree(d_B); cudaFree(d_C);

	return 0;
}
</span>
</code></pre>
<br />Posted in Parallel Programming  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/65/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/65/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/65/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=65&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/12/13/%e0%b8%82%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%95%e0%b8%ad%e0%b8%99%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-cuda-toolkit-%e0%b9%81%e0%b8%a5%e0%b8%b0-nvidi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/12/ex1-nvcc.gif" medium="image">
			<media:title type="html">ex1-nvcc</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/12/ex1-1.gif" medium="image">
			<media:title type="html">ex1-1</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/12/ex1-2.gif" medium="image">
			<media:title type="html">ex1-2</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/12/ex1-vecadd.gif" medium="image">
			<media:title type="html">ex1-vecadd</media:title>
		</media:content>
	</item>
		<item>
		<title>VMware ESXi Internet Mechanisms</title>
		<link>http://remixman.wordpress.com/2009/09/16/vmware-esxi-internet-mechanisms/</link>
		<comments>http://remixman.wordpress.com/2009/09/16/vmware-esxi-internet-mechanisms/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 07:16:42 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=17</guid>
		<description><![CDATA[ปกติแล้วการเชื่อมต่ออุปกรณ์และเครื่องคอมพิวเตอร์ต่างๆเข้าด้วยกันนั้นจะอาศัย Switch (Physical Switch) และบน Switch ก็จะมี Port (Physical Port) ที่จะรอรับสายแลนจาก Network Interface Card (Physical NIC) ที่ซึ่งอยู่บนอุปกรณ์ และคอมพิวเตอร์แต่ละตัว จากโมเดลการทำงานนี้เอง VMware ESXi ก็จะจำลอง Network ขึ้นมาด้วยวิธีเดียวกัน โดยมีส่วนประกอบคือ Virtual Switch ซึ่งใน ESXi จะเรียกว่า vSwitch เป็นตัวที่จำลองการทำงานของ Switch ขึ้นมา แล้วอยู่ภายใต้การดูแลการทำงานของ VMkernel Virtual NIC ซึ่งใน ESXi จะเรียกว่า vNIC จะมีอยู่ในทุกเครื่องของ Virtual Machine และเชื่อมต่อกับ Virtual Switch โดยผ่าน Virtual Port Virtual Port เป็นตัวเชื่อมต่อระหว่าง Virtual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=17&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-18" title="tech_network_med_01" src="http://remixman.files.wordpress.com/2009/09/tech_network_med_01.gif?w=600" alt="tech_network_med_01"   /></p>
<p>ปกติแล้วการเชื่อมต่ออุปกรณ์และเครื่องคอมพิวเตอร์ต่างๆเข้าด้วยกันนั้นจะอาศัย Switch (Physical Switch) และบน Switch ก็จะมี Port (Physical Port) ที่จะรอรับสายแลนจาก Network Interface Card (Physical NIC) ที่ซึ่งอยู่บนอุปกรณ์ และคอมพิวเตอร์แต่ละตัว</p>
<p>จากโมเดลการทำงานนี้เอง VMware ESXi ก็จะจำลอง Network ขึ้นมาด้วยวิธีเดียวกัน โดยมีส่วนประกอบคือ</p>
<ul>
<li><strong>Virtual Switch</strong> ซึ่งใน ESXi จะเรียกว่า vSwitch เป็นตัวที่จำลองการทำงานของ Switch ขึ้นมา แล้วอยู่ภายใต้การดูแลการทำงานของ VMkernel</li>
<li><strong>Virtual NIC</strong> ซึ่งใน ESXi จะเรียกว่า vNIC จะมีอยู่ในทุกเครื่องของ Virtual Machine และเชื่อมต่อกับ Virtual Switch โดยผ่าน Virtual Port</li>
<li><strong>Virtual</strong><strong> Port</strong><strong> </strong>เป็นตัวเชื่อมต่อระหว่าง Virtual NIC ของแต่ละ Virtual Machine กับ Virtual Switch</li>
</ul>
<p>Virtual Machine แต่ละเครื่องที่อยู่บน VMware ESXi จะใช้ Physical NIC เป็นทางเชื่อมกับโลกภายนอก ด้วยการใช้bridge โดยที่ใน Physical NIC นั้นจะไม่มี IP Address แต่ IP Address จะขึ้นกับ Virtual NIC ในแต่ละเครื่องของ Virtual Machine แทน    Physical NIC นั้นเพียงแต่ทำหน้าที่เป็นทางผ่านของข้อมูลระหว่าง Physical Switch ที่อยู่ภายนอก และ Virtual Switch ที่อยู่ภายใน คล้ายกับการ Uplink ระหว่าง Switch (ดังนั้น Port ที่ต่อระหว่าง Physical NIC กับ Virtual Switch จึงถูกเรียกว่า Uplink Port )</p>
<p>Virtual Switch ที่ถูกสร้างขึ้นบน VMware ESXi สามารถจำลองขึ้นมาได้มากที่สุดถึง 127 เครื่อง และ Virtual Switch แต่ละเครื่องที่ยังสามารถมี Virtual Port ได้ถึง 1016 พอร์ต แต่บน ESXi ทั้งหมดรวมกันนั้นจะต้องมีไม่เกิน 4096 พอร์ต</p>
<h3>อ้างอิงจาก</h3>
<p>http://www.compspot.net/index.php?option=com_content&#038;task=view&#038;id=366&#038;Itemid=72</p>
<br />Posted in Virtualization  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=17&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/09/16/vmware-esxi-internet-mechanisms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/tech_network_med_01.gif" medium="image">
			<media:title type="html">tech_network_med_01</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Architecture of VMwave ESXi</title>
		<link>http://remixman.wordpress.com/2009/09/16/software-architecture-of-vmwave-esxi/</link>
		<comments>http://remixman.wordpress.com/2009/09/16/software-architecture-of-vmwave-esxi/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 07:15:05 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=9</guid>
		<description><![CDATA[ส่วนประกอบของ VMware ESXi มีดังต่อไปนี้ VMkernel &#8211; อยู่ใน Layer ชั้นล่างสุดของระบบ มีหน้าที่และฟังก์ชันการทำงานคล้ายกับระบบปฎิบัติการ เช่น การสร้าง Process, การควบคุม Process, การส่ง Signal, การจัดการระบบ file system, การสร้าง Thread     ถูกออกแบบมาเพื่อให้สามารถรองรับการทำงานของ Virtual Machine หลายเครื่องพร้อมกันได้ ด้วยฟังก์ชันการทำงานต่อไปนี้ Resource scheduling I/O stacks Device driver VMkernel จะคอบควบคุมการทำงานของ Hardware device บนเครื่อง Server และคอยควบคุมการจัดแบ่ง resource ต่างๆให้กับ Guest VM แต่ละตัว Direct Console User Interface (DCUI) &#8211; เป็น interface ที่ใช้ในการ configure [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=9&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-10" title="esx_Architect" src="http://remixman.files.wordpress.com/2009/09/esx_architect.jpg?w=600" alt="esx_Architect"   /></p>
<p>ส่วนประกอบของ VMware ESXi มีดังต่อไปนี้</p>
<p><strong>VMkernel</strong> &#8211; อยู่ใน Layer ชั้นล่างสุดของระบบ มีหน้าที่และฟังก์ชันการทำงานคล้ายกับระบบปฎิบัติการ เช่น การสร้าง Process, การควบคุม Process, การส่ง Signal, การจัดการระบบ file system, การสร้าง Thread     ถูกออกแบบมาเพื่อให้สามารถรองรับการทำงานของ Virtual Machine หลายเครื่องพร้อมกันได้ ด้วยฟังก์ชันการทำงานต่อไปนี้</p>
<ul>
<li>Resource scheduling</li>
<li>I/O stacks</li>
<li>Device driver</li>
</ul>
<p>VMkernel จะคอบควบคุมการทำงานของ Hardware device บนเครื่อง Server และคอยควบคุมการจัดแบ่ง resource ต่างๆให้กับ Guest VM แต่ละตัว</p>
<p><strong>Direct Console User Interface (DCUI)</strong> &#8211; เป็น interface ที่ใช้ในการ configure และจัดการตั้งค่าพื้นฐานต่างๆที่สำคัญของระบบในเครื่อง server สามารถติดต่อกับ DCUI ได้โดย console ของเครื่อง server เท่านั้นไม่สามารถทำกำหนดค่าผ่าน Network ได้ ตัว DCUI นั้นจะเป็นตัวกำหนดค่าต่างๆและคอยแก้ใขข้อผิดพลาดในระบบ เช่น</p>
<ul>
<li>กำหนด administrative password</li>
<li>กำหนดค่า Network ต่างๆ ถ้าหากไม่สามารถกำหนดอัตโนมัติด้วย DHCP ได้</li>
<li>จัดเตรียมการทดสอบระบบ Network อย่างง่ายไว้ให้</li>
<li>ใช้สำหรับดู Log file</li>
<li>ใช้ Restart server</li>
<li>ใช้ Restore ค่า default ของระบบ</li>
</ul>
<p><strong>Virtual Machine Monitor </strong><strong>(VMM</strong><strong>)</strong> &#8211; เป็น process ที่จำลองพื้นที่และสภาพแวดล้อมการทำงานให้แต่ละ Guest OS โดยมี helper process ชื่อ VMX เป็นของ guest OS แต่ละตัว ดังนั้นในแต่ละ Guest OS จะต้องมี VMM และ VMX คู่กันเสมอ</p>
<p><strong>Common Information Model (CIM)</strong> &#8211; เป็น Interface ที่ใช้ในการจัดการในระดับ hardware กับเครื่อง guest OS ผ่าน remote application ซึ่งจะมีชุดของ API ที่เป็นตัวรองรับอยู่ CIM นั้นเป็น Open standard ในการแสดงและจัดการ resource และ hardware ของเครื่อง ซึ่ง CIM Framework มีส่วนประกอบคือ</p>
<ul>
<li><strong>CIM provider</strong> หรือเรียกว่า  CIM object manager เป็นส่วนที่จัดเตรียมการเข้าถึง device driver และ hardware บนเครื่อง ผู้ผลิต hardware นั้นสามารถเขียนตัว provider ที่จะใช้จัดการกับ hardware นั้นขึ้นมาเองได้  ESXi ได้สร้างมาตรฐาน CMPI ที่ยอมให้นักพัฒนาสามารถเขียน provider ตัวใหม่และสามารถนำมาต่อใช้งานได้ แต่จะต้องถูกรวมเข้าไปกับ system image เลย ไม่สามารถนำมาติดตั้งในขณะรันได้</li>
<li><strong>CIM broker </strong>ทำหน้าที่คอบนำข้อมูลจากทุก CIM providers และแสดงสู่โลกภายนอก ผ่าน API มาตรฐาน เช่น WS-MAN</li>
</ul>
<p><img class="aligncenter size-full wp-image-12" title="esx-arch1" src="http://remixman.files.wordpress.com/2009/09/esx-arch1.gif?w=600" alt="esx-arch1"   /></p>
<p><strong>Other User World Processes</strong> – process ที่ซึ่งถูกเรียกใช้โดย VMware เพื่อย้ายความสามารถในการควบคุมที่อยู่บนเครื่อง server ไปยัง user world</p>
<ul>
<li><strong>hostd</strong> เป็น process ที่จะเตรียม programmatic interface ให้กับ VMkernel และถูกใช้ด้วย VI Client ได้เหมือนกับ VI API    ซึ่ง hostd จะทำหน้าที่ยืนยันผู้ใช้แต่ละคน พร้อมกับเก็บสิทธิการเข้าถึง ว่าผู้ใช้คนนั้นสามารถจัดการอะไรบนระบบได้บ้าง</li>
<li><strong>vpxa</strong> เป็น process ที่จะสามารถติดต่อไปยัง VirtualCenter และจะรันโปรแกรมพิเศษที่เรียกว่า vpxuser ที่จะเป็นตัวกลางระหว่าง hostd และ VirtualCenter</li>
<li><strong>syslog</strong> เป็น daemon process ที่ทำงานบน user world เช่นกัน มีหน้าที่เก็บ log เมื่อเปิดให้ระบบเก็บ remote logging</li>
</ul>
<p><strong>Open Network Ports</strong> – มี Port จำนวนหนึ่งที่ถูกเปิดอยู่ตลอดเวลาบน ESXi ซึ่งเป็น Port ที่สำคัญในการทำงานได้แก่</p>
<ul>
<li>80 &#8211; เป็น server port  ที่จะแสดง static webpage  เพื่อใช้สำหรับการ browse มาที่ server และ port นี้จะถูก redirect ไปยัง port 443 เพื่อให้ client ติดต่อกับ server ผ่าน SSL</li>
<li>443 &#8211; port นี้มีไว้สำหรับ client ติดต่อกับ server ผ่าน SSL เพื่อเรียกใช้ service ต่างๆ ได้แก่ VMware Virtual Infrastructure API(VI API)ที่ซึ่งสามารถเข้าใช้งาน RCLIs, VI client, Virtual center server และ SDK</li>
<li>427 &#8211; port นี้มีไว้เพื่อเข้าใช้งาน service location  protocol ซึ่งเป็น protocol ที่ใช้ค้นหา VI API</li>
<li>5989 &#8211; port นี้เปิดไว้สำหรับ CIM server ที่จะเป็น interface สำหรับ toolที่ใช้ในการจัดการ</li>
<li>902 &#8211; port นี้เปิดไว้สำหรับ support VIM API version ก่อนหน้า</li>
</ul>
<p><strong>File System</strong> – VMkernel จะเก็บข้อมูลของ configuration files, log files, staged patches ไว้เป็นแบบ file  ที่อยู่บน memory และเพื่อให้ง่ายต่อการใช้งาน โครงสร้างของ file system จึงออกแบบมาให้เหมือนกับที่ใช้บนเครื่อง server ของ ESX เช่น</p>
<ul>
<li>/etc/vmware สำหรับเก็บ ESXi configuration files</li>
<li>/var/log/vmware สำหรับเก็บ log files</li>
<li>/tmp สำหรับเก็บ staged patches</li>
</ul>
<p>ตัว file system นี้จะเป็นอิสระจาก VMware VMFS file system ที่เป็นตัวเก็บ Virtual Machine เนื่องจาก VMFS จะถูกเก็บลงบน Disk บน host หรือบน shared storage</p>
<p>สามารถใช้ remote command line เพื่อจัดการกับ file system ทั้งที่อยู่บน memory และ VMware VMFS file system ได้ โดยผ่านการใช้ HTTPS get และ put</p>
<p>นอกจากนี้ข้อมูลที่อยู่ใน file system บน memory นั้นจะไม่อยู่อย่างถาวร เมื่อเครื่องถูกปิด ข้อมูลทั้งหมดก็จะหายไป ดังนั้น ESXi จึงมีความสามารถที่จะสั่งงานให้เก็บข้อมูลของ log ลงบน Disk ได้ผ่านทาง remote syslog server</p>
<p><strong>User and Groups</strong> – User และ Group ถูกกำหนดไว้บน  ESXi server ซึ่งแต่ละคนจะสามารถเข้าสู้ระบบได้ผ่านทาง remote command line หรือ VIM API</p>
<p>Group นั้นประกอบจาก User หลายคน เหมือนกับระบบปฏิบัติการทั่วไป จะใช้ Group เช่น ต้องการกำหนเสิทธิให้กับ User หลายๆคนพร้อมกันในครั้งเดียว</p>
<p>Administrative privileges สามารถกำหนด User แต่ละคนว่าจะอยู่ที่ Group ไหนได้ ข้อมูลของ User และ Group นั้น ถูกเก็บไว้ที่ /etc/passwd, /eyc.shadow และ /etc/group และเหมือนกับระบบปฏิบัติการ Linux และใช้ฟังก์ชันมาตรฐาน crypt ในการเข้ารหัส</p>
<p><strong>User Worlds</strong> – คำว่า  User Worlds นั้นหมายถึง process ที่ทำงานอยู่บน VMkernel แต่สิ่งแวดล้อมของระบบที่ User World ทำงานด้วยนั้นมีจำกัดเมื่อเทียบกับระบบปฎิบัติการทั่วไปอย่าง Linux เช่น</p>
<ul>
<li>จำนวนของ Signal ที่มีให้นั้นจำกัด</li>
<li>API ของระบบนั้นเป็นเพียง subset ของ POSIX</li>
<li>/proc file system นั้นจำกัดไว้มาก</li>
<li>Swap file มีเพียงตัวเดียวให้ใช้ร่วมกันระหว่างหลาย User world process</li>
</ul>
<h3>อ้างอิงจาก</h3>
<p>http://www.vmware.com/files/pdf/vmware_esxi_architecture_wp.pdf</p>
<br />Posted in Virtualization  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=9&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/09/16/software-architecture-of-vmwave-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/esx_architect.jpg" medium="image">
			<media:title type="html">esx_Architect</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/esx-arch1.gif" medium="image">
			<media:title type="html">esx-arch1</media:title>
		</media:content>
	</item>
		<item>
		<title>How to install Guest OS in VMware ESXi</title>
		<link>http://remixman.wordpress.com/2009/09/16/how-to-install-guest-os-in-vmware-esxi/</link>
		<comments>http://remixman.wordpress.com/2009/09/16/how-to-install-guest-os-in-vmware-esxi/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 07:07:18 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=6</guid>
		<description><![CDATA[ในตัวอย่างต่อไปนี้จะเป็นขั้นการลง Microsoft Windows XP ให้เป็น Guest OS บนเครื่อง Server ที่ติดตั้ง VMware ESXi โดยผ่าน Client Application คือ vSphere client 1. ติดต่อเครื่อง Server ผ่าน vSphere client ตามขั้นตอนที่ได้กล่าวไปก่อนหน้านี้ เมื่อ Log in เรียบร้อยแล้ว จะได้หน้าจอดังภาพ ให้เลือกที่เมนู “Create a new virtual machine” เพื่อสร้าง Virtual Machine เครื่องใหม่ขึ้นมาบนระบบ 2. เลือก Configuration ให้เป็น Typical แล้วกด Next 3. ตั้งชื่อเครื่อง Virtual Machine ที่สร้างขึ้นใหม่แล้วกด Next (ซึ่งในที่นี้จะตั้งชื่อว่า WindowsXP) [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=6&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>ในตัวอย่างต่อไปนี้จะเป็นขั้นการลง Microsoft Windows XP ให้เป็น Guest OS บนเครื่อง Server ที่ติดตั้ง VMware ESXi โดยผ่าน Client Application คือ vSphere client</p>
<p>1. ติดต่อเครื่อง Server ผ่าน vSphere client ตามขั้นตอนที่ได้กล่าวไปก่อนหน้านี้ เมื่อ Log in เรียบร้อยแล้ว จะได้หน้าจอดังภาพ ให้เลือกที่เมนู “Create a new virtual machine” เพื่อสร้าง Virtual Machine เครื่องใหม่ขึ้นมาบนระบบ</p>
<p><img class="aligncenter size-full wp-image-22" title="OS_Untitled-1" src="http://remixman.files.wordpress.com/2009/09/os_untitled-1.jpg?w=600" alt="OS_Untitled-1"   /></p>
<p>2. เลือก Configuration ให้เป็น Typical แล้วกด Next</p>
<p><img class="aligncenter size-full wp-image-23" title="OS_Untitled-2" src="http://remixman.files.wordpress.com/2009/09/os_untitled-2.jpg?w=600" alt="OS_Untitled-2"   /></p>
<p>3. ตั้งชื่อเครื่อง Virtual Machine ที่สร้างขึ้นใหม่แล้วกด Next (ซึ่งในที่นี้จะตั้งชื่อว่า WindowsXP)</p>
<p><img class="aligncenter size-full wp-image-24" title="OS_Untitled-3" src="http://remixman.files.wordpress.com/2009/09/os_untitled-3.jpg?w=600" alt="OS_Untitled-3"   /></p>
<p>4. ทำการเลือก Datastore ที่ต้องการ แล้วกด Next</p>
<p><img class="aligncenter size-full wp-image-25" title="OS_Untitled-4" src="http://remixman.files.wordpress.com/2009/09/os_untitled-4.jpg?w=600" alt="OS_Untitled-4"   /></p>
<p>5. เลือกชนิดและเวอร์ชันของ Guest OS ที่ต้องการจะลงบนเครื่อง Virtual Machine ที่ส้รางขั้นใหม่ แล้วกด Next (ในที่นี้เลือกเป็น Microsoft Windows XP Professional 32 bit)</p>
<p><img class="aligncenter size-full wp-image-26" title="OS_Untitled-5" src="http://remixman.files.wordpress.com/2009/09/os_untitled-5.jpg?w=600" alt="OS_Untitled-5"   /></p>
<p>6. ทำการสร้าง Disk จำลองขึ้นบน Virtual Machine ให้เลือกขนาดของ Disk โดยจะต้องไม่เกิน Available space</p>
<p><img class="aligncenter size-full wp-image-27" title="OS_Untitled-6" src="http://remixman.files.wordpress.com/2009/09/os_untitled-6.jpg?w=600" alt="OS_Untitled-6"   /></p>
<p>7. เมื่อกำหนดค่าต่างๆของเครื่อง Virtual Machine เสร็จแล้ว จะปรากฎหน้าจอดังภาพ ให้กดที่ Finish</p>
<p><img class="aligncenter size-full wp-image-28" title="OS_Untitled-7" src="http://remixman.files.wordpress.com/2009/09/os_untitled-7.jpg?w=600" alt="OS_Untitled-7"   /></p>
<p>8. เมื่อได้ Virtual Machine เครื่องใหม่แล้ว ให้ทำการกำหนดค่าของฮาร์ดแวร์ต่าง ด้วยการคลิ๊กขวาที่ Virtual Machine นั้นแล้วเลือก Properties เลือกในส่วนของ CD/DVD Drive1 ติ๊กที่ “Connect at power on” เลือก Device Type เป็นแบบ “Host Device” ซึ่งหมายถึงให้ใช้ฮาร์ดแวร์จากเครื่อง Server ให้ให้ติดต่อทันที่ที่เปิดใช้งาน Virtual Machine นี้ จากนั้นทำการใส่แผ่น install ของ Microsoft Windows XP เข้าไปที่เครื่อง Server</p>
<p><img class="aligncenter size-full wp-image-29" title="OS_Untitled-8" src="http://remixman.files.wordpress.com/2009/09/os_untitled-8.jpg?w=600" alt="OS_Untitled-8"   /></p>
<p>9. เมื่อใส่แผ่น install แล้ว ที่หน้าจอหลักให้เลือกที่เมนู “Power on the virtual machine”</p>
<p><img class="aligncenter size-full wp-image-31" title="OS_Untitled-9" src="http://remixman.files.wordpress.com/2009/09/os_untitled-91.jpg?w=600" alt="OS_Untitled-9"   /></p>
<p>10. คลิ๊กขวาที่เครื่องที่ทำการ install แล้วเลือกที่ Open console เพื่อเปิดหน้าต่างควบคุมการทำงาน</p>
<p><img class="aligncenter size-full wp-image-33" title="OS_Untitled-10" src="http://remixman.files.wordpress.com/2009/09/os_untitled-101.jpg?w=600" alt="OS_Untitled-10"   /></p>
<p>11. เมื่อเลือกแล้วจะขึ้นหน้าต่างการทำงานของเครื่อง Virtual Machine นั้น</p>
<p><img class="aligncenter size-full wp-image-34" title="OS_Untitled-11" src="http://remixman.files.wordpress.com/2009/09/os_untitled-11.jpg?w=600" alt="OS_Untitled-11"   /></p>
<p>12. ทำการติดตั้ง OS เหมือนกับที่ติดตั้งบนเครื่องปกติ ซึ่งภาพหน้าต่างด้านข้างแสดงถึง การติดตั้ง Microsoft Windows XP</p>
<p><img class="aligncenter size-full wp-image-35" title="OS_Untitled-12" src="http://remixman.files.wordpress.com/2009/09/os_untitled-12.jpg?w=600" alt="OS_Untitled-12"   /></p>
<p>13. เมื่อติดตั้งเสร็จก็พร้อมใช้งานได้เสมือนกับทำงานกับเครื่องจริง</p>
<p><img class="aligncenter size-full wp-image-36" title="OS_Untitled-13" src="http://remixman.files.wordpress.com/2009/09/os_untitled-13.jpg?w=600" alt="OS_Untitled-13"   /></p>
<br />Posted in Virtualization  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=6&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/09/16/how-to-install-guest-os-in-vmware-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-1.jpg" medium="image">
			<media:title type="html">OS_Untitled-1</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-2.jpg" medium="image">
			<media:title type="html">OS_Untitled-2</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-3.jpg" medium="image">
			<media:title type="html">OS_Untitled-3</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-4.jpg" medium="image">
			<media:title type="html">OS_Untitled-4</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-5.jpg" medium="image">
			<media:title type="html">OS_Untitled-5</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-6.jpg" medium="image">
			<media:title type="html">OS_Untitled-6</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-7.jpg" medium="image">
			<media:title type="html">OS_Untitled-7</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-8.jpg" medium="image">
			<media:title type="html">OS_Untitled-8</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-91.jpg" medium="image">
			<media:title type="html">OS_Untitled-9</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-101.jpg" medium="image">
			<media:title type="html">OS_Untitled-10</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-11.jpg" medium="image">
			<media:title type="html">OS_Untitled-11</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-12.jpg" medium="image">
			<media:title type="html">OS_Untitled-12</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-13.jpg" medium="image">
			<media:title type="html">OS_Untitled-13</media:title>
		</media:content>
	</item>
		<item>
		<title>How to install VMware ESXi</title>
		<link>http://remixman.wordpress.com/2009/09/16/how-to-install-vmware-esxi/</link>
		<comments>http://remixman.wordpress.com/2009/09/16/how-to-install-vmware-esxi/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 06:57:53 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/?p=3</guid>
		<description><![CDATA[1. ใส่แผ่น VMware ESXi ลงไปที่เครื่องแล้วเปิดเครื่องใหม่ จะปรากฏหน้าจอดังภาพ ให้เลือกที่ ESXi Installer 2. VMware จะเริ่มทำการ load ให้รอสักครู่ 3. กด Enter เพื่อเลือกที่จะ Install 4. กด F11 เพื่อยอมรับข้อตกลง 5. ทำการเลือก Partition ที่ต้องการ install และกด Enter 6. เลือก F11 เพื่อยืนยันการ install 7. ระบบจะทำการ install ให้รอสักครู่ 8. เมื่อ install เสร็จสิ้นจะปรากฏหน้าจอดังภาพ ให้นำแผ่นออก จากนั้นกด Enter เพื่อให้ระบบ Restart 9. เมื่อเปิดเครื่องขึ้นมาใหม่จะได้หน้าจอดังภาพ ให้กด F2 เพื่อทำการกำหนดค่าในระบบ 10. เลือกที่ [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=3&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1. ใส่แผ่น VMware ESXi ลงไปที่เครื่องแล้วเปิดเครื่องใหม่ จะปรากฏหน้าจอดังภาพ ให้เลือกที่ ESXi Installer</p>
<p><img class="aligncenter size-full wp-image-38" title="Untitled-1" src="http://remixman.files.wordpress.com/2009/09/untitled-1.jpg?w=600" alt="Untitled-1"   /></p>
<p>2. VMware จะเริ่มทำการ load ให้รอสักครู่</p>
<p><img class="aligncenter size-full wp-image-39" title="Untitled-2" src="http://remixman.files.wordpress.com/2009/09/untitled-2.jpg?w=600" alt="Untitled-2"   /></p>
<p>3. กด Enter เพื่อเลือกที่จะ Install</p>
<p><img class="aligncenter size-full wp-image-40" title="Untitled-3" src="http://remixman.files.wordpress.com/2009/09/untitled-3.jpg?w=600" alt="Untitled-3"   /></p>
<p>4. กด F11 เพื่อยอมรับข้อตกลง</p>
<p><img class="aligncenter size-full wp-image-41" title="Untitled-4" src="http://remixman.files.wordpress.com/2009/09/untitled-4.jpg?w=600" alt="Untitled-4"   /></p>
<p>5. ทำการเลือก Partition ที่ต้องการ install และกด Enter</p>
<p><img class="aligncenter size-full wp-image-42" title="Untitled-5" src="http://remixman.files.wordpress.com/2009/09/untitled-5.jpg?w=600" alt="Untitled-5"   /></p>
<p>6. เลือก F11 เพื่อยืนยันการ install</p>
<p><img class="aligncenter size-full wp-image-43" title="Untitled-6" src="http://remixman.files.wordpress.com/2009/09/untitled-6.jpg?w=600" alt="Untitled-6"   /></p>
<p>7. ระบบจะทำการ install ให้รอสักครู่</p>
<p><img class="aligncenter size-full wp-image-45" title="OS_Untitled-7" src="http://remixman.files.wordpress.com/2009/09/os_untitled-71.jpg?w=600" alt="OS_Untitled-7"   /></p>
<p>8. เมื่อ install เสร็จสิ้นจะปรากฏหน้าจอดังภาพ ให้นำแผ่นออก จากนั้นกด Enter เพื่อให้ระบบ Restart</p>
<p><img class="aligncenter size-full wp-image-46" title="OS_Untitled-8" src="http://remixman.files.wordpress.com/2009/09/os_untitled-81.jpg?w=600" alt="OS_Untitled-8"   /></p>
<p>9. เมื่อเปิดเครื่องขึ้นมาใหม่จะได้หน้าจอดังภาพ ให้กด F2 เพื่อทำการกำหนดค่าในระบบ</p>
<p><img class="aligncenter size-full wp-image-47" title="Untitled-9" src="http://remixman.files.wordpress.com/2009/09/untitled-9.jpg?w=600" alt="Untitled-9"   /></p>
<p>10. เลือกที่ Configure Password แล้วกด Enter เพื่อทำการตั้ง Password ใหม่</p>
<p><img class="aligncenter size-full wp-image-49" title="Untitled-10" src="http://remixman.files.wordpress.com/2009/09/untitled-10.jpg?w=600" alt="Untitled-10"   /></p>
<p>11. ใส่ Password ในช่อง Old Password และ New Password ตามที่ต้องการแล้วกด Enter</p>
<p><img class="aligncenter size-full wp-image-50" title="Untitled-11" src="http://remixman.files.wordpress.com/2009/09/untitled-11.jpg?w=600" alt="Untitled-11"   /></p>
<p>12. จากนั้นเลือกที่ Configure Management Network จะได้หน้าจอดังภาพ ให้ทำการเลือก IP Configuration เพื่อกำหนดค่า IP ของเครื่อง server ใหม่</p>
<p><img class="aligncenter size-full wp-image-52" title="Untitled-12" src="http://remixman.files.wordpress.com/2009/09/untitled-12.jpg?w=600" alt="Untitled-12"   /></p>
<p>13. เลือกที่ Set static IP address and Network Configuration และทำการเปลี่ยน IP ของเครื่อง server ในส่วนนี้ต้องระวังเรื่องของ subnet mark ด้วย เมื่อตั้งค่าเสร็จแล้วให้กด Enter</p>
<p><img class="aligncenter size-full wp-image-53" title="Untitled-13" src="http://remixman.files.wordpress.com/2009/09/untitled-13.jpg?w=600" alt="Untitled-13"   /></p>
<p>14 . เข้าไปที่ DNS Configuration แล้วทำการแก้ในส่วน Primary DNS Server ให้ตรงกับที่ตั้งค่าไว้ก่อนหน้านี้ และทำการเปลี่ยน hostname ตามที่ต้องการ จากนั้นกด Enter เพื่อตกลง</p>
<p><img class="aligncenter size-full wp-image-54" title="Untitled-14" src="http://remixman.files.wordpress.com/2009/09/untitled-14.jpg?w=600" alt="Untitled-14"   /></p>
<p>15. กด Esc เพื่อออกจากการ configuration ระบบจะถามว่าต้องการ restart management network หรือไม่ให้กด Y เพื่อตอบตกลง</p>
<p><img class="aligncenter size-full wp-image-55" title="Untitled-15" src="http://remixman.files.wordpress.com/2009/09/untitled-15.jpg?w=600" alt="Untitled-15"   /></p>
<p>16. ไปที่เครื่อง Client ที่จะเป็นเครื่องที่จะ remote เข้ามาเพื่อควบคุมการทำงานของเครื่อง server ให้เปิด web browser ขึ้นมาจากนั้นเข้าไปที่ https:// ตามด้วย static IP ของเครื่อง server  ตามที่ได้ตั้งไว้ จะปรากฎหน้าเว็บไซต์ดังภาพ ให้ทำการดาวน์โหลด vSphere Client จากลิงค์ที่ปรากฏบนเว็บ เพื่อในมาลงที่เครื่อง Client</p>
<p><img class="aligncenter size-full wp-image-59" title="Untitled-16" src="http://remixman.files.wordpress.com/2009/09/untitled-161.jpg?w=600" alt="Untitled-16"   /></p>
<p>17. ทำการ Install vSphere client</p>
<p><img class="aligncenter size-full wp-image-60" title="Untitled-17" src="http://remixman.files.wordpress.com/2009/09/untitled-171.jpg?w=600" alt="Untitled-17"   /></p>
<p>18. เมื่อ Install เสร็จแล้ว ให้เปิดโปรแกรม vSphere client จากนั้นให้ใส่ IP ของเครื่อง server แล้วใส่ Username เป็น root ตามด้วยใส่ Password ที่ตั้งไว้ก่อนหน้านี้</p>
<p><img class="aligncenter size-full wp-image-61" title="Untitled-18" src="http://remixman.files.wordpress.com/2009/09/untitled-18.jpg?w=600" alt="Untitled-18"   /></p>
<p>19. เมื่อติดต่อกับเครื่อง server ได้แล้ว โปรแกรม vSphere client จะปรากฏหน้าจอดังภาพ</p>
<p><img class="aligncenter size-full wp-image-62" title="Untitled-19" src="http://remixman.files.wordpress.com/2009/09/untitled-19.jpg?w=600" alt="Untitled-19"   /></p>
<br />Posted in Virtualization  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=3&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/09/16/how-to-install-vmware-esxi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-1.jpg" medium="image">
			<media:title type="html">Untitled-1</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-2.jpg" medium="image">
			<media:title type="html">Untitled-2</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-3.jpg" medium="image">
			<media:title type="html">Untitled-3</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-4.jpg" medium="image">
			<media:title type="html">Untitled-4</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-5.jpg" medium="image">
			<media:title type="html">Untitled-5</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-6.jpg" medium="image">
			<media:title type="html">Untitled-6</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-71.jpg" medium="image">
			<media:title type="html">OS_Untitled-7</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/os_untitled-81.jpg" medium="image">
			<media:title type="html">OS_Untitled-8</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-9.jpg" medium="image">
			<media:title type="html">Untitled-9</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-10.jpg" medium="image">
			<media:title type="html">Untitled-10</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-11.jpg" medium="image">
			<media:title type="html">Untitled-11</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-12.jpg" medium="image">
			<media:title type="html">Untitled-12</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-13.jpg" medium="image">
			<media:title type="html">Untitled-13</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-14.jpg" medium="image">
			<media:title type="html">Untitled-14</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-15.jpg" medium="image">
			<media:title type="html">Untitled-15</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-161.jpg" medium="image">
			<media:title type="html">Untitled-16</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-171.jpg" medium="image">
			<media:title type="html">Untitled-17</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-18.jpg" medium="image">
			<media:title type="html">Untitled-18</media:title>
		</media:content>

		<media:content url="http://remixman.files.wordpress.com/2009/09/untitled-19.jpg" medium="image">
			<media:title type="html">Untitled-19</media:title>
		</media:content>
	</item>
		<item>
		<title>ผะหมี</title>
		<link>http://remixman.wordpress.com/2009/04/05/%e0%b8%9c%e0%b8%b0%e0%b8%ab%e0%b8%a1%e0%b8%b5/</link>
		<comments>http://remixman.wordpress.com/2009/04/05/%e0%b8%9c%e0%b8%b0%e0%b8%ab%e0%b8%a1%e0%b8%b5/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 14:24:16 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[เกม]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/2009/04/05/%e0%b8%9c%e0%b8%b0%e0%b8%ab%e0%b8%a1%e0%b8%b5</guid>
		<description><![CDATA[        วันนี้มาด้วยหัวข้องงๆเล็กน้อย แต่รับรองว่ามีความสนุกครับ ผะหมีเป็นการทายปัญหาอย่างหนึ่งครับ อาจจะมีทั้งให้คำกลอนมา หรือว่าให้รูปภาพ แล้วให้ทายว่ามันเป็นอะไร ตัวอย่างของรูปภาพลองนึกถึงรายการชิงร้อยชิงล้านเมื่อสมัยก่อนน่ะครับ ที่มีเปิดภาพแล้วให้ทายคำอะไรแบบนั้นเลย ผะหมีเป็นการละเล่นอย่างหนึ่งที่มีมานานพอสมควรแล้วล่ะ แต่เชื่อว่าหลายๆคนอาจจะไม่เคยได้ยิน         ตอนที่ผมอยู่ม.6 ก็มีช่วงนึงที่สำนักงานเขตบางกอกใหญ่(ถ้าจำไม่ผิด) จัดการแข่งขัน แล้วก็ให้เด็กนักเรียนหลายๆโรงเรียนเข้าไปแข่งกันทายปัญหาผะหมี ซึ่งผมก็ได้มีโอกาสไปแข่งกับเขาเหมือนกัน แต่ว่ามีแค่โอกาสไปแข่ง แต่ไม่ได้แข่ง บังเอิญว่าอาจารย์ก็ส่งใบสมัครไปให้แล้ว แต่ทางนั้นบอกว่าไม่ได้รับท่าเดียวเลย ผมกับเพื่อนทีมเดียวกันที่ไปก็เลยไม่ได้แข่งซะงั้น แต่ก็เลยถือโอกาสนั่งดูคนอื่นแข่ง (จริงๆแล้วออกมาตอนคาบที่มีเรียน ก็เลยถือโอกาสโดดซะมากกว่า)         แล้วก็พอดีว่าช่วงก่อนจะไปแข่งอาจารย์ก็ได้เอาหนังสือที่รวมปัญหาผะหมีเอาไว้มาให้พวกผมได้อ่านเตรียมตัวไปแข่ง(ไปอย่างเดียว) ผมเห็นว่ามีหลายๆปัญหาที่ฮาแล้วก็กวนดีก็เลยแสกนเอาเก็บเอาไว้ วันนี้ก็เลยจะเอามาให้ลองเล่นกันครับ ง่ายๆก็คือดูรูปแล้วตอบว่ามันคืออะไร ผมจะลองเล่นให้ดูเป็นตัวอย่างก่อนซัก 2-3 ภาพครับ แล้วที่เหลืออยากให้ลองเล่นกันก่อน ส่วนเฉลยผมจะแอบแปะไว้ข้างล่างครับ เริ่มด้วยรูปแรกเลย รูปนี้ถ้าให้ลองทายกันเองก่อน ก็คงจะยากซักนิดนึง คำตอบของมันก็คือ แมว + (กัน)gun แล้วก็ผวนกลับมาก็จะได้เป็นคำว่า&#34;มันแกว&#34;ครับ รูปที่สอง รูปนี้เก็ตยากนิดนึง มันคือคำว่า &#34;ตองอู&#34; -*- รูปที่สาม อันนี้ก็ฮาเหมือนกัน อาหาร แล้วก็เป็นคำผวน คำตอบของมันก็คือ หาม + [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=244&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!87085A1545329383!506" class="bvMsg">
<div>
<p>        วันนี้มาด้วยหัวข้องงๆเล็กน้อย แต่รับรองว่ามีความสนุกครับ ผะหมีเป็นการทายปัญหาอย่างหนึ่งครับ อาจจะมีทั้งให้คำกลอนมา หรือว่าให้รูปภาพ แล้วให้ทายว่ามันเป็นอะไร ตัวอย่างของรูปภาพลองนึกถึงรายการชิงร้อยชิงล้านเมื่อสมัยก่อนน่ะครับ ที่มีเปิดภาพแล้วให้ทายคำอะไรแบบนั้นเลย ผะหมีเป็นการละเล่นอย่างหนึ่งที่มีมานานพอสมควรแล้วล่ะ แต่เชื่อว่าหลายๆคนอาจจะไม่เคยได้ยิน </p>
<p>        ตอนที่ผมอยู่ม.6 ก็มีช่วงนึงที่สำนักงานเขตบางกอกใหญ่(ถ้าจำไม่ผิด) จัดการแข่งขัน แล้วก็ให้เด็กนักเรียนหลายๆโรงเรียนเข้าไปแข่งกันทายปัญหาผะหมี ซึ่งผมก็ได้มีโอกาสไปแข่งกับเขาเหมือนกัน แต่ว่ามีแค่โอกาสไปแข่ง แต่ไม่ได้แข่ง บังเอิญว่าอาจารย์ก็ส่งใบสมัครไปให้แล้ว แต่ทางนั้นบอกว่าไม่ได้รับท่าเดียวเลย ผมกับเพื่อนทีมเดียวกันที่ไปก็เลยไม่ได้แข่งซะงั้น แต่ก็เลยถือโอกาสนั่งดูคนอื่นแข่ง (จริงๆแล้วออกมาตอนคาบที่มีเรียน ก็เลยถือโอกาสโดดซะมากกว่า) </p>
<p>        แล้วก็พอดีว่าช่วงก่อนจะไปแข่งอาจารย์ก็ได้เอาหนังสือที่รวมปัญหาผะหมีเอาไว้มาให้พวกผมได้อ่านเตรียมตัวไปแข่ง(ไปอย่างเดียว) ผมเห็นว่ามีหลายๆปัญหาที่ฮาแล้วก็กวนดีก็เลยแสกนเอาเก็บเอาไว้ วันนี้ก็เลยจะเอามาให้ลองเล่นกันครับ ง่ายๆก็คือดูรูปแล้วตอบว่ามันคืออะไร ผมจะลองเล่นให้ดูเป็นตัวอย่างก่อนซัก 2-3 ภาพครับ แล้วที่เหลืออยากให้ลองเล่นกันก่อน ส่วนเฉลยผมจะแอบแปะไว้ข้างล่างครับ </p>
<p align="center">เริ่มด้วยรูปแรกเลย </p>
<p style="text-align:center;"><img src="http://remixman.exteen.com/images/08.gif" border="0" /> </p>
<p style="text-align:center;">รูปนี้ถ้าให้ลองทายกันเองก่อน ก็คงจะยากซักนิดนึง คำตอบของมันก็คือ แมว + (กัน)gun แล้วก็ผวนกลับมาก็จะได้เป็นคำว่า&quot;มันแกว&quot;ครับ </p>
<p style="text-align:center;">รูปที่สอง </p>
<p style="text-align:center;"><img src="http://remixman.exteen.com/images/03.gif" border="0" /> </p>
<p style="text-align:center;">รูปนี้เก็ตยากนิดนึง มันคือคำว่า &quot;ตองอู&quot; -*- </p>
<p style="text-align:center;">รูปที่สาม </p>
<p style="text-align:center;"><img src="http://remixman.exteen.com/images/10.gif" border="0" /> </p>
<p style="text-align:center;">อันนี้ก็ฮาเหมือนกัน อาหาร แล้วก็เป็นคำผวน คำตอบของมันก็คือ หาม + ฉลู แล้วก็ผวนจะได้เป็น หูฉลาม (เอากับมันสิ) </p>
<p style="text-align:center;" align="left">จะเห็นว่าคำตอบนั้นมีทั้งที่มาจากภาษาอังกฤษ มีทั้งเป็นคำผวนและอื่นๆอีกมากมาย ตามแต่คนคิดขึ้นมาจะเล่น ซึ่งบวกได้เลยว่าหลายๆอันกวนมาก ก็ที่เหลือผมจะให้ลองทายกันเองนะครับ แต่ผมจะเขียนคำใบ้ไว้ให้แล้วกัน </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/01.gif" border="0" /> </p>
<p style="text-align:center;" align="left">1. เป็นชื่อประเทศครับ (คำผวน) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/02.gif" border="0" /> </p>
<p style="text-align:center;" align="left">2. ชื่อสถานที่ในกรุงเทพนี่แหละ เดาไม่ยาก </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/04.gif" border="0" /> </p>
<p style="text-align:center;" align="left">3. เป็นสัตว์ (คำผวน) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/05.gif" border="0" /> </p>
<p style="text-align:center;" align="left">4. จังหวัดในประเทศไทย (ผวนอีกแล้ว) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/06.gif" border="0" /> </p>
<p style="text-align:center;" align="left">5. ของใช้ที่มีกันทุกคน (คำผวน) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/09.gif" border="0" /> </p>
<p style="text-align:center;" align="left">6. ชื่อสถานที่ครับ (รูปมันก็บอกแล้วเนอะ -*-) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/11.gif" border="0" /> </p>
<p style="text-align:center;" align="left">7. ใบ้ก็รู้เลย ไม่ใบ้แล้วกันอันนี้ </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/12.gif" border="0" /> </p>
<p style="text-align:center;" align="left">8. นารุโตะ (ใบ้ซะขนาดนี้แล้ว) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/13.gif" border="0" /> </p>
<p style="text-align:center;" align="left">9. ปลาชนิดหนึ่งครับ (ยากอ่ะอันนี้) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/14.gif" border="0" /> </p>
<p style="text-align:center;" align="left">10. อันนี้เห็นรูปคงเก็ตเลย </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/15.gif" border="0" /> </p>
<p style="text-align:center;" align="left">11. เป็นสกุลเงินครับ (คำผวน) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"><img src="http://remixman.exteen.com/images/17.gif" border="0" /> </p>
<p style="text-align:center;" align="left">12. ผักหรือผลไม้(คำผวน) </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left"> </p>
<p style="text-align:center;" align="left">เฉลยตามข้อเลยนะครับ (ทำแถบดำเอาจะเห็นคำตอบด้านล่าง) </p>
<p style="text-align:center;" align="left"><font color="#ffffff">1. ในรูปชี้หู กับชี้ดิน ก็เลยเป็น เอีย(ear)+ดิน ผวนก็เป็น &quot;อินเดีย&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">2. &quot;สี่กั๊ก เสาชิงช้า&quot; ตรงๆเลยแต่ก็เล่นคำนิดหน่อย</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">3. เป็นรูป หมู+จา(jar) ผวนก็เป็น &quot;หมาจู&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">4. คล้ายๆข้อที่แล้วครับ ปีน+จา(jar) ผวนเป็น &quot;ปราจีน&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">5. อันนี้ฮาสุดๆ ในรูปเป็นคนลาวครับ สังเกตุจากคำพูด ก็เลยเป็น ลาว+ท้อง ผวนเป็น &quot;รองเท้า&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">6. เป็น หัวหมา กับ ก(ได่) รวมกันเลยเป็น &quot;หัวหมาก&quot; (ซะงั้น)</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">7. ปลา two =&gt; &quot;ปลาทู&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">8. นิล ที่แปลว่าสีดำ กับจา(jar) รวมเป็น นิลจา =&gt; &quot;นินจา&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">9. &quot;ปลาโลมา&quot; ครับ โลมา แปลว่าขน</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">10. &quot;ร หัน&quot; (รร) ง่ายๆงี้แหละ</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">11. มีวงรี กับปูก็เลยเป็น รี+ปู ผวนเป็น &quot;รูปี&quot;</font> </p>
<p style="text-align:center;" align="left"><font color="#ffffff">12. อันนี้ก็ฮา ในรูปเป็นฟองทักทายกัน ฟอง+ทัก ผวนเป็น &quot;ฟักทอง&quot; 555</font> </div>
</div>
<br />Posted in เกม  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/244/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/244/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=244&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/04/05/%e0%b8%9c%e0%b8%b0%e0%b8%ab%e0%b8%a1%e0%b8%b5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>

		<media:content url="http://remixman.exteen.com/images/08.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/03.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/10.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/01.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/02.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/04.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/05.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/06.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/09.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/11.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/12.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/13.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/14.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/15.gif" medium="image" />

		<media:content url="http://remixman.exteen.com/images/17.gif" medium="image" />
	</item>
		<item>
		<title>วัฒนธรรมเฮโล</title>
		<link>http://remixman.wordpress.com/2009/04/05/%e0%b8%a7%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%98%e0%b8%a3%e0%b8%a3%e0%b8%a1%e0%b9%80%e0%b8%ae%e0%b9%82%e0%b8%a5/</link>
		<comments>http://remixman.wordpress.com/2009/04/05/%e0%b8%a7%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%98%e0%b8%a3%e0%b8%a3%e0%b8%a1%e0%b9%80%e0%b8%ae%e0%b9%82%e0%b8%a5/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 18:22:53 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/2009/04/05/%e0%b8%a7%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%98%e0%b8%a3%e0%b8%a3%e0%b8%a1%e0%b9%80%e0%b8%ae%e0%b9%82%e0%b8%a5</guid>
		<description><![CDATA[        ช่วงนี้คำนี้เป็นคำฮิตที่ติดปากผมมากที่สุดคำหนึ่ง (มากสุดยังอุตส่าห์มีหลายคำ = =) สำหรับคนที่ยังงงกับความหมายของคำว่าเฮโล ก็จะขออธิบายสั้นๆตรงนี้ก่อนนะครับ ว่าเฮโลคืออาการของการแห่กันไป ชาวบ้านเขาว่ายังตูก็ว่าแบบเขาบ้าง สาเหตุที่คำนี้เริ่มติดปากผม เพราะพักหลังนี้ผมมักจะเห็นวัฒนธรรมนี้อยู่ทั่วไป แล้วก็ไม่ค่อยเห็นด้วยเท่าไหร่ ที่หลายคนกลับยึดถือวัฒนธรรมแบบนี้           เคยสังเกตุมั้ยครับว่าเวลามีอะไรฮิตอะไรดังขึ้นมาที ทุกคนก็จะต้องแห่กันไปทำตามกันหมด แล้วพอไอเจ้าอะไรที่ว่ามันเลิกฮิตมันเลิกดังก็จะไม่มีใครสนใจเหลียวแลอีก ยกตัวอย่างง่ายๆก็อย่างของเล่นพอมีอะไรฮิตขึ้นมา ทุกคนก็จะต้องพยายามจับจองเป็นเจ้าของหามาเล่น แต่พอหมดหน้าฮิตเมื่อไหร่ ของเล่นเหล่านั้นก็จะถูกเอามาโละราคาหั่นแหลกเพราะว่าไม่มีคนซื้อ (ไปมัวซื้ออันใหม่ที่ฮิตกว่า) ที่เห็นๆตอนนี้ก็เจ้า Rubik นี่แหละ ขายกันเกลื่อนเมือง ผมก็เลยไม่เข้าใจว่าแต่ละคนสนุกที่ได้เล่นมันจริงๆหรือเปล่า หรือแค่เล่นตามที่เขาฮิตกันไปแค่นั้นเอง           กรณีศึกษาที่ 2 ก็เป็นเรื่องของพวกกีฬา มีอยู่ช่วงนึงที่ภราดรกำลังฮิตมาก เปิดทีวีช่องไหนก็มีแต่พ่อแม่ส่งลูกไปเรียนเทนนิส เพื่อหวังจะชนะรายการแข่งใหญ่ได้เงินมาบาทยังพี่บอลเขามั่ง แล้วพอคนอื่นดังก็เปลี่ยนไปเล่นอย่างอื่นอีก แล้วจะเก่งซักอันมั้ยเนี่ย?           กรณีศึกษาที่ 3 การเลือกคณะและอาชีพ ผมว่ามันก็ไม่แปลก แล้วก็ไม่ผิดนะ ที่เวลาเราเห็นคนนู้นคนนี้ประสบความสำเร็จ แล้วจะทำตามน่ะ แต่ว่าหลายๆอย่างมันก็เกินไปแล้วก็ไม่พอดีเอาซะเลย หลายคนไม่เคยคิดว่าตัวเองชอบอะไร ตัวเองทำอะไรได้ดี รู้แต่ว่าทำไอโน้นไอนี่แล้วเงินดี ทำไอนี่แล้วไส้แห้งไม่เอาหรอก โดยที่กลับไม่ได้ดูตัวเองว่าเหมาะสมรึเปล่ากับสิ่งเหล่านั้น เรื่องเงินเป็นเรื่องที่สำคัญก็จริง [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=245&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!87085A1545329383!504" class="bvMsg">
<div>        ช่วงนี้คำนี้เป็นคำฮิตที่ติดปากผมมากที่สุดคำหนึ่ง (มากสุดยังอุตส่าห์มีหลายคำ = =) สำหรับคนที่ยังงงกับความหมายของคำว่าเฮโล ก็จะขออธิบายสั้นๆตรงนี้ก่อนนะครับ ว่าเฮโลคืออาการของการแห่กันไป ชาวบ้านเขาว่ายังตูก็ว่าแบบเขาบ้าง สาเหตุที่คำนี้เริ่มติดปากผม เพราะพักหลังนี้ผมมักจะเห็นวัฒนธรรมนี้อยู่ทั่วไป แล้วก็ไม่ค่อยเห็นด้วยเท่าไหร่ ที่หลายคนกลับยึดถือวัฒนธรรมแบบนี้</div>
<div> </div>
<div>        เคยสังเกตุมั้ยครับว่าเวลามีอะไรฮิตอะไรดังขึ้นมาที ทุกคนก็จะต้องแห่กันไปทำตามกันหมด แล้วพอไอเจ้าอะไรที่ว่ามันเลิกฮิตมันเลิกดังก็จะไม่มีใครสนใจเหลียวแลอีก ยกตัวอย่างง่ายๆก็อย่างของเล่นพอมีอะไรฮิตขึ้นมา ทุกคนก็จะต้องพยายามจับจองเป็นเจ้าของหามาเล่น แต่พอหมดหน้าฮิตเมื่อไหร่ ของเล่นเหล่านั้นก็จะถูกเอามาโละราคาหั่นแหลกเพราะว่าไม่มีคนซื้อ (ไปมัวซื้ออันใหม่ที่ฮิตกว่า) ที่เห็นๆตอนนี้ก็เจ้า Rubik นี่แหละ ขายกันเกลื่อนเมือง ผมก็เลยไม่เข้าใจว่าแต่ละคนสนุกที่ได้เล่นมันจริงๆหรือเปล่า หรือแค่เล่นตามที่เขาฮิตกันไปแค่นั้นเอง </div>
<div> </div>
<div>        กรณีศึกษาที่ 2 ก็เป็นเรื่องของพวกกีฬา มีอยู่ช่วงนึงที่ภราดรกำลังฮิตมาก เปิดทีวีช่องไหนก็มีแต่พ่อแม่ส่งลูกไปเรียนเทนนิส เพื่อหวังจะชนะรายการแข่งใหญ่ได้เงินมาบาทยังพี่บอลเขามั่ง แล้วพอคนอื่นดังก็เปลี่ยนไปเล่นอย่างอื่นอีก แล้วจะเก่งซักอันมั้ยเนี่ย?</div>
<div> </div>
<div>        กรณีศึกษาที่ 3 การเลือกคณะและอาชีพ ผมว่ามันก็ไม่แปลก แล้วก็ไม่ผิดนะ ที่เวลาเราเห็นคนนู้นคนนี้ประสบความสำเร็จ แล้วจะทำตามน่ะ แต่ว่าหลายๆอย่างมันก็เกินไปแล้วก็ไม่พอดีเอาซะเลย หลายคนไม่เคยคิดว่าตัวเองชอบอะไร ตัวเองทำอะไรได้ดี รู้แต่ว่าทำไอโน้นไอนี่แล้วเงินดี ทำไอนี่แล้วไส้แห้งไม่เอาหรอก โดยที่กลับไม่ได้ดูตัวเองว่าเหมาะสมรึเปล่ากับสิ่งเหล่านั้น เรื่องเงินเป็นเรื่องที่สำคัญก็จริง อะไรที่เงินดีก็แห่กันเข้าไปทำ แล้วก็แย่งงานกันทำ แล้วเงินมันจะยังดีอยู่มั้ย แต่กลับกันสิ่งที่เราทำได้ดีจริงๆ โอกาสที่มันจะได้เงินดีก็มีมากกว่าเห็นๆ แต่ทำไมไม่เลือกกัน?</div>
<div> </div>
<div>        กรณีศึกษาที่ 4 วัฒนธรรม ประเพณีนิยม ก็นิยมตามชื่อแหละครับ ไม่ว่ามันจะดีหรือไม่ดี แต่ถ้าชาวบ้านเขาทำเราก็เอามั่ง แต่ก็น่าแปลกใจที่ส่วนใหญ่แล้วเรื่องดีๆมักจะไม่ทำตามกัน ก็ไม่เข้าใจว่าทำไม</div>
<div> </div>
<div>        สิ่งที่ผมเชื่อว่าเป็นสาเหตุสำคัญที่สุดของวัฒนธรรมนี้คือ ความไม่เชื่อใจในตัวเอง ก็เลยจะต้องทำตามชาวบ้านไว้ก่อนน่าจะเป็นที่ยอมรับที่สุด ซึ่งก็ถูกส่วนหนึ่งเหมือนกัน แต่มันก็ไม่ได้ถูกทั้งหมดอย่างแน่นอน สิ่งที่ผมอยากบอกก็คือ คนเราจะต้องเชื่อในตัวเองบ้าง แต่ก็ไม่ถึงกับมากเวอร์ เพราะสิ่งนั้นจะทำให้เรามองเห็นตัวเอง และเข้าใจตัวเองได้มากขึ้น อย่ามัวแต่หลงไปกับสิ่งรอบข้างที่พยายามทำให้เราเชื่อ ลองชั่งน้ำหนักกันดูก่อน ว่าอะไรเหมาะสมกับเรามากที่สุด มันจะทำให้ชีวิตเราไม่ต้องถูกกระแสที่ไม่เข้ากับเราพัดพาไป</div>
<div> </div>
<div>        ผมเองก็ยังเด็ก ไม่ได้มีประสบการณ์มากมายอะไร ไม่ได้พบเห็นมาซะทุกอย่าง ไม่ได้เข้าใจอะไรทุกเรื่อง เรื่องนี้ก็เป็นแค่เรื่องที่ผมเชื่อ ก็เท่านั้นเอง ซีเรียสไปมั้ยเนี่ย เหอๆ</div>
</div>
<br />Posted in Uncategorized  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/245/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/245/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/245/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=245&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/04/05/%e0%b8%a7%e0%b8%b1%e0%b8%92%e0%b8%99%e0%b8%98%e0%b8%a3%e0%b8%a3%e0%b8%a1%e0%b9%80%e0%b8%ae%e0%b9%82%e0%b8%a5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>
	</item>
		<item>
		<title>เหตุเกิด ณ ร้านอาหารตามสั่ง</title>
		<link>http://remixman.wordpress.com/2009/01/12/%e0%b9%80%e0%b8%ab%e0%b8%95%e0%b8%b8%e0%b9%80%e0%b8%81%e0%b8%b4%e0%b8%94-%e0%b8%93-%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%99%e0%b8%ad%e0%b8%b2%e0%b8%ab%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%aa/</link>
		<comments>http://remixman.wordpress.com/2009/01/12/%e0%b9%80%e0%b8%ab%e0%b8%95%e0%b8%b8%e0%b9%80%e0%b8%81%e0%b8%b4%e0%b8%94-%e0%b8%93-%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%99%e0%b8%ad%e0%b8%b2%e0%b8%ab%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%aa/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 12:51:31 +0000</pubDate>
		<dc:creator>Remixman</dc:creator>
				<category><![CDATA[ชีวิตพิสดาร]]></category>

		<guid isPermaLink="false">http://remixman.wordpress.com/2009/01/12/%e0%b9%80%e0%b8%ab%e0%b8%95%e0%b8%b8%e0%b9%80%e0%b8%81%e0%b8%b4%e0%b8%94-%e0%b8%93-%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%99%e0%b8%ad%e0%b8%b2%e0%b8%ab%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%aa</guid>
		<description><![CDATA[    จำได้ว่าก่อนหน้านี้ผมเคยอัพเจ้าเรื่องข้าวไข่เจียวที่เข้าใจผิดกันไปทีนึง มาวันนี้ผมก็จะขอเล่าเรื่องคล้ายกันนี้อีกและครับ เหตุการณ์เกิดเมื่อ 4-5 วันก่อน (จำไม่ค่อยได้) ที่ร้านอาหารตามสั่งร้านเดิมเลย (อีกแล้ว -*-)     เรื่องก็มีอยู่ว่าวันนี้ผมไม่ได้กินข้าวกลางวัน เพราะมัวแต่ไปนั่งเล่นอยู่ที่ห้องคอมที่ภาค ประมาณซักบ่าย 3 กว่าๆ ท้องผมก็เริ่มส่งสัญญาณมาบอกผมว่า ไม่ไหวแล้ว ขออะไรลงท้องหน่อย ผมก็เลยแว่บมาโรงอาหารที่ใกล้ที่สุด มองไปภายในโรงอาหาร เนื่องจากใกล้จะเย็นแล้ว หลายๆร้านก็ปิดกันไปแล้ว จะมีก็ร้านอาหารตามสั่งตรงทางเข้าที่ยังเปิดอยู่ ด้วยความสิ้นคิดที่ปกติผมมาสั่งร้านนี้ทีไรประมาณ 95% ของการสั่งของผมจะเป็นข้าวไข่เจียวหมูสับ และครั้งนี้ก็เป็นอีกหนึ่งครั้งใน 95%     ผมเข้าไปยืนหน้าร้านวันนี้มีป้าคนนึงแก่ๆมาคอยรับออเดอร์อยู่หน้าร้าน ป้าบอก &#8220;เขียนไว้เลยลูก&#8221; ผมก็เขียนข้าวไข่เจียวหมูสับลงไป แล้วสักพักอาหารจากในครัวก็เสร็จพอดี ป้าแกก็เลยเรียกคนที่สั่งมารับข้าว &#8220;กะเพรารวมมิตรได้แล้วค่า~~&#8221; ผมก็มองไปที่จานข้าวที่ป้าแกถือ ผมพินิจพิเคราะห์อยู่หลายที ไม่ว่าดูยังไงมันก็ข้าวผัดชัดๆ ไหงป้าแกบอกกะเพรารวมมิตรล่ะเนี่ย -*- ผมล่ะงงกับป้าแกจริงๆ หลังจากนั้นผมก็ยื่นที่ผมสั่งให้ป้าไป แล้วก็ไปนั่งรออยู่แถวๆหน้าร้าน ช่วงนั้นผมหิวมากเลยแหละ กำลังคิดกับตัวเองว่าไม่น่าอดมื้อกลางวันไปเลย แล้วก็นั่งรอไปเรื่อยๆ รอว่าเมื่อไหร่ของผมจะเสร็จ     &#8220;xxxไข่เจียวค่า~~&#8221; ผมฟัง 2-3 พยางค์แรกไม่ชัด เนื่องจากกำลังมึนได้ที่เพราะความหิว [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=246&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="msgcns!87085A1545329383!478" class="bvMsg">
<div>    จำได้ว่าก่อนหน้านี้ผมเคยอัพเจ้าเรื่องข้าวไข่เจียวที่เข้าใจผิดกันไปทีนึง มาวันนี้ผมก็จะขอเล่าเรื่องคล้ายกันนี้อีกและครับ เหตุการณ์เกิดเมื่อ 4-5 วันก่อน (จำไม่ค่อยได้) ที่ร้านอาหารตามสั่งร้านเดิมเลย (อีกแล้ว -*-)</div>
<div></div>
<div>    เรื่องก็มีอยู่ว่าวันนี้ผมไม่ได้กินข้าวกลางวัน เพราะมัวแต่ไปนั่งเล่นอยู่ที่ห้องคอมที่ภาค ประมาณซักบ่าย 3 กว่าๆ ท้องผมก็เริ่มส่งสัญญาณมาบอกผมว่า ไม่ไหวแล้ว ขออะไรลงท้องหน่อย ผมก็เลยแว่บมาโรงอาหารที่ใกล้ที่สุด มองไปภายในโรงอาหาร เนื่องจากใกล้จะเย็นแล้ว หลายๆร้านก็ปิดกันไปแล้ว จะมีก็ร้านอาหารตามสั่งตรงทางเข้าที่ยังเปิดอยู่ ด้วยความสิ้นคิดที่ปกติผมมาสั่งร้านนี้ทีไรประมาณ 95% ของการสั่งของผมจะเป็นข้าวไข่เจียวหมูสับ และครั้งนี้ก็เป็นอีกหนึ่งครั้งใน 95%</div>
<div></div>
<div>    ผมเข้าไปยืนหน้าร้านวันนี้มีป้าคนนึงแก่ๆมาคอยรับออเดอร์อยู่หน้าร้าน ป้าบอก &#8220;เขียนไว้เลยลูก&#8221; ผมก็เขียนข้าวไข่เจียวหมูสับลงไป แล้วสักพักอาหารจากในครัวก็เสร็จพอดี ป้าแกก็เลยเรียกคนที่สั่งมารับข้าว &#8220;กะเพรารวมมิตรได้แล้วค่า~~&#8221; ผมก็มองไปที่จานข้าวที่ป้าแกถือ ผมพินิจพิเคราะห์อยู่หลายที ไม่ว่าดูยังไงมันก็ข้าวผัดชัดๆ ไหงป้าแกบอกกะเพรารวมมิตรล่ะเนี่ย -*- ผมล่ะงงกับป้าแกจริงๆ หลังจากนั้นผมก็ยื่นที่ผมสั่งให้ป้าไป แล้วก็ไปนั่งรออยู่แถวๆหน้าร้าน ช่วงนั้นผมหิวมากเลยแหละ กำลังคิดกับตัวเองว่าไม่น่าอดมื้อกลางวันไปเลย แล้วก็นั่งรอไปเรื่อยๆ รอว่าเมื่อไหร่ของผมจะเสร็จ</div>
<div></div>
<div>    &#8220;xxxไข่เจียวค่า~~&#8221; ผมฟัง 2-3 พยางค์แรกไม่ชัด เนื่องจากกำลังมึนได้ที่เพราะความหิว แต่ก็จับใจความได้ว่าไข่เจียวแหละ ผมก็เลยไปรับอาหาร แม่เจ้ามันกลายเป็นข้าวกะเพราหมู ไข่เจียวเฉยเลย ผมสั่งข้าวไข่เจียวหมูสับไปนะเนี่ย แต่ผมก็ไม่คิดอะไรมากก็พอทำใจไว้แล้วแหละ ขนาดข้าวผัดป้าแกยังบอกว่าเป็นกะเพรารวมมิตรเลย จะเข้าใจไข่เจียวหมูสับผมเป็นกะเพราะไข่เจียวก็ไม่น่าแปลก บวกกับความหิวยกกำลังสามของผม ผมก็เลยรีบจ่ายตังแล้วก็กลับมานั่งที่ซัดข้าวด้วยความหิวโหย</div>
<div></div>
<div>    ผมกินไปได้ประมาณครึ่งนึงแหละ จู่ๆก็มีผู้หญิงคนนึงเดินไปที่หน้าร้านแล้วก็บอกว่าของแกสั่งไปตั้งนานแล้วยังไม่เห็นได้เลย ทำไมบางคนสั่งทีหลังยังได้ไปแล้ว ป้าแกก็เลยถามว่าสั่งอะไรไป ปรากฎว่าเขาสั่งกะเพราหมูไข่เจียว (เอาล่ะสิ นี่ตูไปฉกเขามาเรอะเนี่ย เพิ่งจะรู้ตัว) ป้าแกก็เลยทำให้ใหม่อีกจาน แต่เรื่องยังไม่จบแค่นั้นครับ ตอนที่ผมกำลังจะกินเสร็จ ป้าแกก็ตะโกนว่า &#8220;ข้าวไข่เจียวหมูสับค่า&#8221; นั่นไงตูว่าแล้ว สรุปว่าเข้าใจผิดไปเองล่ะสิเนี่ย ทำไงดี ผมตัดสินใจอยู่ครู่หนึ่ง (นับรวมได้ประมาณ 5.348 วินาที) ก็เลยไปบอกป้าแกว่าผมมารับผิดจานไป ไข่เจียวอันนี้ของผมเองแหละ แล้วผมก็ล้วงกระเป๋าที่จะจ่ายให้ป้าแก แต่ป้าแกก็บอกไม่เป็นไรลูกๆ ผมก็ยังรู้สึกผิดนิดๆก็เลยถามไปว่า แล้วไข่เจียวนี่ล่ะครับ แต่ป้าแกก็ยังย้ำคำเดิมว่าไม่เป็นไร ผมก็เลยกลับมานั่งกินต่อด้วยความไม่สบายใจนิดหน่อยพอกินเสร็จก็รีบกลับไปนั่งเล่นคอมต่อ</div>
<div></div>
<div>    การอัพ space ครั้งนี้ต้องขอบคุณคุณป้าคนขายมาก (ผมจำชื่อร้านไม่ได้แฮะ) ที่อุตสาห์ไม่เรียกเก็บผมเพิ่ม เพราะผมผิดเองแหละที่ไปฉกชาวบ้านมา แต่ดันคิดว่าป้าแกอ่านของผมผิด ผมนี่แย่จริงๆ</div>
<div></div>
<div>ปล. ตอนนี้ตัวหนังสือใหญ่น่าจะอ่านกันง่ายขึ้นนะครับ เหอๆ</div>
</div>
<br />Posted in ชีวิตพิสดาร  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/remixman.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/remixman.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/remixman.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/remixman.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/remixman.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/remixman.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/remixman.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/remixman.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=remixman.wordpress.com&amp;blog=9463264&amp;post=246&amp;subd=remixman&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://remixman.wordpress.com/2009/01/12/%e0%b9%80%e0%b8%ab%e0%b8%95%e0%b8%b8%e0%b9%80%e0%b8%81%e0%b8%b4%e0%b8%94-%e0%b8%93-%e0%b8%a3%e0%b9%89%e0%b8%b2%e0%b8%99%e0%b8%ad%e0%b8%b2%e0%b8%ab%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b2%e0%b8%a1%e0%b8%aa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b8d93a4541014c01ab954a4dd92df323?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">haoremixman</media:title>
		</media:content>
	</item>
	</channel>
</rss>
