From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-relay152.hrz.tu-darmstadt.de (mail-relay152.hrz.tu-darmstadt.de [130.83.252.152]) by sourceware.org (Postfix) with ESMTPS id 7DAAE385EC57 for ; Wed, 16 Mar 2022 09:06:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7DAAE385EC57 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=theorie.ikp.physik.tu-darmstadt.de Authentication-Results: sourceware.org; spf=none smtp.mailfrom=theorie.ikp.physik.tu-darmstadt.de Received: from smtp.tu-darmstadt.de (mail-relay158.hrz.tu-darmstadt.de [IPv6:2001:41b8:83f:1611::158]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits)) (Client CN "mail-relay158.hrz.tu-darmstadt.de", Issuer "DFN-Verein Global Issuing CA" (not verified)) by mail-relay152.hrz.tu-darmstadt.de (Postfix) with ESMTPS id 4KJPWr6lcGz43pR for ; Wed, 16 Mar 2022 10:06:00 +0100 (CET) Received: from [IPV6:2003:e0:371a:c700:9143:bb0a:709e:2395] (p200300e0371ac7009143bb0a709e2395.dip0.t-ipconnect.de [IPv6:2003:e0:371a:c700:9143:bb0a:709e:2395]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by smtp.tu-darmstadt.de (Postfix) with ESMTPSA id 4KJPWq6R5Dz43Vh for ; Wed, 16 Mar 2022 10:05:59 +0100 (CET) Content-Type: multipart/mixed; boundary="------------S8GvtXgUUoSweAcFxcJNgP26" Message-ID: <7f02b184-9588-9d1a-702a-cc17bbfd7329@theorie.ikp.physik.tu-darmstadt.de> Date: Wed, 16 Mar 2022 10:05:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: gcc-help@gcc.gnu.org From: Matthias Heinz Subject: [libgomp] omp_in_parallel() false negative in parallel loop X-Header-TUDa: rQdoudU0omeSHg3ZcMWcnF1YNxWoA0DhO1yGSjDT2N20gd8KB/2QYsh1aYuTUb/2u0jR2TDVeAFOEi92Qd1Mmn6 X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00, BODY_8BITS, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-help@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-help mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Mar 2022 09:06:05 -0000 This is a multi-part message in MIME format. --------------S8GvtXgUUoSweAcFxcJNgP26 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, I've run into a problem where omp_in_parallel() is returning 0 where I expect it to return 1. The minimal working example is: #include #include #include const std::size_t problem_size = 10000; int main(void) {   std::vector parallel_checks(problem_size, false); #pragma omp parallel for   for (std::size_t i = 0; i < problem_size; i++) {     parallel_checks[i] = omp_in_parallel();   }   for (std::size_t i = 0; i < problem_size; i++) {     if (!parallel_checks[i]) {       std::cout << "failed at i = " << i << "\n";     }   }   return 0; } where parallel_checks[i] should be true for all i. This fails only inconsistently so I've attached a slightly longer version that runs this check thousands of times. On my personal computer (4 cores, g++ 9.3.0), it fails about 10-30 times out of 100,000 attempts (failure meaning that any element in parallel_checks[] is false). On a supercomputing node I have access to (64 cores, g++ 11.2.0), it fails much more frequently (300-900 attempts out of 1000). I've tested this across optimization settings and while the numbers vary a bit, it is always a problem even without optimizations on. Am I misunderstanding what omp_in_parallel() is supposed to provide? Does it not guarantee a true value at any point inside a parallel section? Thanks for your help. Best, - Matthias --------------S8GvtXgUUoSweAcFxcJNgP26 Content-Type: text/x-c++src; charset=UTF-8; name="main.cc" Content-Disposition: attachment; filename="main.cc" Content-Transfer-Encoding: base64 I2luY2x1ZGUgPG9tcC5oPgoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9y PgoKY29uc3Qgc3RkOjpzaXplX3QgcHJvYmxlbV9zaXplID0gMTAwMDA7Ci8vIEluY3JlYXNl IHRvIDEwMDAwMCBmb3IgYmV0dGVyIHNhbXBsZSBzaXplCmNvbnN0IHN0ZDo6c2l6ZV90IG51 bV90cmllcyA9IDEwMDA7CgppbnQgbWFpbih2b2lkKSB7CiAgc3RkOjpzaXplX3QgbnVtX3By b2JsZW1zID0gMDsKCiAgZm9yIChzdGQ6OnNpemVfdCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8 IG51bV90cmllczsgYXR0ZW1wdCArPSAxKSB7CiAgICBzdGQ6OnZlY3Rvcjxib29sPiBwYXJh bGxlbF9jaGVja3MocHJvYmxlbV9zaXplLCBmYWxzZSk7CgojcHJhZ21hIG9tcCBwYXJhbGxl bCBmb3IKICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBwcm9ibGVtX3NpemU7IGkr KykgewogICAgICBwYXJhbGxlbF9jaGVja3NbaV0gPSBvbXBfaW5fcGFyYWxsZWwoKTsKICAg IH0KCiAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgcHJvYmxlbV9zaXplOyBpKysp IHsKICAgICAgaWYgKCFwYXJhbGxlbF9jaGVja3NbaV0pIHsKICAgICAgICBudW1fcHJvYmxl bXMgKz0gMTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0KCiAgc3RkOjpjb3V0 IDw8IG51bV9wcm9ibGVtcyA8PCAiIGZhaWxlZCBvdXQgb2YgIiA8PCBudW1fdHJpZXMgPDwg IlxuIjsKCiAgcmV0dXJuIDA7Cn0K --------------S8GvtXgUUoSweAcFxcJNgP26--