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