From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 590B63857BAB for ; Thu, 4 Aug 2022 13:17:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 590B63857BAB Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.93,215,1654588800"; d="scan'208";a="80783288" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 04 Aug 2022 05:17:22 -0800 IronPort-SDR: FtiT3pCq5M9pC8sWHYR/9wZr+jdGOFQPQ4L3G11/t7FaibCr42vBUi5bjjHQgaGrLYJYFhG4lL FLOwmK3n4/q3yhzShn7AcCR6CkqlwB6fF1JQ/xfiNjPMAnWG3VTkPpByw86I5E/GFhnr5K+NlC irrh1PSAIWvyzbMN2aibHA3vuR3eI/Lmdy/yG/EdViJ6d3XsdrWRzI3ZMOxnm7KjgUHV5owhyE A9oBFgT7qMReRrTUdD4cRQilIABzzkquykSbe57QB5lCGiHd9fLU7cq8KzefumCL26mXMy2B7R +kI= Content-Type: multipart/mixed; boundary="------------d2XTCeWnOut952EAKxZ5sIEw" Message-ID: Date: Thu, 4 Aug 2022 21:17:09 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH, libgomp] Fix chunk_size<1 for dynamic schedule Content-Language: en-US To: Jakub Jelinek CC: gcc-patches , Catherine Moore , Tobias Burnus References: <13568991-7359-9149-04fa-cde2245f108c@codesourcery.com> From: Chung-Lin Tang In-Reply-To: X-ClientProxiedBy: svr-orw-mbx-14.mgc.mentorg.com (147.34.90.214) To svr-orw-mbx-10.mgc.mentorg.com (147.34.90.210) X-Spam-Status: No, score=-10.5 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Aug 2022 13:17:34 -0000 --------------d2XTCeWnOut952EAKxZ5sIEw Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit On 2022/6/28 10:06 PM, Jakub Jelinek wrote: > On Thu, Jun 23, 2022 at 11:47:59PM +0800, Chung-Lin Tang wrote: >> with the way that chunk_size < 1 is handled for gomp_iter_dynamic_next: >> >> (1) chunk_size <= -1: wraps into large unsigned value, seems to work though. >> (2) chunk_size == 0: infinite loop >> >> The (2) behavior is obviously not desired. This patch fixes this by changing > > Why? It is a user error, undefined behavior, we shouldn't slow down valid > code for users who don't bother reading the standard. This is loop init code, not per-iteration. The overhead really isn't that much. The question should be, if GCC having infinite loop behavior is reasonable, even if it is undefined in the spec. > E.g. OpenMP 5.1 [132:14] says clearly: > "chunk_size must be a loop invariant integer expression with a positive > value." > and omp_set_schedule for chunk_size < 1 should use a default value (which it > does). > > For OMP_SCHEDULE the standard says it is implementation-defined what happens > if the format isn't the specified one, so I guess the env.c change > could be acceptable (though without it it is fine too), but the > loop.c change is wrong. Note, if the loop.c change would be ok, you'd > need to also change loop_ull.c too. I've updated the patch to add the same changes for libgomp/loop_ull.c and updated the testcase too. Tested on mainline trunk without regressions. Thanks, Chung-Lin libgomp/ChangeLog: * env.c (parse_schedule): Make negative values invalid for chunk_size. * loop.c (gomp_loop_init): For non-STATIC schedule and chunk_size <= 0, set initialized chunk_size to 1. * loop_ull.c (gomp_loop_ull_init): Likewise. * testsuite/libgomp.c/loop-28.c: New test. --------------d2XTCeWnOut952EAKxZ5sIEw Content-Type: text/plain; charset="UTF-8"; name="chunk_size-v2.patch" Content-Disposition: attachment; filename="chunk_size-v2.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvZW52LmMgYi9saWJnb21wL2Vudi5jCmluZGV4IDFjNGVl ODk0NTE1Li5kZmYwNzYxN2UxNSAxMDA2NDQKLS0tIGEvbGliZ29tcC9lbnYuYworKysgYi9s aWJnb21wL2Vudi5jCkBAIC0xODIsNiArMTgyLDggQEAgcGFyc2Vfc2NoZWR1bGUgKHZvaWQp CiAgICAgZ290byBpbnZhbGlkOwogCiAgIGVycm5vID0gMDsKKyAgaWYgKCplbnYgPT0gJy0n KQorICAgIGdvdG8gaW52YWxpZDsKICAgdmFsdWUgPSBzdHJ0b3VsIChlbnYsICZlbmQsIDEw KTsKICAgaWYgKGVycm5vIHx8IGVuZCA9PSBlbnYpCiAgICAgZ290byBpbnZhbGlkOwpkaWZm IC0tZ2l0IGEvbGliZ29tcC9sb29wLmMgYi9saWJnb21wL2xvb3AuYwppbmRleCBiZTg1MTYy YmIxZS4uMDE4YjRlOWE4YmQgMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvbG9vcC5jCisrKyBiL2xp YmdvbXAvbG9vcC5jCkBAIC00MSw3ICs0MSw3IEBAIGdvbXBfbG9vcF9pbml0IChzdHJ1Y3Qg Z29tcF93b3JrX3NoYXJlICp3cywgbG9uZyBzdGFydCwgbG9uZyBlbmQsIGxvbmcgaW5jciwK IAkJZW51bSBnb21wX3NjaGVkdWxlX3R5cGUgc2NoZWQsIGxvbmcgY2h1bmtfc2l6ZSkKIHsK ICAgd3MtPnNjaGVkID0gc2NoZWQ7Ci0gIHdzLT5jaHVua19zaXplID0gY2h1bmtfc2l6ZTsK KyAgd3MtPmNodW5rX3NpemUgPSAoc2NoZWQgPT0gR0ZTX1NUQVRJQyB8fCBjaHVua19zaXpl ID4gMSkgPyBjaHVua19zaXplIDogMTsKICAgLyogQ2Fub25pY2FsaXplIGxvb3BzIHRoYXQg aGF2ZSB6ZXJvIGl0ZXJhdGlvbnMgdG8gLT5uZXh0ID09IC0+ZW5kLiAgKi8KICAgd3MtPmVu ZCA9ICgoaW5jciA+IDAgJiYgc3RhcnQgPiBlbmQpIHx8IChpbmNyIDwgMCAmJiBzdGFydCA8 IGVuZCkpCiAJICAgID8gc3RhcnQgOiBlbmQ7CmRpZmYgLS1naXQgYS9saWJnb21wL2xvb3Bf dWxsLmMgYi9saWJnb21wL2xvb3BfdWxsLmMKaW5kZXggNjAyNzM3Mjk2ZDQuLjc0ZGRiMWJk NjIzIDEwMDY0NAotLS0gYS9saWJnb21wL2xvb3BfdWxsLmMKKysrIGIvbGliZ29tcC9sb29w X3VsbC5jCkBAIC00Myw3ICs0Myw3IEBAIGdvbXBfbG9vcF91bGxfaW5pdCAoc3RydWN0IGdv bXBfd29ya19zaGFyZSAqd3MsIGJvb2wgdXAsIGdvbXBfdWxsIHN0YXJ0LAogCQkgICAgZ29t cF91bGwgY2h1bmtfc2l6ZSkKIHsKICAgd3MtPnNjaGVkID0gc2NoZWQ7Ci0gIHdzLT5jaHVu a19zaXplX3VsbCA9IGNodW5rX3NpemU7CisgIHdzLT5jaHVua19zaXplX3VsbCA9IChzY2hl ZCA9PSBHRlNfU1RBVElDIHx8IGNodW5rX3NpemUgPiAxKSA/IGNodW5rX3NpemUgOiAxOwog ICAvKiBDYW5vbmljYWxpemUgbG9vcHMgdGhhdCBoYXZlIHplcm8gaXRlcmF0aW9ucyB0byAt Pm5leHQgPT0gLT5lbmQuICAqLwogICB3cy0+ZW5kX3VsbCA9ICgodXAgJiYgc3RhcnQgPiBl bmQpIHx8ICghdXAgJiYgc3RhcnQgPCBlbmQpKQogCQk/IHN0YXJ0IDogZW5kOwpkaWZmIC0t Z2l0IGEvbGliZ29tcC90ZXN0c3VpdGUvbGliZ29tcC5jL2xvb3AtMjguYyBiL2xpYmdvbXAv dGVzdHN1aXRlL2xpYmdvbXAuYy9sb29wLTI4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjY2NDg0MmUyN2FhCi0tLSAvZGV2L251bGwKKysrIGIvbGliZ29t cC90ZXN0c3VpdGUvbGliZ29tcC5jL2xvb3AtMjguYwpAQCAtMCwwICsxLDIxIEBACisvKiB7 IGRnLWRvIHJ1biB9ICovCisvKiB7IGRnLXRpbWVvdXQgMTAgfSAqLworCit2b2lkIF9fYXR0 cmlidXRlX18oKG5vaW5saW5lKSkKK2ZvbyAoaW50IGFbXSwgaW50IG4sIGludCBjaHVua19z aXplKQoreworICAjcHJhZ21hIG9tcCBwYXJhbGxlbCBmb3Igc2NoZWR1bGUgKGR5bmFtaWMs Y2h1bmtfc2l6ZSkKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgYVtpXSA9 IGk7CisKKyAgI3ByYWdtYSBvbXAgcGFyYWxsZWwgZm9yIHNjaGVkdWxlIChkeW5hbWljLGNo dW5rX3NpemUpCisgIGZvciAodW5zaWduZWQgbG9uZyBsb25nIGkgPSAwOyBpIDwgbjsgaSsr KQorICAgIGFbaV0gPSBpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgaW50IGFbMTAw XTsKKyAgZm9vIChhLCAxMDAsIDApOworICByZXR1cm4gMDsKK30K --------------d2XTCeWnOut952EAKxZ5sIEw--