{"id":27448,"date":"2022-12-24T12:25:35","date_gmt":"2022-12-24T06:55:35","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/"},"modified":"2022-12-24T12:25:35","modified_gmt":"2022-12-24T06:55:35","slug":"solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/","title":{"rendered":"[Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-23763961\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"23763961\" data-parentid=\"23763720\" data-score=\"2\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>You&#8217;ve programmed a canonical <em>data-race<\/em>.  All the threads in your program are contending to update the variable <code>count<\/code> and there are no guarantees about the order in which each thread reads, updates, then writes the values to the variable.  Whatever you may believe C++ does not guarantee that <code>++<\/code> is applied atomically.<\/p>\n<p>You should read on in your OpenMP tutorial to find out about <em>shared<\/em> (and <em>private<\/em>) variables, and also about <em>reductions<\/em>.<\/p>\n<p>If you search around here on SO you should find similar questions, some of them with answers including code to show you how to do what you are trying to do.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\"><\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved OpenMP &#8211; simplest accumulator in loops gives incorrect result <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] You&#8217;ve programmed a canonical data-race. All the threads in your program are contending to update the variable count and there are no guarantees about the order in which each thread reads, updates, then writes the values to the variable. Whatever you may believe C++ does not guarantee that ++ is applied atomically. You should &#8230; <a title=\"[Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\" aria-label=\"More on [Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,884,1164],"class_list":["post-27448","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-multithreading","tag-openmp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] OpenMP - simplest accumulator in loops gives incorrect result - JassWeb<\/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:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] OpenMP - simplest accumulator in loops gives incorrect result - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] You&#8217;ve programmed a canonical data-race. All the threads in your program are contending to update the variable count and there are no guarantees about the order in which each thread reads, updates, then writes the values to the variable. Whatever you may believe C++ does not guarantee that ++ is applied atomically. You should ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-24T06:55:35+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result\",\"datePublished\":\"2022-12-24T06:55:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\"},\"wordCount\":124,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"multithreading\",\"openmp\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\",\"name\":\"[Solved] OpenMP - simplest accumulator in loops gives incorrect result - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-12-24T06:55:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] OpenMP - simplest accumulator in loops gives incorrect result - JassWeb","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:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] OpenMP - simplest accumulator in loops gives incorrect result - JassWeb","og_description":"[ad_1] You&#8217;ve programmed a canonical data-race. All the threads in your program are contending to update the variable count and there are no guarantees about the order in which each thread reads, updates, then writes the values to the variable. Whatever you may believe C++ does not guarantee that ++ is applied atomically. You should ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/","og_site_name":"JassWeb","article_published_time":"2022-12-24T06:55:35+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result","datePublished":"2022-12-24T06:55:35+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/"},"wordCount":124,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","multithreading","openmp"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/","url":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/","name":"[Solved] OpenMP - simplest accumulator in loops gives incorrect result - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-12-24T06:55:35+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-openmp-simplest-accumulator-in-loops-gives-incorrect-result\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] OpenMP &#8211; simplest accumulator in loops gives incorrect result"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/27448","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=27448"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/27448\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=27448"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=27448"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=27448"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}