{"id":3146,"date":"2023-07-06T15:47:19","date_gmt":"2023-07-06T15:47:19","guid":{"rendered":"https:\/\/nag.com\/?post_type=case-studies&#038;p=3146"},"modified":"2024-04-26T11:03:16","modified_gmt":"2024-04-26T11:03:16","slug":"3-x-speed-improvement-for-computational-fluid-dynamics-solver","status":"publish","type":"case-studies","link":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/","title":{"rendered":"3 x Speed Improvement for Computational Fluid Dynamics Solver"},"content":{"rendered":"\n<div class=\"gbc-title-banner ta ta-lg ta-xl\" style='background-color: #082d48ff; color: #ffffffff; border-radius: 0px; '>\n    <div class=\"container\" style='border-radius: 0px; '>\n        <div class=\"row justify-content--center\" style='color: #ffffffff;'>\n            <div class=\"col-12\"  >\n                <div class=\"wrap pv-4 \" style=\"0px\">\n                                <div class=\"col-12 col-md-12 col-lg-10 col-xl-8  banner-content\"  >\n    \n                                             <h1>3 x Speed Improvement for Computational Fluid Dynamics Solver<\/h1>\n                    \n                    <div class=\"mt-1 mb-1 content\"><p>Case Study<\/p>\n<\/div>\n\n                    \n                                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<!-- Spacer -->\n<div class=\"pt-4 pt-lg-4 pt-xl-4\" ><\/div>\n\n<div class=\"container content-area-default \">\n    <div class=\"row justify-content--center\">\n        <div class=\"col-12 col-md-12 col-lg-10 col-xl-8\">\n            <h3 class=\"field field--name-field-paragraph-title field--type-string field--label-hidden field--item\">Real-world success stories of <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG HPC Consulting<\/h3>\n<div class=\"field field--name-field-paragraph-text field--type-text-long field--label-hidden field--item\">\n<p>zCFD by Zenotech is a computational fluid dynamics (CFD) solver for steady-state or time-dependent flow simulation. It is written in Python and C++ and parallelised with OpenMP and MPI.<\/p>\n<p><span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG, acting through our role in the\u00a0<a href=\"https:\/\/pop-coe.eu\/\" target=\"_blank\" rel=\"noopener\">POP project<\/a>, conducted a Performance Audit to identify potential areas for improvement. This identified that the code was spending a surprisingly large amount of time executing in serial and that one particular OpenMP loop was suffering from load imbalance. The POP team also noted that the CPU frequency was being lowered when the code was run on the maximum number of threads (12 for the machine used in the Audit). As a result of the <span class=\"nag-n-override\" style=\"margin-left: 0 !important;\"><i>n<\/i><\/span>AG analysis, a number of changes were made to the code which resulted in significant improvements including:<\/p>\n<ul>\n<li>Code ran 1.65x faster on 12 threads<\/li>\n<li>A 3x performance improvement over the old code on 12 threads was observed when the modified code was applied to a test case 100x larger<\/li>\n<li>The average cycle time fell from 3,253ms to 1,185ms, which corresponds to going from 10.4 GFLOPS to 30.6 GFLOPS for a single Broadwell socket<\/li>\n<li>Load balancing was improved<\/li>\n<\/ul>\n<\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<div class=\"gbc-title-banner tac tac-lg tac-xl\" style='border-radius: 0px; '>\n    <div class=\"container\" style='border-radius: 0px; '>\n        <div class=\"row justify-content--center\" >\n            <div class=\"col-12\"  >\n                <div class=\"wrap pv-4 \" style=\"0pxbackground-color: \">\n                                <div class=\"col-12 col-md-12 col-lg-12 col-xl-12  banner-content\"  >\n    \n                    \n                    <div class=\"mt-1 mb-1 content\"><\/div>\n\n                    \n                    <a href='https:\/\/nag.com\/hpc-services\/' style='background-color: #63c0fdff; border-radius: 30px; font-weight: 600; ' class='btn mr-1  ' >Learn more about our HPC Services <i class='fas fa-angle-right'><\/i><\/a>                <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>zCFD by Zenotech is a computational fluid dynamics (CFD) solver for steady-state or time-dependent flow simulation. It is written in Python and C++ and parallelised with OpenMP and MPI.<\/p>\n","protected":false},"author":3,"featured_media":3147,"parent":0,"menu_order":0,"template":"","meta":{"content-type":"","footnotes":""},"post-tag":[43],"class_list":["post-3146","case-studies","type-case-studies","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>3 x Speed Improvement for Computational Fluid Dynamics Solver - nAG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"3 x Speed Improvement for Computational Fluid Dynamics Solver - nAG\" \/>\n<meta property=\"og:description\" content=\"zCFD by Zenotech is a computational fluid dynamics (CFD) solver for steady-state or time-dependent flow simulation. It is written in Python and C++ and parallelised with OpenMP and MPI.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/\" \/>\n<meta property=\"og:site_name\" content=\"nAG\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-26T11:03:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"779\" \/>\n\t<meta property=\"og:image:height\" content=\"469\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@NAGTalk\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/\",\"url\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/\",\"name\":\"3 x Speed Improvement for Computational Fluid Dynamics Solver - nAG\",\"isPartOf\":{\"@id\":\"https:\/\/nag.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg\",\"datePublished\":\"2023-07-06T15:47:19+00:00\",\"dateModified\":\"2024-04-26T11:03:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#primaryimage\",\"url\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg\",\"contentUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg\",\"width\":779,\"height\":469},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nag.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Case Studies\",\"item\":\"https:\/\/nag.com\/case-studies\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"3 x Speed Improvement for Computational Fluid Dynamics Solver\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nag.com\/#website\",\"url\":\"https:\/\/nag.com\/\",\"name\":\"NAG\",\"description\":\"Robust, trusted numerical software and computational expertise.\",\"publisher\":{\"@id\":\"https:\/\/nag.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nag.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nag.com\/#organization\",\"name\":\"Numerical Algorithms Group\",\"alternateName\":\"NAG\",\"url\":\"https:\/\/nag.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nag.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png\",\"contentUrl\":\"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png\",\"width\":1244,\"height\":397,\"caption\":\"Numerical Algorithms Group\"},\"image\":{\"@id\":\"https:\/\/nag.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/NAGTalk\",\"https:\/\/www.linkedin.com\/company\/nag\/\",\"https:\/\/www.youtube.com\/user\/NumericalAlgorithms\",\"https:\/\/github.com\/numericalalgorithmsgroup\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"3 x Speed Improvement for Computational Fluid Dynamics Solver - nAG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/","og_locale":"en_US","og_type":"article","og_title":"3 x Speed Improvement for Computational Fluid Dynamics Solver - nAG","og_description":"zCFD by Zenotech is a computational fluid dynamics (CFD) solver for steady-state or time-dependent flow simulation. It is written in Python and C++ and parallelised with OpenMP and MPI.","og_url":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/","og_site_name":"nAG","article_modified_time":"2024-04-26T11:03:16+00:00","og_image":[{"width":779,"height":469,"url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@NAGTalk","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/","url":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/","name":"3 x Speed Improvement for Computational Fluid Dynamics Solver - nAG","isPartOf":{"@id":"https:\/\/nag.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#primaryimage"},"image":{"@id":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#primaryimage"},"thumbnailUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg","datePublished":"2023-07-06T15:47:19+00:00","dateModified":"2024-04-26T11:03:16+00:00","breadcrumb":{"@id":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#primaryimage","url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg","contentUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/07\/popzcfdimage-e1714129354460.jpg","width":779,"height":469},{"@type":"BreadcrumbList","@id":"https:\/\/nag.com\/case-studies\/3-x-speed-improvement-for-computational-fluid-dynamics-solver\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nag.com\/"},{"@type":"ListItem","position":2,"name":"Case Studies","item":"https:\/\/nag.com\/case-studies\/"},{"@type":"ListItem","position":3,"name":"3 x Speed Improvement for Computational Fluid Dynamics Solver"}]},{"@type":"WebSite","@id":"https:\/\/nag.com\/#website","url":"https:\/\/nag.com\/","name":"NAG","description":"Robust, trusted numerical software and computational expertise.","publisher":{"@id":"https:\/\/nag.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nag.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nag.com\/#organization","name":"Numerical Algorithms Group","alternateName":"NAG","url":"https:\/\/nag.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nag.com\/#\/schema\/logo\/image\/","url":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png","contentUrl":"https:\/\/nag.com\/wp-content\/uploads\/2023\/11\/NAG-Logo.png","width":1244,"height":397,"caption":"Numerical Algorithms Group"},"image":{"@id":"https:\/\/nag.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/NAGTalk","https:\/\/www.linkedin.com\/company\/nag\/","https:\/\/www.youtube.com\/user\/NumericalAlgorithms","https:\/\/github.com\/numericalalgorithmsgroup"]}]}},"_links":{"self":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/case-studies\/3146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/case-studies"}],"about":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/types\/case-studies"}],"author":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/users\/3"}],"version-history":[{"count":1,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/case-studies\/3146\/revisions"}],"predecessor-version":[{"id":3148,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/case-studies\/3146\/revisions\/3148"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/media\/3147"}],"wp:attachment":[{"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/media?parent=3146"}],"wp:term":[{"taxonomy":"post-tag","embeddable":true,"href":"https:\/\/nag.com\/wp-json\/wp\/v2\/post-tag?post=3146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}