{"id":273,"date":"2008-04-26T19:42:22","date_gmt":"2008-04-26T23:42:22","guid":{"rendered":"http:\/\/mat.tepper.cmu.edu\/blog\/?p=267"},"modified":"2008-04-26T19:42:22","modified_gmt":"2008-04-26T23:42:22","slug":"knuth-and-multicore-systems","status":"publish","type":"post","link":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/2008\/04\/26\/knuth-and-multicore-systems\/","title":{"rendered":"Knuth and Multicore Systems"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.stanfordalumni.org\/news\/magazine\/2006\/mayjun\/images\/features\/knuth_don.jpg\" align=\"left\" height=\"184\" hspace=\"5\" width=\"200\" \/>Donald Knuth has been publishing &#8220;fascicles&#8221; from his Volume 4 (Combinatorial Algorithms) of his epic <a href=\"http:\/\/www-cs-faculty.stanford.edu\/~knuth\/taocp.html\"><em>The Art of Computer Programming<\/em><\/a>.  These are shortish (100-150 page) sub-chapters of a work on an area that expands faster than Don can write.  You can download some of the <a href=\"http:\/\/www-cs-faculty.stanford.edu\/~knuth\/news.html\">preliminary versions<\/a> on Knuth&#8217;s page to get the flavor.<\/p>\n<p>Knuth was <a href=\"http:\/\/www.informit.com\/articles\/article.aspx?p=1193856\">interviewed by Andrew Binstock of InformIT<\/a>.   Great interview with very provocative questions and answers!  I particularly liked the exchange on parallel algorithms and multicore systems.  Don is not a fan:<\/p>\n<blockquote><p><strong>Andrew: One of the emerging problems for developers, especially client-side developers, is changing their thinking to write programs in terms of threads. This concern, driven by the advent of inexpensive multicore PCs, surely will require that many algorithms be recast for multithreading, or at least to be thread-safe. So far, much of the work you\u2019ve published for Volume 4 of <\/strong><a href=\"http:\/\/www.informit.com\/store\/product.aspx?isbn=0201485419\">The Art of Computer Programming<\/a><strong> (<em>TAOCP<\/em>) doesn\u2019t seem to touch on this dimension. Do you expect to enter into problems of concurrency and parallel programming in upcoming work, especially since it would seem to be a natural fit with the combinatorial topics you\u2019re currently working on?<\/strong><\/p>\n<p>Donald: The field of combinatorial algorithms is so vast that I\u2019ll be lucky to pack its <em>sequential<\/em> aspects into three or four physical volumes, and I don\u2019t think the sequential methods are ever going to be unimportant. Conversely, the half-life of parallel techniques is very short, because hardware changes rapidly and each new machine needs a somewhat different approach. So I decided long ago to stick to what I know best. Other people understand parallel machines much better than I do; programmers should listen to them, not me, for guidance on how to deal with simultaneity.<\/p>\n<p><strong>Andrew: Vendors of multicore processors have expressed frustration at the difficulty of moving developers to this model. As a former professor, what thoughts do you have on this transition and how to make it happen? Is it a question of proper tools, such as better native support for concurrency in languages, or of execution frameworks? Or are there other solutions?<\/strong><\/p>\n<p>Donald: I don\u2019t want to duck your question entirely. I might as well flame a bit about my personal unhappiness with the current trend toward multicore architecture. To me, it looks more or less like the hardware designers have run out of ideas, and that they\u2019re trying to pass the blame for the future demise of Moore\u2019s Law to the software writers by giving us machines that work faster only on a few key benchmarks!<\/p><\/blockquote>\n<p>I have been struggling to take advantage of my (now not so-)new computer and its 8 cores.  Since about 90% of my used CPU cycles are done in CPLEX, and I only have a single-core license, I am actually running at about 10% capacity on that machine.  And my efforts to write some specialized codes have not been successful, though that is perhaps more due to lack of time and effort than any inherent difficulty.  Does the new generation of OR researchers understand and feel comfortable with multi-core programming?  Or are we now just going to stall in terms of computation speed in practice?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Donald Knuth has been publishing &#8220;fascicles&#8221; from his Volume 4 (Combinatorial Algorithms) of his epic The Art of Computer Programming. These are shortish (100-150 page) sub-chapters of a work on an area that expands faster than Don can write. You can download some of the preliminary versions on Knuth&#8217;s page to get the flavor. Knuth &hellip; <a href=\"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/2008\/04\/26\/knuth-and-multicore-systems\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Knuth and Multicore Systems&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,12],"tags":[],"class_list":["post-273","post","type-post","status-publish","format-standard","hentry","category-books","category-computing"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/273","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=273"}],"version-history":[{"count":0,"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/posts\/273\/revisions"}],"wp:attachment":[{"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=273"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=273"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mat.tepper.cmu.edu\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=273"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}