<div dir="ltr"><div dir="ltr">The path to remote pointers in ISO C++ is long but likely goes through the heterogeneous working group led by Michael Wong.  I recommend taking a look at <a href="https://github.com/codeplaysoftware/standards-proposals">https://github.com/codeplaysoftware/standards-proposals</a> to see what has been discussed so far.<div><br></div><div>Jeff</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 27, 2018 at 8:14 AM Edward Givelberg <<a href="mailto:ed.givelberg@gmail.com">ed.givelberg@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">Jeff,<div>Multi-core CPUs and all the associated software technologies (shared memory, threads, etc) are a technological dead end.</div><div>I argue more than that: all software technologies that use processes</div><div>are dead on arrival. This includes the technologies you mention in</div><div>your presentation</div><div><a href="https://www.ixpug.org/images/docs/KAUST_Workshop_2018/IXPUG_Invited2_Hammond.pdf" target="_blank">https://www.ixpug.org/images/docs/KAUST_Workshop_2018/IXPUG_Invited2_Hammond.pdf</a><br></div><div>People got used to processes over decades, so when they talk about parallelism they immediately talk about processes, but this is the root of the problem. I propose object-level parallelism. An object is more than a process. It is a virtual machine.</div><div><br></div><div>I propose to introduce remote pointers into C++. I am very surprised nobody thought of this before. I'd be curious to know how much work</div><div>people think this would be to do it in LLVM. I know it may be possible to introduce something like remote_ptr, but I don't think it is a good idea.</div><div><br></div><div>I am also proposing a new way of executing code, which I call causal asynchronous execution. I'd like to know if people find it natural to write code like this.</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Nov 26, 2018 at 10:26 PM Jeff Hammond <<a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div dir="auto">I’ll probably have more detailed comments later but the related work you may wish to consider includes:</div></div><div dir="auto">- UPC and Berkeley UPC++</div><div dir="auto">- Charm++</div><div dir="auto">- HPX from LSU</div><div dir="auto">- DASH (<a href="http://www.dash-project.org/" target="_blank">http://www.dash-project.org/</a>)<div dir="auto">- MADNESS (<a href="https://arxiv.org/abs/1507.01888" target="_blank">https://arxiv.org/abs/1507.01888</a>)</div><div dir="auto"><br></div><div dir="auto">There are quite a few dead parallel C++ dialects from the last millennium but it’s probably not worth your time to find and read about them.</div><div dir="auto"><br></div><div dir="auto">I’m very glad that you used MPI as your communication runtime. This will save you lots of pain.</div><div dir="auto"><br></div><div dir="auto">Jeff</div></div><div><br><div class="gmail_quote"><div dir="ltr">On Mon, Nov 26, 2018 at 2:57 PM Edward Givelberg via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><br>Chris Lattner suggested that I post to this mailing list.<br><br>I used Clang/LLVM to build a prototype for parallel<br>interpretation of C++. It's based on the idea that C++ <br>objects can be constructed remotely, and accessed via <br>remote pointers, without changing the C++ syntax.<br>I am a mathematician, not an expert on compilers.<br>I am proposing changes to the C++ standard and to the<br>compiler architecture, so I'm very interested to hear from<br>experts.<br>My paper is</div><div dir="ltr"><a href="https://arxiv.org/abs/1811.09303" target="_blank">https://arxiv.org/abs/1811.09303</a><br>Best regards,<br>Ed<br><br>-----------------------------------------------------------------<br>A solution to the problem of parallel programming <br>E. Givelberg<br><br>The problem of parallel programming is the most important<br>open problem of computer engineering.<br>We show that object-oriented languages, such as C++,<br>can be interpreted as parallel programming languages,<br>and standard sequential programs can be parallelized automatically.<br>Parallel C++ code is typically more than ten times shorter than<br>the equivalent C++ code with MPI.<br>The large reduction in the number of lines of code in parallel C++<br>is primarily due to the fact that communications instructions,<br>including packing and unpacking of messages, are automatically <br>generated in the implementation of object operations.  <br>We believe that implementation and standardization of parallel <br>object-oriented languages will drastically reduce the cost of <br>parallel programming.<br>his work provides the foundation for building a new computer <br>architecture, the multiprocessor computer, including <br>an object-oriented operating system and more energy-efficient, <br>and easily programmable, parallel hardware architecture.<br>The key software component of this architecture is a compiler<br>for object-oriented languages.  We describe a novel compiler<br>architecture with a dedicated back end for the interconnect fabric,<br>making the network a part of a multiprocessor computer,<br>rather than a collection of pipes between processor nodes.<br>Such a compiler exposes the network hardware features <br>to the application, analyzes its network utilization, optimizes the<br>application as a whole, and generates the code for the<br>interconnect fabric and for the processors.<br>Since the information technology sector's electric power consumption<br>is very high, and rising rapidly, implementation and widespread <br>adoption of multiprocessor computer architecture<br>will significantly reduce the world's energy consumption.<br></div></div></div></div>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</blockquote></div></div>-- <br><div dir="ltr" class="m_-2570504318296661083m_4275751520599347831gmail_signature" data-smartmail="gmail_signature">Jeff Hammond<br><a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br><a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a></div>
</blockquote></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Jeff Hammond<br><a href="mailto:jeff.science@gmail.com" target="_blank">jeff.science@gmail.com</a><br><a href="http://jeffhammond.github.io/" target="_blank">http://jeffhammond.github.io/</a></div>