Hi,

I would like to add some insights and question to the topic of work estimates.

I've implemented a interface between StreamIt and C++ using memory buffers with 
the behavior based on FileReader and FileWriter. I guess that the work 
estimates are computed based on the amount of computation in filter's work. In 
case of my filters that are used as a front line interface between streamit and 
c++, they don't actually do any work, but they largely access memory and pop or 
push items on the streamit side. That means, that in the current work estimate 
implementation in streamit, they will be assigned 0% work estimate (like 
FileReader and FileWriter, right?), but I guess they actually take a lot of 
time to access memory. My question is: would the overall stream analysis 
benefit from customizing the work estimate to take the memory accesses into 
account (especially for filters such as those I mentioned), and not just 
relying on the ammount of computation.

Next question is related to the cluster backend (more specifically: multicore). 
Setting the -cluster n options tries to partition the stream graph for n load 
balanced threads. This doesn't mean that this will be the fastest 
implementation on the target machine, at least by my experiments (I had to try 
different n's and pick the one that gave the best run time of my algorithm). 
What I've seen is that the important thing is to keep all threads' work 
estimates as close to each other, and to keep the branches of a splitjoin 
symmetrical. This made me think that inventing simple "heuristic" procedure to 
find the partitioned stream graph that would minimize (or at least try to 
minimize based on those two mentioned criteria) the run time on a given 
architecture (for example 2 core machine) could be possible, right? I'm looking 
at it from an engineering perspective, if I'm wrong, sorry!

Best regards,

Josip


Message: 1
Date: Sun, 14 Dec 2008 18:27:40 -0500
From: "Rodric Rabbah" <rod...@gmail.com>
Subject: Re: [StreamIt-users] unit of work-estimate.txt
To: "Rita Chattopadhyay" <rita.chattopadh...@asu.edu>
Cc: streamit-us...@csail.mit.edu
Message-ID:
        <4f9829960812141527nccbbfdfya8dbaaec7ef2...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi Rita

The compiler estimate the work for each filter using a cost model of
every operation encountered in the filter work body. In other words,
the compiler iterates through the statement in a filter's work method,
and estimates the number of cycles required to compute the expressions
in the statements. The compiler has a set of costs that were derived
empiricaly (in the very near future, it will be possible to plug in
different cost models). If you're interested in these costs, you can
find the work estimation algorithm in
streams/src/at/dms/kjc/sir/lowering/partition/WorkEstimate.java.

The partitioning algorithms in the compiler will refine the filter
graph to achieve a set of N load balanced partitions, where N is the
number of processors and load balancing is with respect to the total
work estimate calculated for the filters in each partition. There are
other details related to the partitioning, and if you have more
specific questions we'll be happy to address them.

rodric


On Sun, Dec 7, 2008 at 12:52 AM, Rita Chattopadhyay
<rita.chattopadh...@asu.edu> wrote:
> Hi,
>
> I have the work-estimate.txt file got after executing FMRadio.str with 8
> processors (attached)....can anyone please tell me how this work is
> calculated and what is the unit of the work estimate against each
> thread?????
>
> Will be very benefitted to get a quick reply.
>
> Thanks,
> Rita
> Research student
> CSE dept
> ASU
> Arizona
>



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

Message: 2
Date: Mon, 15 Dec 2008 12:41:15 +0100
From: Josip Knezovi? <josip.knezo...@fer.hr>
Subject: [StreamIt-users] Cluster backend - combined_threads.cpp
To: <streamit-users@lists.csail.mit.edu>
Message-ID: <bfa9bdefce74724f889ff7f7a8e514d2011...@sluga.fer.hr>
Content-Type: text/plain; charset="iso-8859-2"

Hi all,

I've been looking arround the c++ code that strc generates for cluster backend 
in combined_threads.cpp. I noticed that in the main function there's a 
processing of arguments: -init, -ccp,  -runccp and -console. Can someone 
explain what are those arguments for, and are they relevant in any way if all 
threads of my program are mapped into one multicore machine?

Thanks, 
Josip

------------------------------------------------ 
Mr. Sc. Josip Knezovic, Ph.D. student 
Faculty of Electrical Engineering and Computing

Dept. of Control and Computer Engineering 
Unska 3, 10000 Zagreb, Croatia 
Tel.: +385 1 6129 619 
Fax.: +385 1 6129 785 
E-mail: josip.knezo...@fer.hr 
------------------------------------------------ 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
https://lists.csail.mit.edu/pipermail/streamit-users/attachments/20081215/3e7c7083/attachment-0001.htm
 

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

Message: 3
Date: Mon, 15 Dec 2008 17:49:54 +0530
From: "Bill Thies" <th...@mit.edu>
Subject: Re: [StreamIt-users] Cluster backend - combined_threads.cpp
To: " Josip Knezovi? " <josip.knezo...@fer.hr>
Cc: streamit-users@lists.csail.mit.edu
Message-ID:
        <4c23e1720812150419j484f9a9fiff20eeb9269d2...@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8

Hi Josip,

Those arguments are not relevant for you.  They relate to an
(unreleased) adaptive mode of execution whereby threads are
dynamically re-assigned depending on the runtime load balance.  The
-ccp flag corresponds to "centralized control processor" in this mode
of execution; the -init argument corresponds to the number of
iterations before loading prior state; and -console is a debugging
mode.

-Bill

On Mon, Dec 15, 2008 at 5:11 PM, Josip Knezovi? <josip.knezo...@fer.hr> wrote:
> Hi all,
>
> I've been looking arround the c++ code that strc generates for cluster
> backend in combined_threads.cpp. I noticed that in the main function there's
> a processing of arguments: -init, -ccp,  ?runccp and ?console. Can someone
> explain what are those arguments for, and are they relevant in any way if
> all threads of my program are mapped into one multicore machine?
>
> Thanks,
>
> Josip
>
> ------------------------------------------------
>
> Mr. Sc. Josip Knezovic, Ph.D. student
>
> Faculty of Electrical Engineering and Computing
>
> Dept. of Control and Computer Engineering
>
> Unska 3, 10000 Zagreb, Croatia
>
> Tel.: +385 1 6129 619
>
> Fax.: +385 1 6129 785
>
> E-mail: josip.knezo...@fer.hr
>
> ------------------------------------------------
>
> _______________________________________________
> StreamIt-users mailing list
> StreamIt-users@lists.csail.mit.edu
> https://lists.csail.mit.edu/mailman/listinfo/streamit-users
>
>

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

Message: 4
Date: Mon, 15 Dec 2008 14:43:39 +0100
From: Josip Knezovi? <josip.knezo...@fer.hr>
Subject: Re: [StreamIt-users] Cluster backend - combined_threads.cpp
To: "Bill Thies" <th...@mit.edu>
Cc: streamit-users@lists.csail.mit.edu
Message-ID: <bfa9bdefce74724f889ff7f7a8e514d2011...@sluga.fer.hr>
Content-Type: text/plain;       charset="iso-8859-2"

Hi Bill,

Great! Thanks a lot.

Josip



-----Original Message-----
From: bth...@gmail.com [mailto:bth...@gmail.com] On Behalf Of Bill Thies
Sent: Monday, December 15, 2008 1:20 PM
To: Josip Knezovi?
Cc: streamit-users@lists.csail.mit.edu
Subject: Re: [StreamIt-users] Cluster backend - combined_threads.cpp

Hi Josip,

Those arguments are not relevant for you.  They relate to an
(unreleased) adaptive mode of execution whereby threads are
dynamically re-assigned depending on the runtime load balance.  The
-ccp flag corresponds to "centralized control processor" in this mode
of execution; the -init argument corresponds to the number of
iterations before loading prior state; and -console is a debugging
mode.

-Bill

On Mon, Dec 15, 2008 at 5:11 PM, Josip Knezovi? <josip.knezo...@fer.hr> wrote:
> Hi all,
>
> I've been looking arround the c++ code that strc generates for cluster
> backend in combined_threads.cpp. I noticed that in the main function there's
> a processing of arguments: -init, -ccp,  -runccp and -console. Can someone
> explain what are those arguments for, and are they relevant in any way if
> all threads of my program are mapped into one multicore machine?
>
> Thanks,
>
> Josip
>
> ------------------------------------------------
>
> Mr. Sc. Josip Knezovic, Ph.D. student
>
> Faculty of Electrical Engineering and Computing
>
> Dept. of Control and Computer Engineering
>
> Unska 3, 10000 Zagreb, Croatia
>
> Tel.: +385 1 6129 619
>
> Fax.: +385 1 6129 785
>
> E-mail: josip.knezo...@fer.hr
>
> ------------------------------------------------
>
> _______________________________________________
> StreamIt-users mailing list
> StreamIt-users@lists.csail.mit.edu
> https://lists.csail.mit.edu/mailman/listinfo/streamit-users
>
>



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

_______________________________________________
StreamIt-users mailing list
StreamIt-users@lists.csail.mit.edu
https://lists.csail.mit.edu/mailman/listinfo/streamit-users


End of StreamIt-users Digest, Vol 22, Issue 2
*********************************************

_______________________________________________
StreamIt-users mailing list
StreamIt-users@lists.csail.mit.edu
https://lists.csail.mit.edu/mailman/listinfo/streamit-users

Reply via email to