<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" media="screen" href="/App_Themes/default/rss.xslt"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Comment Feed for Parallel Computing Platform: Asynchronous Agents for Native Code (Charles on Channel 9)</title><atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/posts/charles/parallel-computing-platform-asynchronous-agents-for-native-code/rss/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Comment Feed for Parallel Computing Platform: Asynchronous Agents for Native Code (Charles on Channel 9)</title><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/</link></image><description>Parallel Computing Platform: Asynchronous Agents for Native Code</description><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/</link><language>en-us</language><pubDate>Wed, 19 Nov 2008 03:54:24 GMT</pubDate><lastBuildDate>Wed, 19 Nov 2008 03:54:24 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3608.3122, Culture=neutral, PublicKeyToken=null)</generator><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>&lt;P&gt;Hi, really enjoyed the video(s).&lt;/P&gt;
&lt;P&gt;I don't generally code in C++ as such, I was just wanting to clear up a couple of questions.&lt;/P&gt;
&lt;P&gt;In the video you mentioned that pointers should be discarded as soon as they are passed on to the next agent, and in one of the examples given for an x MB image file the pointer would be handed off from one to the next, and discarded en-route. Where does the responsibility lie for releasing the storage pointed to by the pointer?&lt;BR&gt;&lt;BR&gt;You have based&amp;nbsp;this on the&amp;nbsp;dataflow model of computation. Yes?&lt;BR&gt;If so, and this is sort of related to the previous topic, what would be the best approach for handling persistent storage, and/or shared memory?&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=443932</link><pubDate>Wed, 19 Nov 2008 03:54:24 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=443932</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/443932/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Hi, really enjoyed the video(s).
I don't generally code in C++ as such, I was just wanting to clear up a couple of questions.
In the video you mentioned that pointers should be discarded as soon as they are passed on to the next agent, and in one of the examples given for an x MB image file the&amp;#8230;</evnet:previewtext><dc:creator>Richard</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/443932/Trackback.aspx</trackback:ping></item><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>A couple of quick responses here. &lt;BR&gt;&lt;BR&gt;Craig, OpenMP can be a quick way to get started today. Particularly if all you are looking to parallelize a for loop (make sure you look at the different scheduling options in particular 'dynamic'). &lt;BR&gt;&lt;BR&gt;WRT to UI threads (or other) threads, the runtime doesn't do anything special for threads it doesn't know about which means that the OS will round-robin those threads with the other running threads on the system. There are some knobs in the runtime which we'll probably discuss at a later which can be used to be more particular with the scheduler and UI threasd. I'll also try to get a blog post up in the next week or so to talk about the message blocks in more detail and I'll probably mention communicating with UI threads at that point.&lt;BR&gt;&lt;BR&gt;Jan, &lt;BR&gt;You asked 'will I get into trouble if I call into legacy code' that used traditional threading constructs like mutexes and critical sections.&amp;nbsp; If by trouble, you mean things like deadlocks, it is possible to get into trouble, but it's also possible to avoid it.&amp;nbsp; You would need to take some care to ensure that thisinteraction works well and you aren't creating a deadlock or livelock.&amp;nbsp; &lt;BR&gt;&lt;BR&gt;The message blocks (particularly call and tranform) mentioned in the video aren't re-entrant, which can be great at helping correctness,&amp;nbsp;so &amp;nbsp;if I have a pipeline or network built up of a series of transforms there's only going to be one instance of each stage of that pipleine running by-default, though they can all be active at the same time.&amp;nbsp; However if as you mentioned you're interacting with legacy code in each stage that is taking locks, there may be a chance of deadlock.&lt;BR&gt;&lt;BR&gt;Regardin erlang, this is still a C++ library so the language constraints of C++ will still apply.&amp;nbsp; However as we mentioned, the message blocks provide a certain degree of ordering and for 'call' and 'transform' they aren't re-entrant. We'll also make copies&amp;nbsp;of&amp;nbsp;messages between blocks.&amp;nbsp; As I'm sure Niklas mentioned, it's possible to get yourself into trouble if you're passing pointers around, but it's also very possible to avoid a lot of trouble by following best practices.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=435009</link><pubDate>Thu, 23 Oct 2008 14:28:33 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=435009</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/435009/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>A couple of quick responses here. Craig, OpenMP can be a quick way to get started today. Particularly if all you are looking to parallelize a for loop (make sure you look at the different scheduling options in particular 'dynamic'). WRT to UI threads (or other) threads, the runtime doesn't do&amp;#8230;</evnet:previewtext><dc:creator>Rick Molloy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/435009/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>&lt;P&gt;[after watching the full video]&lt;BR&gt;&lt;BR&gt;Ah, Erlang is mentioned near the end. Would still like to know which constraints are same or different as compared to erlang.... &lt;BR&gt;&lt;BR&gt;One more thing. Will I get into trouble if I call into legacy code that uses traditional threading constructs like mutexes and critical sections? &lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=434217</link><pubDate>Mon, 20 Oct 2008 22:11:06 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=434217</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/434217/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>[after watching the full video]Ah, Erlang is mentioned near the end. Would still like to know which constraints are same or different as compared to erlang.... One more thing. Will I get into trouble if I call into legacy code that uses traditional threading constructs like mutexes and critical sections? </evnet:previewtext><dc:creator>jan.devaan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/434217/Trackback.aspx</trackback:ping></item><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>&lt;P&gt;Sounds like a cool addition for C++.&amp;nbsp; &lt;BR&gt;&lt;BR&gt;Sounds similar to the Erlang&amp;nbsp;actor based programming model. Although I think the Erlang model is more restrictive. &lt;BR&gt;&lt;BR&gt;Do I understand correctly that Actors are not reentrant (so no other messages are handled during a blocking receive)? &lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=434215</link><pubDate>Mon, 20 Oct 2008 21:53:49 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=434215</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/434215/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Sounds like a cool addition for C++.&amp;nbsp; Sounds similar to the Erlang&amp;nbsp;actor based programming model. Although I think the Erlang model is more restrictive. Do I understand correctly that Actors are not reentrant (so no other messages are handled during a blocking receive)? </evnet:previewtext><dc:creator>jan.devaan</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/434215/Trackback.aspx</trackback:ping></item><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>Thanks Rick, We have started using OpenMP so it is good to hear&amp;nbsp;both technologies will work togeather.&amp;nbsp; OpenMP seems like a good quick way of getting parallization into existing applications.&amp;nbsp; With future work getting done in future when the Concurrecy Runtime gets released, isolating tasks as you suggested.&lt;BR&gt;&lt;BR&gt;One other question you might to able to answer for me is what impact the Concurrency Runtime will have on UI threads.&amp;nbsp; Will there be any features that will aid&amp;nbsp;the Concurrency Runtime in communicating with windows/controls ect.&amp;nbsp; With OpenMP we have few issues when we need to communicate with the UI.</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=434095</link><pubDate>Mon, 20 Oct 2008 00:52:36 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=434095</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/434095/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Thanks Rick, We have started using OpenMP so it is good to hear&amp;nbsp;both technologies will work togeather.&amp;nbsp; OpenMP seems like a good quick way of getting parallization into existing applications.&amp;nbsp; With future work getting done in future when the Concurrecy Runtime gets released, isolating&amp;#8230;</evnet:previewtext><dc:creator>Craig Lane</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/434095/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>Thanks for your reply, Rick!&amp;nbsp; This all sounds very nice. im just trying to compare your system with what others came up with. i just like it when COM isn't involved because sometimes on compilers other than msvc this isnt the most of joy. &lt;br&gt;also things like supporting allocators (e.g. 16 byte aligned allocators) wouldnt be the worst thing to have these days. but, i dont want to annoy you with that any further. it's just the things i 'd be looking for when choosing between the ms falvor and competitors'. &lt;br&gt;cheers,&lt;br&gt;martin&lt;br&gt;btw. bleed is really great stuff.&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433849</link><pubDate>Sat, 18 Oct 2008 01:56:36 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433849</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/433849/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Thanks for your reply, Rick!&amp;nbsp; This all sounds very nice. im just trying to compare your system with what others came up with. i just like it when COM isn't involved because sometimes on compilers other than msvc this isnt the most of joy. also things like supporting allocators (e.g. 16 byte&amp;#8230;</evnet:previewtext><dc:creator>mwirth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/433849/Trackback.aspx</trackback:ping></item><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>&lt;P&gt;mwirth,&lt;/P&gt;
&lt;P&gt;Much of the functionality we’ve talked about in the Asynchronous Agents Library and the Parallel Pattern Library in these past 2 videos is implemented as template classes and methods in header files; they aren’t policy driven template classes, but they also don’t require you to implement a COM interface either to use them.&amp;nbsp; &amp;nbsp;The Agents &amp;amp; Parallel Pattern Library (PPL) are built on top of the Concurrency Runtime itself, which will likely have some significant non-template code (e.g. compiled binary).&lt;/P&gt;
&lt;P&gt;CraigL,&lt;/P&gt;
&lt;P&gt;Regarding OpenMP: Agents and the PPL are not necessarily a replacement for OpenMP, consider them library based alternatives. The Agents library in particular is orthogonal in the scenarios it addresses to what’s provided in OpenMP. &amp;nbsp;We haven’t announced any ship or product dates for the work that we’ve discussed in these two videos or on our blog at &lt;A href="http://blogs.msdn.com/nativeconcurrency"&gt;http://blogs.msdn.com/nativeconcurrency&lt;/A&gt; so when folks ask what to do in the interim in C++, I’ll tend to suggest looking at what’s available right now like OpenMP if it fits the pattern.&amp;nbsp; The other forward looking guidance that can serve is to start preparing by decomposing applications now into isolated tasks and components that minimize shared state to avoid those pesky correctness issues when you go to parallelize them.&lt;/P&gt;
&lt;P&gt;Hope this helps,&lt;/P&gt;
&lt;P&gt;Rick&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433839</link><pubDate>Sat, 18 Oct 2008 00:04:54 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433839</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/433839/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>mwirth,
Much of the functionality we’ve talked about in the Asynchronous Agents Library and the Parallel Pattern Library in these past 2 videos is implemented as template classes and methods in header files; they aren’t policy driven template classes, but they also don’t require you to implement a&amp;#8230;</evnet:previewtext><dc:creator>Rick Molloy</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/433839/Trackback.aspx</trackback:ping></item><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>&lt;P&gt;Will this new technology be a replacement for OpenMP?&amp;nbsp; What will the future support be like for OpenMP?&amp;nbsp; Some comments on what users should do in the interim before the release of the currency runtime would be appreciated.&lt;/P&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433646</link><pubDate>Fri, 17 Oct 2008 02:02:16 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433646</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/433646/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Will this new technology be a replacement for OpenMP?&amp;nbsp; What will the future support be like for OpenMP?&amp;nbsp; Some comments on what users should do in the interim before the release of the currency runtime would be appreciated.</evnet:previewtext><dc:creator>Craig Lane</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/433646/Trackback.aspx</trackback:ping></item><item><title>Re: Parallel Computing Platform: Asynchronous Agents for Native Code</title><description>Nice! another c++ video! always appreciated!&lt;br&gt;There's one question that i think has not been asked yet (well.. there are more i guess): what form does that new c++ concurrency runtime take? i mean.. this all could be done as a pure header-only c++ library thats mainly driven by policy classes. is it "just" that (which i would always prefer) or is there some COM underneath? things like IAgent? (hope not ! :D) &lt;br&gt;&lt;br&gt;anyways! i think this is a very good approach, i just hope that the underlying machinery is not too heavy (something i've to install on a client machine via msi/msm for instance?). &lt;br&gt;&lt;br&gt;i hope you can understand what im trying to get at ;) i just have the fear that there's people out there who would do this sort of thing as a header-only library thats included into every module.. and there might be a really heavy-weight approach with COM, libraries, dlls, versioning and whatnot. &lt;br&gt;&lt;br&gt;on which side are you? :D&lt;br&gt;&lt;br&gt;cheers!&lt;br&gt;martin&lt;br&gt;</description><comments></comments><link>http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433606</link><pubDate>Fri, 17 Oct 2008 00:28:26 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/posts/Charles/Parallel-Computing-Platform-Asynchronous-Agents-for-Native-Code/?CommentID=433606</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/433606/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Nice! another c++ video! always appreciated!There's one question that i think has not been asked yet (well.. there are more i guess): what form does that new c++ concurrency runtime take? i mean.. this all could be done as a pure header-only c++ library thats mainly driven by policy classes. is it&amp;#8230;</evnet:previewtext><dc:creator>mwirth</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/433606/Trackback.aspx</trackback:ping></item></channel></rss>