<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wikis.ece.iastate.edu/cpre584/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pm429015</id>
	<title>Cpre584 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wikis.ece.iastate.edu/cpre584/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pm429015"/>
	<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Special:Contributions/Pm429015"/>
	<updated>2026-08-14T16:01:30Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=358</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=358"/>
		<updated>2012-02-15T03:57:54Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 (New Algorithm) ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm Description of Sobel&#039;s Algorithm] - This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   * files &lt;br /&gt;
** mypgm.h - header file  &lt;br /&gt;
** sobel.c - sobel algorithm &lt;br /&gt;
** Lena.pgm - image files&lt;br /&gt;
&lt;br /&gt;
 Sobel edge detection algorithm code with C&lt;br /&gt;
&lt;br /&gt;
 void sobel_filtering( ) {&lt;br /&gt;
     /* Spatial filtering of image data */&lt;br /&gt;
     /* Sobel filter (horizontal differentiation */&lt;br /&gt;
     /* Input: image1[y][x] ---- Outout: image2[y][x] */&lt;br /&gt;
  /* Definition of Sobel filter in horizontal direction */&lt;br /&gt;
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};&lt;br /&gt;
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};&lt;br /&gt;
  double pixel_value_x, pixel_value_y, pixel_value;&lt;br /&gt;
  double min, max;&lt;br /&gt;
  int x, y, i, j;  /* Loop variable */&lt;br /&gt;
  /* Initialization of image2[y][x] */&lt;br /&gt;
  x_size2 = x_size1;&lt;br /&gt;
  y_size2 = y_size1;&lt;br /&gt;
  for (y = 0; y &amp;lt; y_size2; y++) {&lt;br /&gt;
    for (x = 0; x &amp;lt; x_size2; x++){&lt;br /&gt;
      image2[y][x] = 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* Generation of image2 after linear transformtion */&lt;br /&gt;
   for (y = 1; y &amp;lt; y_size1 - 1; y++) {&lt;br /&gt;
     for (x = 1; x &amp;lt; x_size1 - 1; x++) {&lt;br /&gt;
       pixel_value_x = 0.0;&lt;br /&gt;
       pixel_value_y = 0.0;&lt;br /&gt;
        for (j = -1; j &amp;lt;= 1; j++) { &lt;br /&gt;
         for (i = -1; i &amp;lt;= 1; i++) {&lt;br /&gt;
               pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution&lt;br /&gt;
               pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution }      &lt;br /&gt;
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware  &lt;br /&gt;
      if (pixel_value &amp;gt;= 255)pixel_value=255;&lt;br /&gt;
      if (pixel_value &amp;lt;= 0)pixel_value=0;     &lt;br /&gt;
      image2[y][x] = (unsigned char)pixel_value;&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 main( )&lt;br /&gt;
 {&lt;br /&gt;
  load_image_data( );   /* Input of image1 */ &lt;br /&gt;
  sobel_filtering( );   /* Sobel filter is applied to image1 */&lt;br /&gt;
  save_image_data( );   /* Output of image2 */&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 8bit pgm file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
  100.27    0.04     0.04        1    40.11    40.11  sobel_filtering&lt;br /&gt;
  0.00      0.04     0.00        1     0.00     0.00  load_image_data&lt;br /&gt;
  0.00      0.04     0.00        1     0.00     0.00  save_image_data&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=357</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=357"/>
		<updated>2012-02-15T03:57:18Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm Description of Sobel&#039;s Algorithm] - This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   * files &lt;br /&gt;
** mypgm.h - header file  &lt;br /&gt;
** sobel.c - sobel algorithm &lt;br /&gt;
** Lena.pgm - image files&lt;br /&gt;
&lt;br /&gt;
 Sobel edge detection algorithm code with C&lt;br /&gt;
&lt;br /&gt;
 void sobel_filtering( ) {&lt;br /&gt;
     /* Spatial filtering of image data */&lt;br /&gt;
     /* Sobel filter (horizontal differentiation */&lt;br /&gt;
     /* Input: image1[y][x] ---- Outout: image2[y][x] */&lt;br /&gt;
  /* Definition of Sobel filter in horizontal direction */&lt;br /&gt;
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};&lt;br /&gt;
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};&lt;br /&gt;
  double pixel_value_x, pixel_value_y, pixel_value;&lt;br /&gt;
  double min, max;&lt;br /&gt;
  int x, y, i, j;  /* Loop variable */&lt;br /&gt;
  /* Initialization of image2[y][x] */&lt;br /&gt;
  x_size2 = x_size1;&lt;br /&gt;
  y_size2 = y_size1;&lt;br /&gt;
  for (y = 0; y &amp;lt; y_size2; y++) {&lt;br /&gt;
    for (x = 0; x &amp;lt; x_size2; x++){&lt;br /&gt;
      image2[y][x] = 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* Generation of image2 after linear transformtion */&lt;br /&gt;
   for (y = 1; y &amp;lt; y_size1 - 1; y++) {&lt;br /&gt;
     for (x = 1; x &amp;lt; x_size1 - 1; x++) {&lt;br /&gt;
       pixel_value_x = 0.0;&lt;br /&gt;
       pixel_value_y = 0.0;&lt;br /&gt;
        for (j = -1; j &amp;lt;= 1; j++) { &lt;br /&gt;
         for (i = -1; i &amp;lt;= 1; i++) {&lt;br /&gt;
               pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution&lt;br /&gt;
               pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution }      &lt;br /&gt;
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware  &lt;br /&gt;
      if (pixel_value &amp;gt;= 255)pixel_value=255;&lt;br /&gt;
      if (pixel_value &amp;lt;= 0)pixel_value=0;     &lt;br /&gt;
      image2[y][x] = (unsigned char)pixel_value;&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 main( )&lt;br /&gt;
 {&lt;br /&gt;
  load_image_data( );   /* Input of image1 */ &lt;br /&gt;
  sobel_filtering( );   /* Sobel filter is applied to image1 */&lt;br /&gt;
  save_image_data( );   /* Output of image2 */&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 8bit pgm file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
  100.27    0.04     0.04        1    40.11    40.11  sobel_filtering&lt;br /&gt;
  0.00      0.04     0.00        1     0.00     0.00  load_image_data&lt;br /&gt;
  0.00      0.04     0.00        1     0.00     0.00  save_image_data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 (New Algorithm)===&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
* files &lt;br /&gt;
** mypgm.h - header file  &lt;br /&gt;
** sobel.c - sobel algorithm &lt;br /&gt;
** Lena.pgm - image files&lt;br /&gt;
&lt;br /&gt;
 Sobel edge detection algorithm code with C&lt;br /&gt;
&lt;br /&gt;
 void sobel_filtering( ) {&lt;br /&gt;
     /* Spatial filtering of image data */&lt;br /&gt;
     /* Sobel filter (horizontal differentiation */&lt;br /&gt;
     /* Input: image1[y][x] ---- Outout: image2[y][x] */&lt;br /&gt;
  /* Definition of Sobel filter in horizontal direction */&lt;br /&gt;
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};&lt;br /&gt;
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};&lt;br /&gt;
  double pixel_value_x, pixel_value_y, pixel_value;&lt;br /&gt;
  double min, max;&lt;br /&gt;
  int x, y, i, j;  /* Loop variable */&lt;br /&gt;
  /* Initialization of image2[y][x] */&lt;br /&gt;
  x_size2 = x_size1;&lt;br /&gt;
  y_size2 = y_size1;&lt;br /&gt;
  for (y = 0; y &amp;lt; y_size2; y++) {&lt;br /&gt;
    for (x = 0; x &amp;lt; x_size2; x++){&lt;br /&gt;
      image2[y][x] = 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* Generation of image2 after linear transformtion */&lt;br /&gt;
   for (y = 1; y &amp;lt; y_size1 - 1; y++) {&lt;br /&gt;
     for (x = 1; x &amp;lt; x_size1 - 1; x++) {&lt;br /&gt;
       pixel_value_x = 0.0;&lt;br /&gt;
       pixel_value_y = 0.0;&lt;br /&gt;
        for (j = -1; j &amp;lt;= 1; j++) { &lt;br /&gt;
         for (i = -1; i &amp;lt;= 1; i++) {&lt;br /&gt;
               pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution&lt;br /&gt;
               pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution }      &lt;br /&gt;
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware  &lt;br /&gt;
      if (pixel_value &amp;gt;= 255)pixel_value=255;&lt;br /&gt;
      if (pixel_value &amp;lt;= 0)pixel_value=0;     &lt;br /&gt;
      image2[y][x] = (unsigned char)pixel_value;&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 main( )&lt;br /&gt;
 {&lt;br /&gt;
  load_image_data( );   /* Input of image1 */ &lt;br /&gt;
  sobel_filtering( );   /* Sobel filter is applied to image1 */&lt;br /&gt;
  save_image_data( );   /* Output of image2 */&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=355</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=355"/>
		<updated>2012-02-15T03:30:28Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm Description of Sobel&#039;s Algorithm] - This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
 &#039;&#039;&#039;80.80&#039;&#039;&#039;      0.15    0.15        1   145.44   175.53  sobel&lt;br /&gt;
 16.72      0.18    0.03  4706312     0.00     0.00  color_to_int&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  read_bmp&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  write_bmp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 (New Algorithm)===&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
 Sobel edge detection algorithm code with C&lt;br /&gt;
&lt;br /&gt;
 void sobel_filtering( ) {&lt;br /&gt;
     /* Spatial filtering of image data */&lt;br /&gt;
     /* Sobel filter (horizontal differentiation */&lt;br /&gt;
     /* Input: image1[y][x] ---- Outout: image2[y][x] */&lt;br /&gt;
  /* Definition of Sobel filter in horizontal direction */&lt;br /&gt;
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};&lt;br /&gt;
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};&lt;br /&gt;
  double pixel_value_x, pixel_value_y, pixel_value;&lt;br /&gt;
  double min, max;&lt;br /&gt;
  int x, y, i, j;  /* Loop variable */&lt;br /&gt;
  /* Initialization of image2[y][x] */&lt;br /&gt;
  x_size2 = x_size1;&lt;br /&gt;
  y_size2 = y_size1;&lt;br /&gt;
  for (y = 0; y &amp;lt; y_size2; y++) {&lt;br /&gt;
    for (x = 0; x &amp;lt; x_size2; x++){&lt;br /&gt;
      image2[y][x] = 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* Generation of image2 after linear transformtion */&lt;br /&gt;
   for (y = 1; y &amp;lt; y_size1 - 1; y++) {&lt;br /&gt;
     for (x = 1; x &amp;lt; x_size1 - 1; x++) {&lt;br /&gt;
       pixel_value_x = 0.0;&lt;br /&gt;
       pixel_value_y = 0.0;&lt;br /&gt;
        for (j = -1; j &amp;lt;= 1; j++) { &lt;br /&gt;
         for (i = -1; i &amp;lt;= 1; i++) {&lt;br /&gt;
               pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution&lt;br /&gt;
               pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution }      &lt;br /&gt;
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware  &lt;br /&gt;
      if (pixel_value &amp;gt;= 255)pixel_value=255;&lt;br /&gt;
      if (pixel_value &amp;lt;= 0)pixel_value=0;     &lt;br /&gt;
      image2[y][x] = (unsigned char)pixel_value;&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 main( )&lt;br /&gt;
 {&lt;br /&gt;
  load_image_data( );   /* Input of image1 */ &lt;br /&gt;
  sobel_filtering( );   /* Sobel filter is applied to image1 */&lt;br /&gt;
  save_image_data( );   /* Output of image2 */&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=354</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=354"/>
		<updated>2012-02-15T03:27:48Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm Description of Sobel&#039;s Algorithm] - This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
 &#039;&#039;&#039;80.80&#039;&#039;&#039;      0.15    0.15        1   145.44   175.53  sobel&lt;br /&gt;
 16.72      0.18    0.03  4706312     0.00     0.00  color_to_int&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  read_bmp&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  write_bmp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 (New Algorithm)===&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
 Sobel edge detection algorithm code with C&lt;br /&gt;
&lt;br /&gt;
 void sobel_filtering( ) {&lt;br /&gt;
     /* Spatial filtering of image data */&lt;br /&gt;
     /* Sobel filter (horizontal differentiation */&lt;br /&gt;
     /* Input: image1[y][x] ---- Outout: image2[y][x] */&lt;br /&gt;
  /* Definition of Sobel filter in horizontal direction */&lt;br /&gt;
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};&lt;br /&gt;
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};&lt;br /&gt;
  double pixel_value_x, pixel_value_y, pixel_value;&lt;br /&gt;
  double min, max;&lt;br /&gt;
  int x, y, i, j;  /* Loop variable */&lt;br /&gt;
  /* Initialization of image2[y][x] */&lt;br /&gt;
  x_size2 = x_size1;&lt;br /&gt;
  y_size2 = y_size1;&lt;br /&gt;
  for (y = 0; y &amp;lt; y_size2; y++) {&lt;br /&gt;
    for (x = 0; x &amp;lt; x_size2; x++){&lt;br /&gt;
      image2[y][x] = 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* Generation of image2 after linear transformtion */&lt;br /&gt;
   for (y = 1; y &amp;lt; y_size1 - 1; y++) {&lt;br /&gt;
     for (x = 1; x &amp;lt; x_size1 - 1; x++) {&lt;br /&gt;
       pixel_value_x = 0.0;&lt;br /&gt;
       pixel_value_y = 0.0;&lt;br /&gt;
       for (j = -1; j &amp;lt;= 1; j++) {&lt;br /&gt;
	    for (i = -1; i &amp;lt;= 1; i++) {&lt;br /&gt;
               pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution&lt;br /&gt;
               pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution&lt;br /&gt;
	    }      &lt;br /&gt;
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware  &lt;br /&gt;
      if (pixel_value &amp;gt;= 255)pixel_value=255;&lt;br /&gt;
      if (pixel_value &amp;lt;= 0)pixel_value=0;     &lt;br /&gt;
      image2[y][x] = (unsigned char)pixel_value;&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 main( )&lt;br /&gt;
 {&lt;br /&gt;
  load_image_data( );   /* Input of image1 */ &lt;br /&gt;
  sobel_filtering( );   /* Sobel filter is applied to image1 */&lt;br /&gt;
  save_image_data( );   /* Output of image2 */&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=353</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=353"/>
		<updated>2012-02-15T03:26:45Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm Description of Sobel&#039;s Algorithm] - This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
 &#039;&#039;&#039;80.80&#039;&#039;&#039;      0.15    0.15        1   145.44   175.53  sobel&lt;br /&gt;
 16.72      0.18    0.03  4706312     0.00     0.00  color_to_int&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  read_bmp&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  write_bmp&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 (New Algorithm)===&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
 Sobel edge detection algorithm code with C&lt;br /&gt;
&lt;br /&gt;
 void sobel_filtering( ) {&lt;br /&gt;
     /* Spatial filtering of image data */&lt;br /&gt;
     /* Sobel filter (horizontal differentiation */&lt;br /&gt;
     /* Input: image1[y][x] ---- Outout: image2[y][x] */&lt;br /&gt;
  /* Definition of Sobel filter in horizontal direction */&lt;br /&gt;
  int maskx[3][3] = {{-1,0,1},{-2,0,2},{-1,0,1}};&lt;br /&gt;
  int masky[3][3] = {{1,2,1},{0,0,0},{-1,-2,-1}};&lt;br /&gt;
  double pixel_value_x, pixel_value_y, pixel_value;&lt;br /&gt;
  double min, max;&lt;br /&gt;
  int x, y, i, j;  /* Loop variable */&lt;br /&gt;
  /* Initialization of image2[y][x] */&lt;br /&gt;
  x_size2 = x_size1;&lt;br /&gt;
  y_size2 = y_size1;&lt;br /&gt;
  for (y = 0; y &amp;lt; y_size2; y++) {&lt;br /&gt;
    for (x = 0; x &amp;lt; x_size2; x++){&lt;br /&gt;
      image2[y][x] = 0;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  /* Generation of image2 after linear transformtion */&lt;br /&gt;
  for (y = 1; y &amp;lt; y_size1 - 1; y++) {&lt;br /&gt;
    for (x = 1; x &amp;lt; x_size1 - 1; x++) {&lt;br /&gt;
      pixel_value_x = 0.0;&lt;br /&gt;
      pixel_value_y = 0.0;&lt;br /&gt;
      for (j = -1; j &amp;lt;= 1; j++) {&lt;br /&gt;
	    for (i = -1; i &amp;lt;= 1; i++) {&lt;br /&gt;
               pixel_value_x += image1[y+j][x+i] * maskx[j+1][i+1];// do x-convolution&lt;br /&gt;
               pixel_value_y += image1[y+j][x+i] * masky[j+1][i+1];// do y-convolution&lt;br /&gt;
	    }      &lt;br /&gt;
      pixel_value = (abs(pixel_value_x)+abs(pixel_value_y)); // easier to implement on hardware  &lt;br /&gt;
      if (pixel_value &amp;gt;= 255)pixel_value=255;&lt;br /&gt;
      if (pixel_value &amp;lt;= 0)pixel_value=0;     &lt;br /&gt;
      image2[y][x] = (unsigned char)pixel_value;&lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
 main( )&lt;br /&gt;
 {&lt;br /&gt;
  load_image_data( );   /* Input of image1 */ &lt;br /&gt;
  sobel_filtering( );   /* Sobel filter is applied to image1 */&lt;br /&gt;
  save_image_data( );   /* Output of image2 */&lt;br /&gt;
  return 0;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=288</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=288"/>
		<updated>2012-02-12T20:22:22Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
 gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
 ./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
 &#039;&#039;&#039;80.80&#039;&#039;&#039;      0.15    0.15        1   145.44   175.53  sobel&lt;br /&gt;
 16.72      0.18    0.03  4706312     0.00     0.00  color_to_int&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  read_bmp&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  write_bmp&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=287</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=287"/>
		<updated>2012-02-12T19:16:12Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %      cumulative  self             self     total           &lt;br /&gt;
    &lt;br /&gt;
 &#039;&#039;&#039;80.80&#039;&#039;&#039;      0.15    0.15        1   145.44   175.53  sobel&lt;br /&gt;
 16.72      0.18    0.03  4706312     0.00     0.00  color_to_int&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  read_bmp&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  write_bmp&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=286</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=286"/>
		<updated>2012-02-12T19:14:56Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Profiling Sobel edge detection algorithm  ==&lt;br /&gt;
&lt;br /&gt;
This command will generate a test file:&lt;br /&gt;
 &lt;br /&gt;
 gcc -lm -pg sobel.c&lt;br /&gt;
 ./a.out&lt;br /&gt;
 gprof a.out &amp;gt; test&lt;br /&gt;
   &lt;br /&gt;
test file:&lt;br /&gt;
&lt;br /&gt;
 %   cumulative   self              self     total           &lt;br /&gt;
    &lt;br /&gt;
 80.80      0.15     0.15        1   145.44   175.53  sobel&lt;br /&gt;
 16.72      0.18     0.03  4706312     0.00     0.00  color_to_int&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  read_bmp&lt;br /&gt;
 0.00      0.18     0.00        1     0.00     0.00  write_bmp&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=285</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=285"/>
		<updated>2012-02-11T18:36:41Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment #2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Compiler:&lt;br /&gt;
&lt;br /&gt;
gcc -O -lm sobel.c -o sobel&lt;br /&gt;
&lt;br /&gt;
./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=284</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=284"/>
		<updated>2012-02-11T18:25:03Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
compiler:&lt;br /&gt;
&lt;br /&gt;
gcc -O -lm sobel.c -o sobel&lt;br /&gt;
./sobel&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=283</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=283"/>
		<updated>2012-02-11T17:32:07Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (&#039;&#039;Since the code is very long, I just show key part of algorithm&#039;&#039;):&lt;br /&gt;
&lt;br /&gt;
   int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=282</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=282"/>
		<updated>2012-02-11T17:23:56Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C (Since the code is very long, I just show key part of algorithm):&lt;br /&gt;
&lt;br /&gt;
int sobel(double threshold) {&lt;br /&gt;
   unsigned int  x, y, i, v, u;             // for loop counter&lt;br /&gt;
   unsigned char R, G, B;         // color of R, G, B&lt;br /&gt;
   double val[MASK_N] = {0.0};&lt;br /&gt;
   int adjustX, adjustY, xBound, yBound;&lt;br /&gt;
   double total;&lt;br /&gt;
 &lt;br /&gt;
   for(y = 0; y != height; ++y) {&lt;br /&gt;
     for(x = 0; x != width; ++x) { &lt;br /&gt;
       for(i = 0; i != MASK_N; ++i) {&lt;br /&gt;
         adjustX = (MASK_X % 2) ? 1 : 0;&lt;br /&gt;
                 adjustY = (MASK_Y % 2) ? 1 : 0;&lt;br /&gt;
                 xBound = MASK_X / 2;&lt;br /&gt;
                 yBound = MASK_Y / 2;&lt;br /&gt;
             &lt;br /&gt;
         val[i] = 0.0;&lt;br /&gt;
         for(v = -yBound; v != yBound + adjustY; ++v) {&lt;br /&gt;
                     for (u = -xBound; u != xBound + adjustX; ++u) {&lt;br /&gt;
             if (x + u &amp;gt;= 0 &amp;amp;&amp;amp; x + u &amp;lt; width &amp;amp;&amp;amp; y + v &amp;gt;= 0 &amp;amp;&amp;amp; y + v &amp;lt; height) {&lt;br /&gt;
               R = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 2);&lt;br /&gt;
               G = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 1);&lt;br /&gt;
               B = *(image_s + byte_per_pixel * (width * (y+v) + (x+u)) + 0);&lt;br /&gt;
               &lt;br /&gt;
                   val[i] +=    color_to_int(R, G, B) * mask[i][u + xBound][v + yBound];&lt;br /&gt;
             }&lt;br /&gt;
                     }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
       total = 0.0;&lt;br /&gt;
       for (i = 0; i != MASK_N; ++i) {&lt;br /&gt;
               total += val[i] * val[i];&lt;br /&gt;
       }&lt;br /&gt;
 &lt;br /&gt;
           total = sqrt(total);&lt;br /&gt;
           &lt;br /&gt;
       if (total - threshold &amp;gt;= 0) {&lt;br /&gt;
         // black&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = BLACK;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = BLACK;&lt;br /&gt;
       }&lt;br /&gt;
             else {&lt;br /&gt;
               // white&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 2) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 1) = WHITE;&lt;br /&gt;
         *(image_t + byte_per_pixel * (width * y + x) + 0) = WHITE;&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
   &lt;br /&gt;
   return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=281</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=281"/>
		<updated>2012-02-11T17:20:16Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
[http://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm]&lt;br /&gt;
This is a great website teachs us how it works, and it also provide some examples, which help us to implement in C code.&lt;br /&gt;
&lt;br /&gt;
Sobel edge detection algorithm code with C :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=280</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=280"/>
		<updated>2012-02-11T17:12:02Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
Sobel edge detection algorithm code with C :&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg|200px|thumb|left|alt text]]&lt;br /&gt;
&lt;br /&gt;
The result:&lt;br /&gt;
[[Image:Lena_sobel.jpg|200px|thumb|left|alt text]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=279</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=279"/>
		<updated>2012-02-11T17:11:04Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
Sobel edge detection algorithm code with C :&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg]]&lt;br /&gt;
&lt;br /&gt;
The result:&lt;br /&gt;
[[Image:Lena_sobel.jpg]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Lena_sobel.jpg&amp;diff=278</id>
		<title>File:Lena sobel.jpg</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Lena_sobel.jpg&amp;diff=278"/>
		<updated>2012-02-11T17:10:27Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=277</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=277"/>
		<updated>2012-02-11T17:10:00Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
Sobel edge detection algorithm code with C :&lt;br /&gt;
&lt;br /&gt;
We use color lena with 24bit bmp file&lt;br /&gt;
[[Image:lena.jpg]]&lt;br /&gt;
&lt;br /&gt;
The result:&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=276</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=276"/>
		<updated>2012-02-11T17:05:46Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
Sobel edge detection algorithm code with C :&lt;br /&gt;
&lt;br /&gt;
[[Image:sobel.jpg]]&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Lena.jpg&amp;diff=275</id>
		<title>File:Lena.jpg</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=File:Lena.jpg&amp;diff=275"/>
		<updated>2012-02-11T17:04:53Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: color lena&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;color lena&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
	<entry>
		<id>https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=274</id>
		<title>Team Gryffindor</title>
		<link rel="alternate" type="text/html" href="https://wikis.ece.iastate.edu/cpre584/index.php?title=Team_Gryffindor&amp;diff=274"/>
		<updated>2012-02-11T17:02:12Z</updated>

		<summary type="html">&lt;p&gt;Pm429015: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox team&lt;br /&gt;
  |teamname = Team Gryffindor&lt;br /&gt;
  |image = gryffindor.png&lt;br /&gt;
  |caption = Gryffindor Team Logo&lt;br /&gt;
  |member1 = Chad Nelson - cnel711&lt;br /&gt;
  |member2 = Mihir  Awatramani - mihir&lt;br /&gt;
  |member3 = Mengduo Ma - marinama&lt;br /&gt;
  |member4 = Kuan-Hsing Ho - pm429015&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Connecting to the Convey HC-1 Machine ===&lt;br /&gt;
# Download and install [http://www.nomachine.com/download.php NX Client].&lt;br /&gt;
# Connect to convey-1.ece.iastate.edu using your ISU NetID and the password &#039;&#039;yournetid&#039;&#039;@123.&lt;br /&gt;
# Change your password by opening a terminal window and running the &#039;&#039;&#039;passwd&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
NX Tip: Use GNOME as your windowing environment (for speed), and if you have trouble connecting, make sure you unselect the decrypt all traffic.&lt;br /&gt;
&lt;br /&gt;
You can access the shared /home/cpre584_t2 folder by using the  &#039;&#039;&#039;su cpre584_t2&#039;&#039;&#039; command and entering our team password.&amp;lt;br&amp;gt;  Alternatively, you can access the two files Jone&#039;s created for us on the shared folders here on the wiki:&lt;br /&gt;
# Setup your Convey environmental variables ([[media:Setconveyenv.txt |Jone&#039;s Script]])&lt;br /&gt;
# Here&#039;s a copy of the Xilinx 11.1 src file:&lt;br /&gt;
&lt;br /&gt;
source /remote/Xilinx/11.1/settings64.sh&amp;lt;br&amp;gt;&lt;br /&gt;
export PATH=$PATH:/remote/Modelsim/6.4b/modeltech/linux_x86_64/&amp;lt;br&amp;gt;&lt;br /&gt;
export LM_LICENSE_FILE=1717@io.ece.iastate.edu:27006@io.ece.iastate.edu&lt;br /&gt;
&lt;br /&gt;
=== Convey architecture overview ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Vector Adder Example ===&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; &#039;&#039;ppt goes here&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
=== Running the Sample Program using the Fabric ===&lt;br /&gt;
Section 10.5 of PDK Reference Manual explains how to run the sample software application.  It has been reproduced below in brief.&lt;br /&gt;
&lt;br /&gt;
The rev version installed on the Convey machine is from 2010-8-9; to copy the sample app&#039;s source code run:&lt;br /&gt;
 cd ~&lt;br /&gt;
 mkdir pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/cae_pers_vadd pdk_sample&lt;br /&gt;
 cp -r /opt/convey/pdk/2010_08_09/pdk_apps/SampleAppVadd pdk_sample&lt;br /&gt;
&lt;br /&gt;
To make the sample project.&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/cae_pers_vadd/CaeSimPers/&lt;br /&gt;
 make&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
This compiles both an emulator (CaeSimPers) and a C program that makes a coprocessor call to use the vector adder (UserApp.exe).  You&#039;ll want to make sure that you haven&#039;t set your environmental variables.  You can do this by simply using a new terminal window or by running &#039;&#039;&#039;export CNY_SIM_THREAD=&#039;&#039;&#039;.  To run the sample application on the coprocessor fabric, you&#039;ll need to make sure the CNY_SIM_THREAD environment variable is unset or 0.  To run the software version of the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
You should see the program run and output the following:&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.software.PNG]]&lt;br /&gt;
&lt;br /&gt;
You can also set the CNY_CALL_STATS environment variable; this variable gives back the number of times the coprocessor was called.  I.E. for this application, the coprocessor is called once.  Output from the terminal is reproduced in the following file:&lt;br /&gt;
&lt;br /&gt;
[[Media:Assignment1 team2 fabric.txt|Console Output]]&lt;br /&gt;
&lt;br /&gt;
=== Running in the SW Model ===&lt;br /&gt;
To run the sample application on the Coprocessor simulator, you&#039;ll need to set some environmental variables:&lt;br /&gt;
&lt;br /&gt;
 # Use the Coprocessor Simulator&lt;br /&gt;
 export CNY_SIM_THREAD=libcpSimLib2.so&lt;br /&gt;
 # Point to the emulator&lt;br /&gt;
 export CNY_CAE_EMULATOR=~/pdk_sample/cae_pers_vadd/CaeSimPers/CaeSimPers&lt;br /&gt;
&lt;br /&gt;
After setting the environmental variables, rerun the app:&lt;br /&gt;
&lt;br /&gt;
 cd ~/pdk_sample/SampleAppVadd/&lt;br /&gt;
 ./UserApp.exe&lt;br /&gt;
&lt;br /&gt;
The program will pause at the following screen for a 10-20 seconds... &lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator1.PNG]]&lt;br /&gt;
&lt;br /&gt;
...and then finish running the program.&lt;br /&gt;
&lt;br /&gt;
[[Image:Assignment1.simulator2.PNG]]&lt;br /&gt;
&lt;br /&gt;
=== Assignment 2 ===&lt;br /&gt;
Sobel edge detection algorithm code with C :&lt;/div&gt;</summary>
		<author><name>Pm429015</name></author>
	</entry>
</feed>