tag:blogger.com,1999:blog-51653445009184795812024-03-04T22:05:47.814-08:00Gaurav's BlogSoftware Development Portability & Optimization Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-5165344500918479581.post-38438443222410966072015-12-18T18:58:00.003-08:002015-12-18T18:58:31.675-08:00Software Portability and Optimization course review
<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
The Software
Portability and Optimization course have been a rough, this course is
full of a lot of information. Everything that I learned was new to me
and most of that was interesting and additionally Chris Tyler told us
about some handy tools beside course material. In the beginning I
regretted taking this course but it turned out an interesting class
and when you email Chris with problem he replies within a day to keep
us moving so we don't get stuck on our work.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Things that I liked
most is working with shell scripting, learning new things about
Linux, improving programs using algorithms and compilation process
(compiler options). Chris gave and showed samples on how he did the
work which got us started. Before this course when I wrote code I'd
try to improve it by removing unnecessary variables and code, trying
to consume minimal memory as possible but these things never made
difference because I learned that the compiler readjusted the code to
improve it. So, the things that I did to improve the code the
compiler does it automatically therefore, from now on I'll just work
with compiler options to improve my code other than manually doing
it.
</div>
Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com1tag:blogger.com,1999:blog-5165344500918479581.post-31516466251277371772015-12-18T17:11:00.001-08:002015-12-18T18:57:36.904-08:00VectorizingEveryone wants to
write their code that gives better performance and one of the
processes which slows down program performance is loops. If you are
writing a loop that loops through each element in array/s and you
want to optimize it to get better performance, you could use
vectorization to get best performance on the loop. Vectorization is
the process of rewriting a loop so that instead of processing a
single element of an array N times, it processes (say) 4 elements of
the array simultaneously N/4 times.
<br />
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Ex:</div>
<div class="western">
void copy(char* dest, char* source, long size) {</div>
<div class="western">
int i;</div>
<div class="western">
for (i = 0; i < size; i++)</div>
<div class="western">
dest[i] = source[i];</div>
<div class="western" style="margin-bottom: 0.5cm;">
}</div>
<div class="western" style="margin-bottom: 0.5cm;">
The code above copies data from one location into another, the performance wouldn't matter is the size is small (like: 100 - 1000) but if the size was
high (millions) then you can see the effect but by using vectorization the program copies N elements (lets say 4) at cost of
one element copy in code above only if the memory region of destination and source aren't overlapping. To apply vectorization on
your program you could do is compile your program with -03 flag. If the loop is guaranteed to operate on non-overlapping memory regions
then you could add “#pragma ivdep” on top of loop which informs compiler to ignore vector dependencies and the vectorizing will be
applied to your loop with even better performance then -03 because the vectorization checks will not run but if the loop operates on
overlapping memory then your program will give false results.</div>
<div class="western" style="margin-bottom: 0.5cm;">
The difference between loop unrolling and vectorization is loop unrolling will do 4 (4 as an example) separate operations in one index increment but in
vectorization it will copy 4 (4 as an example) data and place it in destination in 1 operation. It's easy to show it in code, so here it
is:</div>
<style type="text/css">pre.cjk { font-family: "Droid Sans Fallback",monospace; }p { margin-bottom: 0.25cm; line-height: 120%; }a:link { }</style>
<br />
<div class="western" style="margin-bottom: 0.5cm;">
<b>Loop Unrolling </b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
for (int i=0; i <
size; i += 4){ </div>
<div style="line-height: 100%; margin-bottom: 0cm;">
dest[i] =
source[i]; </div>
<div style="line-height: 100%; margin-bottom: 0cm;">
dest[i + 1] =
source[i + 1]; </div>
<div style="line-height: 100%; margin-bottom: 0cm;">
dest[i + 2] =
source[i + 2];</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
dest[i + 3] =
source[i + 3];</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
}</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div class="western" style="margin-bottom: 0.5cm;">
<b>Vectorization</b></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
for (int i=0; i <
size; i += 4){ </div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<span style="font-family: inherit;">copyFourThingsAtOnce(&dest[i], &source[i]);</span><br />
} </div>
Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-82566159608949424352015-12-18T13:41:00.001-08:002015-12-18T15:26:23.294-08:00Assembly Language<div style="line-height: 100%; margin-bottom: 0cm;">
Writing assembler
code is very difficult, it's difficult because you have to write
lowest level programming language, you have to write code specific to
architecture of machine, 32bit or 64bit machines.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Take a look at
following assembly code written for x86_64 machine. This code loops
until start reaches to value in max and prints out each value.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
.globl _start /* must declare for program to know where to start program,
it's just says which is main function. */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
.set start, 0 /*
starting value for the loop index */
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
.set max, 10 /*
loop exits when the index hits this number (loop condition is i<max)
*/
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
_start:
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
mov $start,%r15 /* loop index */
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
loop:
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
mov %r15,%r14
/* copy to r14 for ascii conversion */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
mov $'0',%r13
/* loding value of start into r13 register */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
add %r13,%r14 /* adding r13 and r14 values and result is store into
r14 register */
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
movq $digit,%rsi
/* message location, rsi is register source index
*/</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
movb %r14b,(%rsi)
/* write byte to start of message */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
movq $len,%rdx
/* message length, rdx is register d extended */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
movq $msg,%rsi /* message location, rsi is register source index */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
movq $1,%rdi /* file descriptor stdout, rdi is register destination
index */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
movq $1,%rax /* syscall, sys_write, rax is register a extended */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
syscall</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
inc %r15
/* increment register 15 */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
cmp $max,%r15
/* see if we're done */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
jne loop
/* loop if we are not */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
mov $0,%rdi /* exit status */
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
mov $60,%rax
/* syscall sys_exit */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
syscall </div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
.data
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
msg: .ascii
"Loop: #\n"
/* message text - # is number of index */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
digit = . - 2 /*
memory address for digit */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
len = . - msg /*
length of message */</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
The code belongs to
Chris Tyler and some of the comments belongs to him as well, it's
quite difficult to understand some of the steps. This code is able to
handle only single digit value for being printed. All the registers
that were used in code above are for only x86_64 machine, for Aarch64
there are different set of registers. Take a look at following table
for some basic difference between x86_64 and Aarch64 machine.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-s6z2{text-align:center}
.tg .tg-yw4l{vertical-align:top}
</style>
<br />
<table class="tg">
<tbody>
<tr>
<th class="tg-s6z2"><b>X86_64</b></th>
<th class="tg-031e"><b>Aarch64</b></th>
</tr>
<tr>
<td class="tg-031e">R8 to r15 are general registers</td>
<td class="tg-031e">r0 to r30 are general registers</td>
</tr>
<tr>
<td class="tg-yw4l">rax, rbx, rcx, rdx, rbp, rsp, rsi, rdi are specialied regisers</td>
<td class="tg-yw4l">- </td>
</tr>
<tr>
<td class="tg-yw4l">64-bit registers using the 'r' prefix: rax, r15<br />
<br />
32-bit registers using the 'e' prefix (original registers: e_x) or 'd' suffix (added registers: r__d): eax, r15d<br />
<br />
16-bit registers using no prefix (original registers: _x) or a 'w' suffix (added registers: r__w): ax, r15w<br />
<br />
8-bit registers using 'h' ("high byte" of 16 bits) suffix (original registers - bits 8-15: _h): ah, bh<br />
<br />
8-bit registers using 'l' ("low byte" of 16 bits) suffix (original registers - bits 0-7: _l) or 'b' suffix (added registers: r__b): al, bl, r15b </td>
<td class="tg-yw4l">x0 through x30 - for 64-bit-wide access registers
w0 through w30 - for 32-bit-wide access registers</td>
</tr>
<tr>
<td class="tg-yw4l">Openrations like add, divide, multiply takes two parameters and operation result is stored in second parameter.</td>
<td class="tg-yw4l">Openrations like add, divide, multiply takes three parametrs and result is stored in first parameter and other two are for operation values.</td>
</tr>
<tr>
<td class="tg-yw4l">Many differences..</td>
<td class="tg-yw4l">Many differences..</td>
</tr>
</tbody></table>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
One of the good
thing about writing assembly code is when you compiler it and analyze
executable file using objdump command you will not see any code other
than what you have written but when you write C/C++ code and analyze
it' executable there is a lot of other code that you didn't write,
that code is coming from your includes but since you don't need to
include anything in assembly code so what you write is what you get.
This assembly program is written in .s type extension and you just
run:</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
ls -o name.o file.s</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
ld -o executable-name name.o</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
You can also
write/add assembly code in your C/C++ program using asm function, ex:
asm("add $1, %0"). And to compile this you can just using
gcc or g++ compiler.</div>
Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-33825406963653083492015-12-17T23:16:00.000-08:002015-12-17T23:16:14.958-08:00Benchmarking MPICH packageIn this post I'm going to write about benchmarking MPICH software using the framework we designed in Software Portability and Optimization class, Here is the link to get to the framework: https://github.com/pk400/SPO600-Build-Framework. MPICH is a high performance and widely portable implementation of the Message Passing Interface (MPI) standard, it's being used exclusively on nine of the top 10 supercomputers.<br /><br />I have spent a lot of time on getting this test framework run with my MPICH package and I faced many problems as well. First of all when I edited build plugin file to change CFLAGS to use compiler options selected in test framework and build my project the build fails and I didn't know why until the professor (Chris Tyler) looked at it and told me that exporting to CFLAGS variable is breaking the build. I looked into it and I wasn't sure why it was causing it to fail and I still don't know, I checked that the configure file and make file uses CFLAGS variable. I found the a way around by setting compiler options directly to the variable used for build but before that I unset the CFLAGS variable after calling configure command because configure command was adding compiler options to CFLAGS variable and in make command it uses CFLAGS variable to assign it into variable that has flags for building package which is MPICH_MAKE_CFLAGS. While I was figuring out this I found out that MPICH library was being build from CFLAGS and appended other compiler options in configure file as will. So by unsetting the variable CFLAGS after calling configure file I was able to build MPICH package and it's libraries with compiler flags chosen by the permutation, which I wanted.<br /><br />For the tesing reason I used -02 and -03 as trial run for my package. The results on x86_64 system is:<br /><br />Permutation columns: (uniqueId, givenId, flags, buildExit, buildWallTime, buildUserSystemTime, buildSize, testExit)<br />Benchmark columns: (uniqueId, permutationUniqueId, givenId, speedScore, memoryScore)<br /><br />(1, 1, '-02', 0, 274.37, 703.28, 0, 0) <br /> (1, 1, 1, 702, 17016)<br /> (2, 1, 2, 702, 18736)<br /> (3, 1, 3, 704, 18796)<br /> (4, 1, 4, 701, 18796)<br /><br />(2, 2, '-03', 0, 224.73, 598.86, 0, 0)<br /> (5, 2, 1, 819, 18796)<br /> (6, 2, 2, 825, 18776)<br /> (7, 2, 3, 820, 18764)<br /> (8, 2, 4, 820, 18784)<br /><br />The results with test framework compiler options are:<br />There was an issue with first group because it has all the options that stay on in all O-levels and options that are kept off in all levels (-01, -02, -03) and because of that there was no delimiter causing the permutation to fail after first group. So to get results from all the groups I had to run the framework with group one only and remove group one from config file so other groups are used for building package in different set of compiler options. In the benchmarking results I'll only specify group name because there are a lot of flags being used, to see what compiler options are being used go to: https://github.com/pk400/SPO600-Build-Framework and look at monkeys10k.config file.<br /><br />(1, 1, 'group1', 0, 256.45, 697.5, 0, 0) <br /> (1, 1, 1, 702, 18760)<br /> (2, 1, 2, 703, 18888)<br /> (3, 1, 3, 701, 18796)<br /> (4, 1, 4, 704, 18720) <br /><br />(1, 1, 'group2 permute: 1', 0, 487.48, 729.73, 0, 0)<br /> (1, 1, 1, 1373, 18804)<br /> (2, 1, 2, 1424, 18800)<br /> (3, 1, 3, 1405, 18780)<br /> (4, 1, 4, 1361, 7356)<br /><br />(2, 2, 'group2 permute: 2', 0, 470.55, 630.61, 0, 0)<br /> (5, 2, 1, 1248, 14856)<br /> (6, 2, 2, 1267, 16396)<br /> (7, 2, 3, 1268, 18768)<br /> (8, 2, 4, 1338, 17056)<br /><br />(1, 1, 'group3 permute: 1', 0, 550.99, 734.2, 0, 0)<br /> (1, 1, 1, 1555, 16392)<br /> (2, 1, 2, 1660, 14876)<br /> (3, 1, 3, 1659, 18700)<br /> (4, 1, 4, 1653, 18764)<br /><br />(2, 2, 'group3 permute: 2', 0, 435.94, 621.67, 0, 0)<br /> (5, 2, 1, 703, 18804)<br /> (6, 2, 2, 704, 18820)<br /> (7, 2, 3, 699, 18836)<br /> (8, 2, 4, 707, 18772)<br /><br />(1, 1, 'group4 permute: 1', 0, 368.79, 714.64, 0, 0)<br /> (1, 1, 1, 1292, 18776)<br /> (2, 1, 2, 1303, 18744)<br /> (3, 1, 3, 1266, 18816)<br /> (4, 1, 4, 767, 18776)<br /><br />(2, 2, 'group4 permute: 2', 0, 321.62, 616.49, 0, 0)<br /> (5, 2, 1, 1409, 18800)<br /> (6, 2, 2, 1328, 18768)<br /> (7, 2, 3, 1337, 17272)<br /> (8, 2, 4, 1302, 18812)<br /><br />This measures are a combination of time it takes to configure, make, run make check, run benchmark on package. In the results above the group 1 contains flags which are always on/off in all levels made fastest test in wall time but group 4's off options were fastest in user systems time but we don't care about user system time because we want to measure the time user/person (stop watch) not computer's cpu cycles or etc. This just proves that the MPICH program compiler faster on defaults without any additional compiler flags because the once that are set by default is faster in this case on x86_64 machine but I would say to benchmark it more deep I would like to add compiler options of other groups (not one) to group one, one by one, and see performance on MPICH software.Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-18244006857528367882015-11-08T17:46:00.000-08:002015-11-08T17:51:07.195-08:00Algorithm Selection<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
A couple of weeks ago, we were asked to write two different
approaches to adjusting the volume of sound samples. The two approaches we were
asked to write was:
<br />
<ul>
<li><span style="font-family: "symbol"; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Scaling the values of sound sample by multiplying
value by a scaling factor.</li>
<li>Scaling the values of sound sample by
multiplying value by a scaling factor and storing it into a lookup table. So,
when the program needs the data it will provide it from lookup table until the
scaling factor isn’t changed.</li>
</ul>
<br />
<div class="MsoNormal">
To analyze the performance I’ll be using the Archie system
(CDOT's ARMv8 - AArch64) and Xerxes system (CDOT's x86_64). I’m going to be
using data type int16_t (16 bits) to represent a sound sample and providing 5,000,000
samples which adds up to 10MB of sound sample’s volume to adjust.</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
To calculate the performance of each approach I first made a
dummy run of the program to get its performance without adjusting the volume.
In this the program just creates a 10MB of sample data and prints out all its
values.<span style="mso-spacerun: yes;"> </span>Then I calculated the
performance on each approach of volume adjustment. I made five runs on each
approach on each system.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Performance on Archie:</div>
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Tests</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
1</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
2</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
3</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
4</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
5</div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Dummy run</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
10.86s (11392 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
7.79s<span style="mso-spacerun: yes;">
</span>(11328 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
10.82s<span style="mso-spacerun: yes;">
</span>(11328 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
7.49s<span style="mso-spacerun: yes;">
</span>(11328 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
10.82s<span style="mso-spacerun: yes;">
</span>(11392 KB)</div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Multiplication</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
9.54s<span style="mso-spacerun: yes;">
</span>(11328 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
9.50s<span style="mso-spacerun: yes;">
</span>(11392 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
12.15s<span style="mso-spacerun: yes;">
</span>(11392 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
9.06s<span style="mso-spacerun: yes;">
</span>(11392 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
11.99s<span style="mso-spacerun: yes;">
</span>(11392 KB)</div>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Lookup Table</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
7.96s<span style="mso-spacerun: yes;">
</span>(11584 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
11.39s<span style="mso-spacerun: yes;">
</span>(11584 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
7.37s<span style="mso-spacerun: yes;">
</span>(11584 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
11.39s<span style="mso-spacerun: yes;">
</span>(11648 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
11.42s<span style="mso-spacerun: yes;">
</span>(11584 KB)</div>
</td>
</tr>
</tbody></table>
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Performance on Xerxes:</div>
<div align="center">
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Tests</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
1</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
2</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
3</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
4</div>
</td>
<td style="border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
5</div>
</td>
</tr>
<tr style="mso-yfti-irow: 1;">
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Dummy run</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.86s<span style="mso-spacerun: yes;">
</span>(12416 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.85s<span style="mso-spacerun: yes;">
</span>(12360 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.87s<span style="mso-spacerun: yes;">
</span>(12368 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.85s<span style="mso-spacerun: yes;">
</span>(12364 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.93s<span style="mso-spacerun: yes;">
</span>(12392 KB)</div>
</td>
</tr>
<tr style="mso-yfti-irow: 2;">
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Multiplication</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.92s<span style="mso-spacerun: yes;">
</span>(12308 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.90s<span style="mso-spacerun: yes;">
</span>(12416 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.91s<span style="mso-spacerun: yes;">
</span>(12316 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.91s<span style="mso-spacerun: yes;">
</span>(12424 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.86s<span style="mso-spacerun: yes;">
</span>(12472 KB)</div>
</td>
</tr>
<tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;">
<td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
Lookup Table</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.93s<span style="mso-spacerun: yes;">
</span>(12448 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.95s<span style="mso-spacerun: yes;">
</span>(12496 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.92s<span style="mso-spacerun: yes;">
</span>(12524 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.94s<span style="mso-spacerun: yes;">
</span>(12608 KB)</div>
</td>
<td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 68.4pt;" valign="top" width="91"><div align="center" class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; text-align: center;">
0.92s<span style="mso-spacerun: yes;">
</span>(12540 KB)</div>
</td>
</tr>
</tbody></table>
</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
As you can see results from Archie system is inconsistent in
terms of run time, but the memory usage of the program is consistent and Xerxes
system is providing consistence run time and memory usage. By looking at these
stats we can say that Xerxes system is faster in performing these tests.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The average run time on Archie system is: 9.556s on dummy
run, 10.448s on multiplication, and 9.906 on the lookup table; and the average
run time on Xerxes system is: 0.892s on dummy run, 0.900 on multiplication, and
0.932s on the lookup table. Using the average we can calculate
the run time of adjusting volume on Archie system is: 0.892s on multiplication
method and 0.350s on lookup table; and for Xerxes system is: 0.008s on
multiplication method and 0.04s on lookup table method. You can also see that
Xerxes system consumes more memory than Archie system. So, based on these
results I would say that the approach of adjusting volume depends on the system
you are using.</div>
Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-68856575300388489842015-11-07T12:12:00.002-08:002015-11-09T18:05:20.253-08:00 File Transferring<div class="MsoNormal">
A couple of days ago I wanted to transfer some source files
on Archie (CDOT's ARMv8 - AArch64 system) and Xerxes (CDOT's x86_64 system) machines
and run my program and analyze the result between these systems. When I
regularly connect to these systems it uses my <a href="https://www.comodo.com/resources/small-business/digital-certificates2.php">private
key</a> generated on my Linux machine as password and provides me access to Archie
and Xerxes systems. I was having problems making a file transfer to these
systems but after some research and help from professor (Chris Tyler) I learn
few more interesting things as well.</div>
<div class="MsoNormal">
<br /></div>
Transferring file to Xerxes system was easy, If I’m on
College’s network then I can just use “scp test.cpp (filename) (username)@xerxes.internal.cdot.systems:(destination)”.
Xerxes server is only access able from Seneca’s network so, if you want to
connect to Xerxes server from outside you can use other system which can be
access able from outside like Archie and Matrix and using that you can connect
to Xerxes system but you have to transfer the private key to these systems.
Also after connection name if you do not include “: (destination)” the file
will not be transferred it will just make copy of that file and put it in
current directory with connection name as file name.<br />
<br />
<div class="MsoNormal">
When you want to transfer file on Archie machine it’s little
complicated because you have to specify the port number. Archie machine
connection is set up to connect via different system so you have to connect to
it using “ssh –p 2200 (connection name)”. Also for Archie there are two
different connection names, one for connecting from outside College network (ehl.cdot.systems)
and another for connecting from within Seneca network (ehl.internal.cdot.systems).
so if you want to transfer file on Archie system you can use “scp –P 2200 test.cpp
(filename) (username)@(connection name either internal or external):(destination)”.
Also keep in mind that because Linux is case sensitive the scp command uses
capital ‘P’ to specify port number.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If you have your private key protected by a passphrase and every
time you want to connect to different machines you use your private key and you
have enter your passphrase to unlock private key. If you use ssh-agent and add your
private key to that agent and by doing that you can connect to multiple servers
without entering your passphrase and also keeping you private key secured at
the same time. You can do that by entering command “eval $(ssh-agent)” the add
your private key by entering “ssh-add ~/.ssh/id_rsa (path to private key)” and
you will be prompt to enter your passphrase and enjoy.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Finally, there are
many other services you can use to transfer files like: ftp, sftp, filezilla (GUI),
wget, and more.</div>
Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-30410221401751567232015-11-05T14:53:00.002-08:002015-11-07T12:00:38.543-08:00Open Source Community<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<br />
<div class="MsoNormal">
There are a lot of open source software’s out there and a
lot of programmers come to gather to make that software. One of the open source
software I looked at was Front Accounting which is licenced under GNU General
Public License. This license basically allows users the freedom <span class="tgc">to run, study, share, and modify the software</span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">How
to Contribute to Software</b></span></div>
<div class="MsoNormal">
<span class="tgc">To begin contributing to this software you
can head over to Front Accounting’s wiki <a href="http://frontaccounting.com/fawiki">page</a> which gives you the information on the project, like: different ways to obtain
project source code, links to forums/discussions, and more.<span style="mso-spacerun: yes;"> </span>On their forum <a href="http://frontaccounting.com/punbb">page</a> you can find out the project broken down into many little pieces and how are
they planning to implement it, place for reporting bugs, wish list, modules
discussions, and even job offers. </span></div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">Bug
Tracker</b></span></div>
<div class="MsoNormal">
<span class="tgc">On the forum page there is a place to report
bugs and people discuss on how to fix these but the primary system is <a href="http://mantis.frontaccounting.com/login_page.php">Mantis bug tracking
system</a> which is allowed for registered users only but you can make an
account easily. Mantis system is an </span>issue tracker that provides a
delicate balance between simplicity and power.</div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">Bug fixes/Patches</b></span></div>
<div class="MsoNormal">
Eventually someone who will be fixing bugs will be discussing
their progress and on forum or on the <span class="tgc"><a href="http://mantis.frontaccounting.com/login_page.php">Mantis bug tracking
system</a> and many people would be testing to see if the patch fixes these problems
or not and according to these results that patch will be used in project.</span></div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">Community</b></span></div>
<div class="MsoNormal">
<span class="tgc">The community can jump into discussions or
issues and provide solutions. The source code is made available on GitHub,
SourceForge, BitBucket and with different versions/modules. On the Forum <a href="http://frontaccounting.com/punbb">page</a> there are over 7,000 registered users and they have discussed in over 4,000
topics about Front Accounting software.</span></div>
<span class="tgc"><span style="font-family: "calibri" , "sans-serif"; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-CA; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: "Times New Roman"; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"><br clear="all" style="mso-special-character: line-break; page-break-before: always;" />
</span></span>
<br />
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Second open source software I looked at was Spam Assassin licenced
under The Apache Software Foundation. Apache license agreement allows users the
freedom <span class="tgc">to run, study, and share. The licence agreement must be
sign if you want to modify the software.</span></div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">How
to Contribute to Software</b></span></div>
<div class="MsoNormal">
<span class="tgc">To begin contributing to this software you
can head over to Spam Assassin wiki <a href="http://wiki.apache.org/spamassassin">page</a></span> where you can learn about the software, join to mailing list, look at reviews,
and etc. There is also a <a href="http://wiki.apache.org/spamassassin/DevelopmentStuff">link</a>
for developers where it gives you information about joining to development spam
assassin software. You can find information on general rules like coding style,
development rules, how to get source code, and etc. You will have to join a
mailing list in order to get latest updates on software. Contributors are divided in to different roles, like: contributors (anyone can provide feedback, submit bug reports, or submit patches), committers (a committer is simply an individual who was given write access to the code base), PMC Members (the project management committee is responsible for managing a project), and finally there are users who uses the software.</div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">Bug
Tracker</b></span></div>
<div class="MsoNormal">
There is a forum <a href="https://bz.apache.org/SpamAssassin">page</a>
where all the problems are reported and discussed by developers. You have to be
registered to report bugs and collaborate on solving these problems.</div>
<div class="MsoNormal">
<span class="tgc"><b style="mso-bidi-font-weight: normal;">Accepting
Patches</b></span></div>
<div class="MsoNormal">
<span class="tgc">Eventually someone will come around to fix
the bugs reported in software, they will be discussing their progress on bug
tracker system and when they are done they will be submitting it. According to
development mode <a href="http://wiki.apache.org/spamassassin/DevelopmentMode">page</a> some one will be reviewing the code and after that they will be <a href="http://wiki.apache.org/spamassassin/ContinuousTesting">testing</a>
it.</span></div>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-CA</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin-top:0cm;
mso-para-margin-right:0cm;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0cm;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-fareast-language:EN-US;}
</style>
<![endif]-->Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-29021095352834744092015-10-04T15:11:00.003-07:002015-10-04T15:11:17.764-07:00Compiler OptionsA few weeks ago, we learn about gcc compiler and few of it's options, using these options your compiler will change/move your code around to make your code for better performance. I'm going to discuss about GCC compiler options which I researched on for my presentation for my <span style="font-weight: normal;"><span class="mw-headline">Software Portability and Optimization</span></span> course.<br />
<br />
<b>-ftree-dce</b> is one of the option which I've chose for my research. -ftree-dce performs dead code elimination (DCE) on trees. This flag is enabled by default at -O and higher.<br />
<br />
Example: <br />
int main(){<br />
int t = 5 + 5; //dead code<br />
int r = 3 + 3;<br />
printf(“Result is %d”, r);<br />
}<br />
<br />
In this example variable ‘t’ is considered a dead variable because it takes result of two numbers but the value of ‘t’ is never used. It isn't going to affect the final result so, calculating 5 + 5 and assigning the result to a variable will consume resources and space for something that can be avoided. Dead Code Elimination checks for conditions that will never be true and unnecessary calculations on variables which are not affecting the final result and it will remove that block of code before it converts the code into machine language which will provide better performance in your program by eliminating steps that are unnecessary.<br />
<br />
Hence compiler option is enabled by default at -O level, so the dead code elimination option is always in use, unless you compile with –fno-tree-dce but still there are other similar options which eliminates dead code.<br />
These are: -fdump-rtl-dce, -fdump-rtl-dce1, -fdump-rtl-dce2 and –ftree-builtin-call-dce which gives warning on unused variables it's default enabled at -O2 <br />
<br />
<b>-fmove-loop-invariants</b> is another compiler option which I've chose for my research. -fmove-loop-invariants enables the loop invariant motion pass in the RTL loop optimizer and its enabled at level -O1. Its purpose is to find any value or expression that remains the same on all iterations of the loop. By substituting out the expressions which are unchanged on all iteration the computer will have less number of operations to perform then original.<br />
<br />
Example:<br />
<br />
<b>Loop invariants transform following code:</b><br />
for (int i = 0; i < n; i++) { <br />
x = y + z; <br />
array[i] = 6 * i + x * x; <br />
}<br />
<b>to:</b><br />
Int x = y + z; <br />
Int t = x * x; <br />
<br />
for (int i = 0; i < n; i++){ <br />
array[i] = 6 * i + t; <br />
} <br />
Let's calculate number of operation in each code if n is 10. For untransformed code it will be 10 iterations * (2 for x=y+z + 4 for array[i] = 6 * i + x * x ) which is 60 operations and if we look at transformed code it will be 4 for code before loop + 10 iterations * (3 for array[i] = 6 * i + t) which is 34 operations. So, in small code as this we have almost half the number of difference and which means less processing for computer and you could have better performing applications.Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-76899450035799036852015-10-04T12:18:00.001-07:002015-10-04T12:18:11.164-07:00SPO600 Lab 2 - Examining compiler options<b>SPO600 - Lab 2</b><br />
<br />
Modifying C program and compiling the program with gcc options and examining the output. Link to Lab is: <a href="http://zenit.senecac.on.ca/wiki/index.php/SPO600_Compiled_C_Lab">SPO600_Compiled_C_Lab</a>. Everything shown in this page has been ran on <b>aarchie 64 </b>machine.<br />
<br />
Simple C - hello world program.<br />
<br />
int main(){<br /> printf("Hello World!");<br />}<br /><br /><b>Compiling Using:</b> gcc -g -O0 -fno-builtin hello.c<b><br />Examining Executable File Using: </b>objdump -f -s -d --source (executable filename)<br /><b>Executable File Size: </b>9569 bytes<br />
<b><br /></b>
<b>1. Add the compiler option -static. Note and explain the change in size, section headers, and the function call.</b><br />
<b> </b><br />Executable File Size: 681707 bytes<br /><br />
Using the objdump command to determine changes gcc compiler did using -static option tell us that there was no changes made on how the main function is going to run, it just prevented linking with shared gcc libraries. This makes compiler copy all required information from gcc libraries to the executable file. <br /><b><br />2. Remove the compiler option -fno-builtin. Note and explain the change in the function call. </b><br />
<br />Executable File Size: 9182 bytes<br />
<br />One small changed has been made in executable file, In original executable the printf() function is called to print <br />the line/it makes a one line function results in smaller and faster code but without -fno-builtin option the printf() <br />is using puts@plt option it puts printf() function on stack so it will be called later. <br /><br /><b>3. Remove the compiler option -g. Note and explain the change in size, section headers, and disassembly output.</b><br />
Executable File Size: 8192 bytes<br /><br />
The executable file doesn't contain information on what each line does in main function, -g option adds debuggig information<br />to the executable file.<br /><b><br />4. Add additional arguments to the printf() function in your program. Note which register each argument is placed in. </b><br /><br />Executable File Size: 9456 bytes<br /><br />
Modified print line: printf("Helo World! %d, %d, %d, %d, %s, %f, %f, %f, %f, %s\n", 10, 20, 30, 40, "fifty", 59.99, 69.99, 79.99, 89.99, "Hundred");<br />I added multiple intergers, floats and strings arguments to printf funtion and the compiler uses ldr to create floating variables and fmove<br />pushes stores these variable into memory and adrp makes a string variables and add pushes/adds these varibles to memory.<br /><br /><b>5. Move the printf() call to a separate function named output(), and call that function from main(). Explain the changes in the object code.</b><br /><br />Executable File Size: 9359 bytes<br /><br />
The executable file has few steps which is doing the same thing in both function like: stp and mov steps after function calls and <br />ldp and ret after function closing. Two bl (callq) are being made one to output function from main and then another to printf function<br />from output function these extras and repeting steps are made, for this scenario the function calls are too many then actucal task(printf) thats why this is inefficient. Having an extra function adds more work to the program and it provides less performance.<br /><br /><b>6. Remove -O0 and add -O3 to the gcc options. Note and explain the difference in the compiled code. </b><br /><br />Executable File Size: 10616 bytes<br />
<br />The main function doesn't have the steps stp, mov, ldp and ret for main function because in main function is calling printf function and nothing else so the compiler doesn't save information about main function. Before it use to make callq to printf function and then comes back to main functions to finish its steps but now it just jumps to printf function and doesn't come back to make closing statements on main like ldp and ret because there isn't anything other then printf function so the return from printf function will go to operating system rather then going back to main function and main function returning to operating system. Option -O3 is optimized for program speed over memory space, the compiler will apply all optimiations to make it's speed better without worrying about memory space.Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0tag:blogger.com,1999:blog-5165344500918479581.post-29263156000688878312015-09-13T13:43:00.004-07:002015-09-16T18:44:54.127-07:00Introduction<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhREmicyb7U2HE5C8zoXv1d-ZG12uWR68xmENikICOKK_Rc6n2pGi_Pm5XZhgEOy-iSyuf6IlsDPoQdzqNlWJdy8KXBL9lwnjtKH6q0cIKnat8uh0ucCwvnQTVT-a9ro13-oTdLvc2J6Ogz/s1600/laptop.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhREmicyb7U2HE5C8zoXv1d-ZG12uWR68xmENikICOKK_Rc6n2pGi_Pm5XZhgEOy-iSyuf6IlsDPoQdzqNlWJdy8KXBL9lwnjtKH6q0cIKnat8uh0ucCwvnQTVT-a9ro13-oTdLvc2J6Ogz/s400/laptop.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Developing softwares to run on new architectures and optimizing it's performance.</td></tr>
</tbody></table>
<br />Gauravhttp://www.blogger.com/profile/05126097548375455477noreply@blogger.com0