{"id":775,"date":"2010-10-04T20:23:18","date_gmt":"2010-10-05T00:23:18","guid":{"rendered":"https:\/\/www.bu.edu\/pasi\/?page_id=775"},"modified":"2019-07-05T12:09:17","modified_gmt":"2019-07-05T16:09:17","slug":"parallel-performance-and-parallel-algorithms","status":"publish","type":"page","link":"https:\/\/www.bu.edu\/pasi\/courses\/parallel-performance-and-parallel-algorithms\/","title":{"rendered":"Parallel performance and parallel algorithms"},"content":{"rendered":"<h3>by Prof. L. Ridgway Scott<\/h3>\n<p><strong>University of Chicago<\/strong><\/p>\n<h3>Parallel performance<\/h3>\n<h3><a href=\"\/pasi\/files\/2010\/10\/algorithm200x200.png\"><img loading=\"lazy\" class=\"size-full wp-image-779 alignright\" title=\"algorithm200x200\" src=\"\/pasi\/files\/2010\/10\/algorithm200x200.png\" alt=\"algorithm200x200\" width=\"200\" height=\"200\" srcset=\"https:\/\/www.bu.edu\/pasi\/files\/2010\/10\/algorithm200x200.png 200w, https:\/\/www.bu.edu\/pasi\/files\/2010\/10\/algorithm200x200-150x150.png 150w\" sizes=\"(max-width: 200px) 100vw, 200px\" \/><\/a><\/h3>\n<p>One of the goals in high-performance computing (HPC) is to achieve the best possible <em>performance<\/em> from parallel computers. But performance can be measured in a variety of ways; in HPC, we are generally interested in the speed at which floating-point computation is done. \u00a0Thus, we use for example the units of giga-flop\/s\u00a0(a billion floating point operations per second).<\/p>\n<p>A given computer will have a maximum floating point performance, and a given code can never exceed this figure. Often, it falls short by a vast amount, especially in parallel. \u00a0It is much more difficult to achieve parallel performance than sequential performance, and it is also more difficult to measure. \u00a0Factors that become critical are synchronization, load balance, and communication costs.<\/p>\n<p>This part of the course will focus on parallel performance analysis; we will cover:<\/p>\n<ul>\n<li>performance measures<\/li>\n<li>limits to performance<\/li>\n<li>scalability<\/li>\n<li>load balancing<\/li>\n<li>real-world parallelism<\/li>\n<\/ul>\n<h3>Parallel algorithms<\/h3>\n<p>Central to the subject of parallel computing are algorithms. \u00a0As a general rule, <em>no <\/em>parallelism of any significance occurs naturally; it must be created by removing <em>dependencies<\/em>. \u00a0Often, entirely <em>new<\/em> algorithms have to be created to achieve a certain task in parallel.<\/p>\n<p>One aspect in particular that requires efficient algorithms is <em>collective operations<\/em>. These are operations involving a group of processors to produce a single data structure or task result. \u00a0For example, a <em>barrier<\/em> in shared memory computing, and a <em>broadcast<\/em> in message passing are collective operations.<\/p>\n<p>In this part of the course, we will cover:<\/p>\n<ul>\n<li>collective operations: prefix and scan<\/li>\n<li>tree\/ring algorithms<\/li>\n<li>matrix-vector product: the power method<\/li>\n<\/ul>\n<p>We will also discuss briefly some aspects of linear systems of equations, in particular their dependence analysis.<\/p>\n<h2>Supplementary material<\/h2>\n<ul>\n<li><em>Scientific Parallel Computing<\/em>, L. Ridgway Scott, Terry Clark, Babak Bagheri, Princeton University Press, 2005 [<a href=\"http:\/\/www.amazon.com\/Scientific-Parallel-Computing-Ridgway-Scott\/dp\/069111935X\/ref=sr_1_2?s=books&amp;ie=UTF8&amp;qid=1286289730&amp;sr=1-2\" target=\"_blank\">link for purchase<\/a>]<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>by Prof. L. Ridgway Scott University of Chicago Parallel performance One of the goals in high-performance computing (HPC) is to achieve the best possible performance from parallel computers. But performance can be measured in a variety of ways; in HPC, we are generally interested in the speed at which floating-point computation is done. \u00a0Thus, we [&hellip;]<\/p>\n","protected":false},"author":3344,"featured_media":0,"parent":321,"menu_order":3,"comment_status":"closed","ping_status":"open","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/pages\/775"}],"collection":[{"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/users\/3344"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/comments?post=775"}],"version-history":[{"count":12,"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/pages\/775\/revisions"}],"predecessor-version":[{"id":1646,"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/pages\/775\/revisions\/1646"}],"up":[{"embeddable":true,"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/pages\/321"}],"wp:attachment":[{"href":"https:\/\/www.bu.edu\/pasi\/wp-json\/wp\/v2\/media?parent=775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}