Compiling "imgpipe" for different machines

Usage of VEX tools

Compiling "imgpipe" for different machines

Postby ah105 » Fri Nov 24, 2006 11:44 am

Hi,

I compiled "imgpipe" under different optimizations and for different machines. However, the resulting number of cycles and IPC did not change significantly.

In the Makefile there are different "CFLAGS" options. i used the following variable value:

CFLAGS = -O -ms $(XCFLAGS) -mas_G -fmm=risc.mm

Did I miss something in the recompilation?

Note: I deleted the "imgpipe" binaries before every new compilation. For 64KB cache the IPC was fixed at 2.12 and for the 32KB the IPC was fixed at 2:00.
ah105
 
Posts: 8
Joined: Sat Nov 04, 2006 7:32 pm

Postby frb » Sun Nov 26, 2006 9:59 pm

I'm confused, changing the cache size is a parameter for the simulator, not the compiler. Can you post exactly the set of flags that you use during compilation? Try with 2 very different configurations, and you should see some difference. I suspect there's nothing wrong with your setup.
-- Paolo
frb
 
Posts: 62
Joined: Thu Nov 12, 2009 3:44 pm

Postby ah105 » Thu Nov 30, 2006 4:24 pm

Thanks for reply,

I have committed a mistake in the initial compilation. Now i use "make -B" to force the recompilation of all the used libraries.

However, i tried the following:

1.

A. Compile "imgpipe" using the following flags: CFLAGS = -O1 -H1 -fmm=risc.mm

B. Decode the pasta.jpg that is included in the example directory.


2.

A. Compile "imgpipe" using the following flags: CFLAGS = -O3 -H3 -fmm=vex16.mm

B. Decode the same image mentioned above, pasta.jpg.

----------------------------------

Below is part of the generated ta* files differences respectively:

< Avg. IPC (no stalls): 0.99
< Avg. IPC (with stalls): 0.92
---
> Avg. IPC (no stalls): 2.33
> Avg. IPC (with stalls): 1.98

Figure 11.10 in the book states that the base "no optimization" IPC for vex16 should be arround 4. This does not match with the results above.

Please advise,
Abed
ah105
 
Posts: 8
Joined: Sat Nov 04, 2006 7:32 pm

Postby ah105 » Fri Dec 01, 2006 1:49 pm

I gave it another try.

Below are the steps followed:

1. CFLAGS = -O0 -H1 -fmm=risc.mm

make clean
make imgpipe
make test

2. CFLAGS = -O3 -H3 -fmm=vex16.mm -prefetch -DVEX_RESTRICT -DJAMMED

make clean
make imgpipe
make test

Here is part of the difference between the ta* files, respectively:

< Avg. IPC (no stalls): 1.00
< Avg. IPC (with stalls): 0.93
39,45c42,43
< cycle counter = 393247340
< total ops = 392923952
< width[ 0] = 48696
< width[ 1] = 386328910
< width[ 2] = 1177786
< width[ 3] = 310678
< width[ 4] = 826859
---
> Avg. IPC (no stalls): 3.32
> Avg. IPC (with stalls): 2.76
46a45,51
> cycle counter = 96400268
> total ops = 319992442
> width[ 0] = 46455
> width[ 1] = 8198840
> width[ 2] = 4745121
> width[ 3] = 4464428
> width[ 4] = 72227519

Hope this explains the issue.
ah105
 
Posts: 8
Joined: Sat Nov 04, 2006 7:32 pm

Postby frb » Tue Dec 05, 2006 6:35 am

It appears that you're not passing the machine model correctly. The output you show seems to indicate that your machine target is 4-wide, hence your best ILP is around 3.x, which is consistent with the experiments described in the book.

Have you checked that you're actually generating instructions with more than 4 ops? Can you post the compiler machine model?

Also, make sure you are using the new "IssueWidth.#" flags that were introduced in version 3.38. These were added (long) after the book was published, so some material might be out of sync. See message at

http://www.vliw.org/vex/viewtopic.php?t=7

for details
frb
 
Posts: 62
Joined: Thu Nov 12, 2009 3:44 pm

Postby ah105 » Tue Dec 12, 2006 5:30 pm

Thank you,

My machine descriptors lacked this statement:

RES: IssueWidth.0 N

I used the following files as machine descriptors:

/vex-3.40/share/apps/gsm/risc ... vex16.mm

Please check if they are up-to-date.

Regards,
Abed
ah105
 
Posts: 8
Joined: Sat Nov 04, 2006 7:32 pm


Return to VEX Tools



Who is online

Users browsing this forum: No registered users and 12 guests

cron