{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":21908970,"defaultBranch":"main","name":"chapel","ownerLogin":"ronawho","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2014-07-16T16:46:31.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1588337?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1700082674.0","currentOid":""},"activityList":{"items":[{"before":"adc4dfed344c8fb5294a5d953e3ada64b812737b","after":"d0e3adda58281a9dae52964661afb08206b0fdb5","ref":"refs/heads/main","pushedAt":"2024-04-03T23:00:43.000Z","pushType":"push","commitsCount":2767,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Dyno: Fixes to c_ptr representation (#24749)\n\nThis PR contains various improvements to the representation of ``c_ptr``\r\nand ``c_ptrConst`` in the frontend.\r\n\r\nThe most significant change is to stop treating ``c_ptr[Const]`` as a\r\nbuiltin and instead rely on the ``c_ptr`` and ``c_ptrConst`` classes in\r\n``CTypes``. This allows us to use a real ID as a point of reference to\r\nfind methods on ``c_ptr`` when ``CTypes`` is not in scope. Tests have\r\nalso been updated to now use ``CTypes``.\r\n\r\nAnother notable change is to allow ``eltType`` to be called on both\r\ntypes and values of ``c_ptr``. This is achieved by updating\r\n``getCompilerGeneratedMethodQuery`` to take a ``QualifiedType`` instead\r\nof a ``Type*``, so that we can preserve the relevant ``Kind``.\r\n\r\nOther changes:\r\n- implement PRIM_ARRAY_GET for ``c_ptr``\r\n- allow ``c_ptr`` in PRIM_STRING_LENGTH_BYTES\r\n\r\n[reviewed-by @mppf]","shortMessageHtmlLink":"Dyno: Fixes to c_ptr representation (chapel-lang#24749)"}},{"before":"f6b34a9c6cb681d9c3b496dc82115fa407145f7c","after":"adc4dfed344c8fb5294a5d953e3ada64b812737b","ref":"refs/heads/main","pushedAt":"2023-12-19T16:32:19.000Z","pushType":"push","commitsCount":384,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Implement copyability and assignability primitives in dyno (#24058)\n\nImplement `PRIM_IS_COPYABLE`, `PRIM_IS_CONST_COPYABLE`,\r\n`PRIM_IS_ASSIGNABLE`, and `PRIM_IS_CONST_ASSIGNABLE` in Dyno.\r\n\r\nLogic is directly ported from the implementation of these in\r\n`preFold.cpp` in the production compiler. Queries instead of flags are\r\nused to cache computed results for composite types.\r\n\r\nThe primitives are defined in Dyno to return `false` for\r\nnon-fully-defaulted generic composite types, and production behavior is\r\nchanged (from an unclear error previously) to match. Also includes\r\nsimplifying the production tests of these primitives, so it was easier\r\nto identify cases to test in Dyno.\r\n\r\nFuture work:\r\n- Create and use an iterator for `TupleType`'s element types. Similarly\r\nfor `ResolvedFields` if desired, maybe not if not used elsewhere.\r\n- Gracefully handle resolving an `init=` or `=` that contains a\r\n`compilerError` (treat it as not an option for the logic of\r\ncopyability/assignability).\r\n- Handle `isDefaultInitializable` on non-fully-defaulted generic\r\ncomposite types. Probably should be handled similarly to what we do with\r\nthese for copyability/assignability. It looks like it already tries to\r\ndo so but errors when I try it.\r\n- If desired, get both copyable and assignable information in a single\r\nquery, expanding `CopyableAssignableInfo` to contain both at once. This\r\nwould probably only be desirable if we have other queries that also\r\ninvolve test-resolving an `init=` and `=`, see\r\n[discussion](https://github.com/chapel-lang/chapel/pull/24058#discussion_r1427187882).\r\n\r\n[reviewed by @mppf , thanks!]\r\n\r\nTesting:\r\n- [x] dyno tests\r\n- [x] paratest","shortMessageHtmlLink":"Implement copyability and assignability primitives in dyno (chapel-la…"}},{"before":"df0e3c2f5a49b75b8090c5b2012e5cb6729d336e","after":"f6b34a9c6cb681d9c3b496dc82115fa407145f7c","ref":"refs/heads/main","pushedAt":"2023-12-06T16:55:16.000Z","pushType":"push","commitsCount":531,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Expand testing system docs (#24004)\n\nAdds a few notes to `TestingSystem.rst` about running tests\r\n\r\n[Reviewed by @ShreyasKhandekar]","shortMessageHtmlLink":"Expand testing system docs (chapel-lang#24004)"}},{"before":"d3fcd33254fc8256d902a74152611a1fa6e7d333","after":"df0e3c2f5a49b75b8090c5b2012e5cb6729d336e","ref":"refs/heads/main","pushedAt":"2023-11-17T20:09:22.000Z","pushType":"push","commitsCount":113,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Fix runtime build issues with CUB wrappers when CUDA 12 used (#23789)\n\nThis is a draft PR to attempt fixing runtime builds with the newly added\r\nCUB wrappers. As-is, this takes us further and keeps things compiling\r\nwith `sm_60`. But with newer architectures, I see failures. Some may be\r\ndue to us using LLVM 15 with a patch.\r\n\r\n[Reviewed by @stonea] (merged by @stonea since this should\r\nresolve some test failures and Engin is out)","shortMessageHtmlLink":"Fix runtime build issues with CUB wrappers when CUDA 12 used (chapel-…"}},{"before":"3a9bdeeaa7c0a212af150b11653d86011a064fad","after":null,"ref":"refs/heads/upgrade-to-gex-api-bcast","pushedAt":"2023-11-15T21:11:14.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"}},{"before":"3f06374135760b3802c03d063b24bb348d2b6c9c","after":"36fe8f124654336c0c7e5c00ba4a865f1048c875","ref":"refs/heads/upgrade-to-gex-api-barrier","pushedAt":"2023-11-15T20:40:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"fixup: add an unconditional poll to barrier loop\n\nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"fixup: add an unconditional poll to barrier loop"}},{"before":"d2617fc86fdd15f305b3e2076ef1a1aa717eb9f4","after":"3a9bdeeaa7c0a212af150b11653d86011a064fad","ref":"refs/heads/upgrade-to-gex-api-bcast","pushedAt":"2023-11-15T14:47:08.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim to use real GEX broadcast for seginfo broadcast\n\nConvert the naive AM-based broadcast of the seginfo table done for\nsegment everything into a real collective broadcast. This is cleaner and\nmore efficient (and a TODO from 7395837). As part of this, don't\nbroadcast zero'd values, just broadcast locale-0 values and\nindependently zero non locale-0 entries.\n\nWhile technically more efficient, this is a single small broadcast so\ndoesn't have a noticeable impact on startup. With 100 nodes and 800\nprocesses (`-nl 100x8` with support for process per numa domain) using\nibv with segment everything I see the barrier+broadcast+barrier is sub\nmillisecond with either approach. This single use is pretty noisy, but\nadding an artificial 1,000 trial loop I see timings per iteration go\nfrom ~800 microseconds to ~75 microseconds, so there is a real impact of\nusing a collective, but as a single use the old method wasn't horribly\nslow either. Still, this is a nice code cleanup, so worth doing.\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim to use real GEX broadcast for seginfo broadcast"}},{"before":"db1c146c28004bd0eff20cfed07c81c82ec42c73","after":"d2617fc86fdd15f305b3e2076ef1a1aa717eb9f4","ref":"refs/heads/upgrade-to-gex-api-bcast","pushedAt":"2023-11-15T14:44:01.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim to use real GEX broadcast for seginfo broadcast\n\nConvert the naive AM-based broadcast of the seginfo table done for\nsegment everything into a real collective broadcast. This is cleaner and\nmore efficient (and a TODO from 7395837).\n\nWhile technically more efficient, this is a single small broadcast so\ndoesn't have a noticeable impact on startup. With 100 nodes and 800\nprocesses (`-nl 100x8` with support for process per numa domain) using\nibv with segment everything I see the barrier+broadcast+barrier is sub\nmillisecond with either approach. This single use is pretty noisy, but\nadding an artificial 1,000 trial loop I see timings per iteration go\nfrom ~800 microseconds to ~75 microseconds, so there is a real impact of\nusing a collective, but as a single use the old method horribly slow\neither. Still, this is a nice code cleanup, so worth doing anyways.\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim to use real GEX broadcast for seginfo broadcast"}},{"before":null,"after":"db1c146c28004bd0eff20cfed07c81c82ec42c73","ref":"refs/heads/upgrade-to-gex-api-bcast","pushedAt":"2023-11-15T14:43:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim to use real GEX broadcast for seginfo broadcast\n\nConvert the naive AM-based broadcast of the seginfo table done for\nsegment everything into a real collective broadcast. This is cleaner and\nmore efficient (and a TODO from 7395837).\n\nWhile technically more efficient, this is a single small broadcast so\ndoesn't have a noticeable impact on startup. With 100 nodes and 800\nprocesses (`-nl 100x8` with support for process per numa domain) using\nibv with segment everything I see the barrier+broadcast+barrier is sub\nmillisecond with either approach. This single use is pretty noisy, but\nadding an artificial 1,000 trial loop I see timings per iteration go\nfrom ~800 microseconds to ~75 microseconds, so there is a real impact of\nusing a collective, but as a single use the old method horribly slow\neither. Still, this is a nice code cleanup, so worth doing anyways.\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim to use real GEX broadcast for seginfo broadcast"}},{"before":"03106f12c28fe25b25aa6ddbf3927736c919d7d0","after":"d3fcd33254fc8256d902a74152611a1fa6e7d333","ref":"refs/heads/main","pushedAt":"2023-11-15T12:50:43.000Z","pushType":"push","commitsCount":192,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim strided get/put over to GEX API (#23790)\n\n[reviewed by @bonachea and @benharsh]\r\n\r\nConvert strided RMA calls over to GEX API. The strided APIs were made a\r\nlittle more general in GEX, so adapt to the changes here. Specifically,\r\n`count[0]` is no longer special and was moved out into a separate\r\n`elemsz` variable so `count` is now of `stridelevels` size instead of\r\n`stridelevels+1`.\r\n\r\nOur strided interface was at least partially based on the gasnet-1\r\ninterface, so I think it could be worth revisiting the interface to see\r\nif it could be simplified now.\r\n\r\nNote that during review we discovered a bug where we were using 0 length\r\nVLAs for `stridelevels == 0` (contiguous transfers). 0-size VLAs are\r\nundefined-behavior, so fix that here by ensuring the arrays are always\r\nat least of size 1 (they will be ignored by gasnet for stridelevels==0).\r\nI suspect in practice this didn't matter since clang and gcc have\r\nextensions for 0-length VLA, but it's still UB (and is caught by UBSan)\r\nso we should backport the fix to the gasnet-1 interface.\r\n\r\nTesting:\r\n - [x] gex-udp-everything: full suite\r\n - [x] gex-ibv-large: `release/examples runtime/configMatters`\r\n - [x] manual test with UBSan\r\n\r\nPart of #14443","shortMessageHtmlLink":"Convert gasnet-ex shim strided get/put over to GEX API (chapel-lang#2…"}},{"before":"053ca33ea388a17b2ed418f4c6cc947e6c012548","after":null,"ref":"refs/heads/upgrade-to-gex-api-strd-rma","pushedAt":"2023-11-15T01:46:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"}},{"before":null,"after":"289d8415335a119febe6ab22af1833356a1a48af","ref":"refs/heads/avoid-zero-lengh-vla-strd-comm","pushedAt":"2023-11-15T01:35:02.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Avoid zero length VLA in strided comm interface\n\nZero-length VLAs are undefined behavior (though supported by clang/gnu\nextensions) so avoid using them in the strided interface when\n`stridelevels==0`. In this case just use lengh-1 VLAs that don't get\nused by gasnet or our common shims.\n\nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Avoid zero length VLA in strided comm interface"}},{"before":"21bfee19bc41b7400d7a8f2b85c10b0572e59848","after":"053ca33ea388a17b2ed418f4c6cc947e6c012548","ref":"refs/heads/upgrade-to-gex-api-strd-rma","pushedAt":"2023-11-14T16:49:31.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim strided get/put over to GEX API\n\nConvert strided RMA calls over to GEX API. The strided APIs were made a\nlittle more general in GEX, so adapt to the changes here. Specifically,\n`count[0]` is no longer special and was moved out into a separate\n`elemsz` variable so `count` is now of `stridelevels` size instead of\n`stridelevels+1`.\n\nOur strided interface was at least partially based on the gasnet-1\ninterface, so I think it could be worth revisiting the interface to see\nif it could be simplified.\n\nNote that during review we discovered a bug where we were using 0 length\nVLAs for `stridelevels == 0` (contiguous transfers). 0-size VLAs are\nundefined-behavior, so fix that here by ensuring the arrays are always\nat least of size 1 (they will be ignored by gasnet for stridelevels==0).\nI suspect in practice this didn't matter since clang and gcc have\nextensions for 0-length VLA, but it's still UB (and is caught by UBSan)\nso we should backport the fix to the gasnet-1 interface.\n\nPart of 14443\n\nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim strided get/put over to GEX API"}},{"before":"892b208cb8466aa5e40bd97d63b759e61029c2ed","after":"3f06374135760b3802c03d063b24bb348d2b6c9c","ref":"refs/heads/upgrade-to-gex-api-barrier","pushedAt":"2023-11-14T15:55:11.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim barrier over to the GEX API\n\nConvert barrier over to the GEX API. GASNet-EX barriers are anonymous\nand use the new collective interface and standard GEX events to check\nfor completion. Note that unlike `gasnet_barrier_try`, `gex_Event_Test`\ndoes not poll, so here we need to manually poll if we're barrier'ing\nearly in init before the progress thread has been started or late in\ndeinit after the progress thread has stopped.\n\nSince barriers are now anonymous, it's not possible to receive a barrier\nmismatch error, which I think was the only interesting error case\nbefore. This enables us to remove the IMO confusing error checking that\nwas done before (confusing because the macro looked like we were making\nanother barrier call, even though we were just using the string for\nerror messages.)\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim barrier over to the GEX API"}},{"before":"873066833fad977d5b9ef3f8cf8f7914c8f8f89c","after":"892b208cb8466aa5e40bd97d63b759e61029c2ed","ref":"refs/heads/upgrade-to-gex-api-barrier","pushedAt":"2023-11-14T15:49:17.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim barrier over to the GEX API\n\nConvert barrier over to the GEX API. GASNet-EX barriers are anonymous\nand use the new collective interface and standard GEX events to check\nfor completion. Note that unlike `gasnet_barrier_try`, `gex_Event_Test`\ndoes not poll, so here we need to manually poll if we're barrier'ing\nearly in init before the progress thread has been started or late in\ndeinit after the progress thread has stopped.\n\nSince barriers are now anonymous, it's not possible to receive a barrier\nmismatch error, which I think was the only interesting error case\nbefore. This enables us to remove the IMO confusing error checking that\nwas done before (confusing because the macro looked like we were making\nanother barrier call, even though we were just using the string for\nerror messages.)\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim barrier over to the GEX API"}},{"before":"8d743bb7a95e390ce2569c233126958d2c5ad117","after":"873066833fad977d5b9ef3f8cf8f7914c8f8f89c","ref":"refs/heads/upgrade-to-gex-api-barrier","pushedAt":"2023-11-14T15:48:44.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim barrier over to the GEX API\n\nConvert barrier over to the GEX API. GASNet-EX barriers are anonymous\nand use the new collective interface and standard GEX events to check\nfor completion. Note that unlike `gasnet_barrier_try`, `gex_Event_Test`\ndoes not poll, so here we need to manually poll if we're barrier'ing\nearly in init before the progress thread has been started or late in\ndeinit after the progress thread has stopped.\n\nSince barriers are now anonymous, it's not possible to receive a barrier\nmismatch error, which I think was the only interesting error case\nbefore. This enables us to remove the IMO confusing error checking that\nwas done before (confusing because the macro looked like we were making\nanother barrier call, even though we were just using the string for\nerror messages)\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim barrier over to the GEX API"}},{"before":"bc0f31f94743a723fe4e7e851dc4023e826bae95","after":"8d743bb7a95e390ce2569c233126958d2c5ad117","ref":"refs/heads/upgrade-to-gex-api-barrier","pushedAt":"2023-11-14T15:45:53.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim barrier over to the GEX API\n\nConvert barrier over to the GEX API. GASNet-EX barriers are anonymous\nand use the new collective interface and standard GEX events to check\nfor completion. Note that unlike `gasnet_barrier_try`, `gex_Event_Test`\ndoes not poll, so here we need to manually poll if we're barrier'ing\nearly in init before the progress thread has been started or late in\ndeinit after the progress thread has stopped.\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim barrier over to the GEX API"}},{"before":null,"after":"bc0f31f94743a723fe4e7e851dc4023e826bae95","ref":"refs/heads/upgrade-to-gex-api-barrier","pushedAt":"2023-11-08T20:33:31.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim barrier over to the GEX API\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim barrier over to the GEX API"}},{"before":"fcd1910b3de6b069cae67db143a42e871ebbd18b","after":"03106f12c28fe25b25aa6ddbf3927736c919d7d0","ref":"refs/heads/main","pushedAt":"2023-11-08T15:56:38.000Z","pushType":"push","commitsCount":14,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Foreach intents first steps (#23772)\n\nThis PR begins work on enabling intents on `foreach` loops.\r\nSpecifically, it changes things so that this example now properly errors\r\nout (saying you can't assign to the constant 'c'):\r\n\r\n```chpl\r\nvar c = 42; \r\nforeach i in 0..0 with (const c) do c = 1;\r\n```\r\n\r\nWhile ensuring that an example that doesn't modify 'c' still works fine.\r\nIt also allows `ref` intents syntactically, so this will work:\r\n\r\n```chpl\r\nforeach i in 0..0 with (ref x) do x = 52;\r\n```\r\n\r\nAlthough at this point the `ref` intent itself won't change any existing\r\nbehavior (so for example if this loop is gpuized and run on the gpu it\r\nwill keep the existing behavior where `x` is passed to the kernel\r\nby-value effectively treating like an `in` intent).\r\n\r\nAnyway, this is all a work in progress but I would like to get code\r\nmerged early and often as I make progress on it. With this in mind I\r\nintroduce a new feature controlling global `fForeachIntents` in\r\n`driver.h` that can be turned on/off by passing `chpl`\r\n`--foreach-intents`. For the time being I'm leavning this default \"off\".\r\n\r\nWhen this feature is off foreach loops that have explicit intents will\r\nerror with a syntax error early on (during `convertuast`) and at the\r\nmoment we don't apply implicit intents to `foreach` loops that don't\r\nhave any other explicit intents.\r\n\r\n**Implementation Notes**:\r\n\r\n- Before being lowered, `foreach` loops are modeled in the production\r\ncompiler's AST using the `ForLoop` node. `forall` loops use the\r\n`ForallStmt`.\r\n- Unfortunately, the nearest common ancestor of these nodes is `Expr` so\r\nthere isn't really a nice place to put common methods or data members. I\r\nspent some time trying to see if could mock up a way to refactor things\r\nso they could be (see the \"Exploring if we could rearrange the class\r\nhierarchy\" comments here\r\nhttps://github.com/Cray/chapel-private/issues/5092#issuecomment-1648278779)\r\nand I don't think it's really feasible without major engineering\r\nefforts. To avoid duplicating code as much as I can I create a class\r\n`ShadowVarLoopInterface` that I have both `ForLoop` and `ForallStmt`\r\nderive from.\r\n- There are several places where I either copy or reuse code to get\r\n`foreach` loops to behave similarly to forall loops:\r\n- **Convert uast**: if the user opts into `foreach` intents then I skip\r\na check that would previously error out. I then pass along intents to a\r\n`ForLoop::buildForeachLoop` function and process it there similarly to\r\nwhat we do for ForAll loops.\r\n- **Scope resolve**: there's a loop that iterates over all forall loops\r\nand processes their shadow variables, it's just a matter of copying this\r\nloop and doing the same for foreach (thankfully the bulk of the work\r\ndone by the loop is already factored out into functions that are written\r\ngenerically enough to work for both kinds of loops).\r\n- **Function resolution**: during resolveExpr when we encounter a forall\r\nloop we call call `setupAndResolveShadowVars` in\r\n`implementForallIntents.cpp`. I've expanded this to also call\r\n`setupAndResolveShadowVars` for foreach loops when they have a shadow\r\nvariable (which happens if the user explicitly used a `with` clause to\r\nadd intents).\r\n- Eventually I'd like to modify things so this is always called (so that\r\nwe set implicit shadow variables for loops the user didn't explicitly\r\nimply intents on) but I'm leaving this as future work.\r\n- I've modified the various functions in this file to operate on my new\r\n`ShadowVarLoopInterface` interface instead of on `ForallStmt` directly.\r\n- There is some code that I think really is `ForallStmt` specific, in\r\nwhich case I have an \"escape hatch\" in `ShadwoVarLoopInterface` to see\r\nif the loop really is a forall loop and if so get a pointer back to it\r\n(see uses of `isForallStmt`).\r\n\r\n**Testing**:\r\n\r\nI have run this through (non gasnet non gpu related) paratest and it\r\nseems to pass fine without breaking anything regardless of whether the\r\nfeature is enabled or disabled.\r\n\r\n[Reviewed by @e-kayrakli]","shortMessageHtmlLink":"Foreach intents first steps (chapel-lang#23772)"}},{"before":"f67b44e4bb22f391688be40125598e48a5d708c4","after":"21bfee19bc41b7400d7a8f2b85c10b0572e59848","ref":"refs/heads/upgrade-to-gex-api-strd-rma","pushedAt":"2023-11-07T19:31:43.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim strided get/put over to GEX API\n\nConvert strided RMA calls over to GEX API. The strided APIs were made a\nlittle more general in GEX, so adapt to the changes here. Specifically,\n`count[0]` is no longer special and was moved out into a separate\n`elemsz` variable so `count` is now of `stridelevels` size instead of\n`stridelevels+1`.\n\nOur strided interface was at least partially based on the gasnet-1\ninterface, so I think it could be worth revisiting the interface to see\nif it could be simplified.\n\nPart of 14443\n\nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim strided get/put over to GEX API"}},{"before":null,"after":"f67b44e4bb22f391688be40125598e48a5d708c4","ref":"refs/heads/upgrade-to-gex-api-strd-rma","pushedAt":"2023-11-07T15:17:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim strided get/put over to GEX API\n\nConvert strided RMA calls over to GEX API. The strided APIs were made a\nlittle more general in GEX, so adapt to the changes here. Specifically,\n`count[0]` is no longer special and was moved out into a separate\n`elemsz` variable so `count` is now of `stridelevels` size instead of\n`stridelevels+1`.\n\nOur strided interface was at least partially based on the gasnet-1\ninterface, so I think it could be worth revisiting the interface to see\nif it could be simplified.\n\nPart of 14443\n\nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim strided get/put over to GEX API"}},{"before":"55543983e5ffc0c8a9efdd337643ffcc0e306a7d","after":"fcd1910b3de6b069cae67db143a42e871ebbd18b","ref":"refs/heads/main","pushedAt":"2023-11-07T15:16:04.000Z","pushType":"push","commitsCount":51,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim in-segment contiguous get/put over to GEX API (#23785)\n\n[co-developed with @bonachea, reviewed by @jhh67]\r\n\r\nConvert non-strided RMA calls overs to GEX API. This is mostly a direct\r\ntransliteration (`gasnet_{put,get}` -> `gex_RMA_{Put,Get}Blocking` and\r\n`gasnet_{put,get}_nb_bulk` -> `gex_RMA_{Put,Get}NB`), but there are some\r\nmildly interesting changes in how we wait for NB ops.\r\n\r\nSpecifically, this highlighted that `chpl_comm_test_nb_complete` doesn't\r\ncheck if a NB op is complete, but checks if was performed as a blocking\r\noperation. I'm not sure that's intended, so I added a TODO to revisit\r\nit. Additionally, some of the new GEX functions don't do AM polling. I\r\nthink this is preferable since we have a dedicated polling thread so\r\nthere's a TODO to explore eliminating more internal polling.\r\n\r\nTesting:\r\n - [x] gex-udp-everything: full suite\r\n - [x] gex-ibv-large: `release/examples runtime/configMatters`\r\n\r\nPart of #14443","shortMessageHtmlLink":"Convert gasnet-ex shim in-segment contiguous get/put over to GEX API (c…"}},{"before":"e8a6ae898dd641baba6fe9faa8fba9e60648c36f","after":null,"ref":"refs/heads/upgrade-to-gex-api","pushedAt":"2023-11-07T15:15:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"}},{"before":null,"after":"5e30d3ed46de5d809ed2edf9d30cba25edef5a8e","ref":"refs/heads/upgrade-to-gex-api-strd","pushedAt":"2023-11-07T01:41:51.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Prototype PUT VIS update\n\nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Prototype PUT VIS update"}},{"before":"59f2c4209bde50a94f0fbc4203a9984392426431","after":"e8a6ae898dd641baba6fe9faa8fba9e60648c36f","ref":"refs/heads/upgrade-to-gex-api","pushedAt":"2023-11-07T00:26:05.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim in-segment contiguous get/put over to GEX API\n\nConvert non-strided RMA calls overs to GEX API. This is mostly a direct\ntransliteration (`gasnet_{put,get}` -> `gex_RMA_{Put,Get}Blocking` and\n`gasnet_{put,get}_nb_bulk` -> `gex_RMA_{Put,Get}NB`), but there are some\nmildly interesting changes in how we wait for NB ops.\n\nSpecifically, this highlighted that `chpl_comm_test_nb_complete` doesn't\ncheck if a NB op is complete, but checks if was performed as a blocking\noperation. I'm not sure that's intended, so I added a TODO to revisit\nit. Additionally, some of the new GEX functions don't do AM polling. I\nthink this is preferable since we have a dedicated polling thread so\nthere's a TODO to explore eliminating more internal polling.\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim in-segment contiguous get/put over to GEX API"}},{"before":null,"after":"59f2c4209bde50a94f0fbc4203a9984392426431","ref":"refs/heads/upgrade-to-gex-api","pushedAt":"2023-11-07T00:19:17.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim in-segment contiguous get/put over to GEX API\n\nConvert non-strided RMA calls overs to GEX API. This is mostly a direct\ntransliteration (`gasnet_{put,get}` -> `gex_RMA_{Put,Get}Blocking` and\n`gasnet_{put,get}_nb_bulk` -> `gex_RMA_{Put,Get}NB`), but there are some\nmildly interesting changes in how we wait for NB ops.\n\nThis highlighted that `chpl_comm_test_nb_complete` doesn't check if a NB\nop is complete, but checks if was performed as a blocking operation\n(TODO to revisit). Additionally, some of the new GEX functions don't do\nAM polling. I think this is preferable (we have a dedicated polling\nthread) so there's a TODO to explore eliminating more internal polling.\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim in-segment contiguous get/put over to GEX API"}},{"before":"0223c36bfa141a466c5f436925ee68f202f6acb3","after":null,"ref":"refs/heads/upgrade-to-gex-api","pushedAt":"2023-11-07T00:00:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"}},{"before":"63462fa42c2ce061af8bc975ce56573d4755d273","after":"55543983e5ffc0c8a9efdd337643ffcc0e306a7d","ref":"refs/heads/main","pushedAt":"2023-11-06T22:15:43.000Z","pushType":"push","commitsCount":34,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim initialization over to the GEX API (#23771)\n\n[co-developed with @bonachea, reviewed by @jhh67]\r\n\r\nStart migrating our gasnet-ex shim over to the gasnet-ex (GEX) API. To\r\nstart, just migrate initialization.\r\n\r\nThe main change is that gasnet now has explicit teams and endpoints. For\r\nnow we're just using a single endpoint/team (along with segment/client)\r\nto mimic the old behavior, but over time this could be used to implement\r\nmulti-endpoint (parallel comm/injection) and multiple teams (for better\r\ncollectives between subsets of locales)\r\n\r\nBeyond that, the AM handler table takes additional information about how\r\nentires are used -- as a request/reply, with short/med/long AMs, how\r\nmany args are used, and a debug name. `gasnet_attach` has also been\r\nsplit into separate attach and register-handlers steps, though we call\r\nthem in one after the other so there's no real difference to us.\r\n\r\nTesting:\r\n - [x] gex-udp-everything: full suite\r\n - [x] gex-ibv-large: `release/examples runtime/configMatters`\r\n\r\nPart of #14443","shortMessageHtmlLink":"Convert gasnet-ex shim initialization over to the GEX API (chapel-lan…"}},{"before":"4d907c55ce29aa83ba2ace8d0087edd4e5d013f7","after":"0223c36bfa141a466c5f436925ee68f202f6acb3","ref":"refs/heads/upgrade-to-gex-api","pushedAt":"2023-11-06T16:05:10.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim initialization over to the GEX API\n\nStart migrating our gasnet-ex shim over to the gasnet-ex (GEX) API. To\nstart, just migrate initialization.\n\nThe main change is that gasnet now has explicit teams and endpoints. For\nnow we're just using a single endpoint/team (along with segment/client)\nto mimic the old behavior, but over time this could be used to implement\nmulti-endpoint (parallel comm/injection) and multiple teams (for better\ncollectives between subsets of locales)\n\nBeyond that, the AM handler table takes additional information about how\nentires are used -- as a request/reply, with short/med/long AMs, how\nmany args are used, and a debug name. `gasnet_attach` has also been\nsplit into separate attach and register-handlers steps, though we call\nthem in one after the other so there's no real difference to us.\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim initialization over to the GEX API"}},{"before":null,"after":"4d907c55ce29aa83ba2ace8d0087edd4e5d013f7","ref":"refs/heads/upgrade-to-gex-api","pushedAt":"2023-11-06T16:00:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"ronawho","name":"Elliot Ronaghan","path":"/ronawho","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1588337?s=80&v=4"},"commit":{"message":"Convert gasnet-ex shim initialization over to the GEX API\n\nStart migrating our gasnet-ex shim over to the gasnet-ex (GEX) API. To\nstart, just migrate initialization.\n\nThe main change is that gasnet now has explicit teams and endpoints. For\nnow we're just using a single endpoint/team (along with segment/client)\nto mimic the old behavior, but over time this could be used to implement\nmulti-endpoint (parallel comm/injection) and multiple teams (for better\ncollectives between subsets of locales)\n\nBeyond that, the AM handler table takes additional information about how\nentires are used -- as a request/reply, with short/med/long AMs, how\nmany args are used, and a debug name. `gasnet_attach` has also been\nsplit into separate attach and register-handlers steps, though we call\nthem in one after the other, so there's no real difference to us.\n\nPart of 14443\n\nCo-authored-by: Dan Bonachea \nSigned-off-by: Elliot Ronaghan ","shortMessageHtmlLink":"Convert gasnet-ex shim initialization over to the GEX API"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNC0wM1QyMzowMDo0My4wMDAwMDBazwAAAAQnMsq4","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wNC0wM1QyMzowMDo0My4wMDAwMDBazwAAAAQnMsq4","endCursor":"Y3Vyc29yOnYyOpK7MjAyMy0xMS0wNlQxNjowMDowOS4wMDAwMDBazwAAAAOojxd5"}},"title":"Activity · ronawho/chapel"}