Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Automatically cancel earlier actions on the same branch #882

Merged
merged 5 commits into from
Feb 16, 2022

Conversation

MarcelKoch
Copy link
Member

This PR enables automatic cancellation of actions on outdated commits of a branch. This will also cancel already running actions. The feature is still in beta, so we might need to adjust it in the future.

Github docs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency

@MarcelKoch MarcelKoch added the reg:ci-cd This is related to the continuous integration system. label Sep 8, 2021
@MarcelKoch MarcelKoch requested a review from a team September 8, 2021 15:50
@MarcelKoch MarcelKoch self-assigned this Sep 8, 2021
Copy link
Member

@upsj upsj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Great idea!

.github/workflows/osx.yml Outdated Show resolved Hide resolved
@MarcelKoch MarcelKoch added the 1:ST:ready-for-review This PR is ready for review label Sep 9, 2021
@yhmtsai
Copy link
Member

yhmtsai commented Sep 9, 2021

It needs to distinguish the develop branch and other branches.
The develop branch always run full tests even if a new merge comes in.

@yhmtsai
Copy link
Member

yhmtsai commented Sep 9, 2021

Also, collect the previous discussion here.

  • auto-cancel:
    Pro: do not need to cancel the jobs manually, and release the limited resource automatically
    Con: Need to wait or rerun the job when we need it. For example, add a fail test before fix it or develop branch, which the intermediate pipeline result is still important

  • current behavior:
    Pro: keep every test if we do not cancel it
    Con: cancelling 5 or 6 workflow in github is painful

@MarcelKoch
Copy link
Member Author

@yhmtsai agreed on the distinction for the develop branch.
Could you elaborate on the Con point for this PR, I'm not sure if I can follow that? As far as I can see, at least the logs from the cancelled are still available.

@yhmtsai
Copy link
Member

yhmtsai commented Sep 9, 2021

the logs from the cancelled is visible only for the already run log, right?
It will stop log in the middle when it receive the termination.

add the failed test to commit <-- needs to wait the test finish
pushing the fix too quickly will not launch failed test. <-- potential issue
(need to rerun/wait the previous fail)
I am not sure the rerun will be cancelled or not when the new pipeline is issued again

I do not stop this pr if develop always finish its pipeline.
In my opinion, the debug staff frequency is lower than the new-feature staff.
the paying (rerun/wait for previous fail) is acceptable and that's why I think it is doable before

@MarcelKoch
Copy link
Member Author

There seems to be no good option to only turn off this feature for develop. Possible options I've encountered so far:

  • add it under job.<id>, but this will lead to non-deterministic cancellation
  • disable the cancel-in-progress option, but this will keep the job only if it's already queued or running
  • create separate workflows for develop, but this will result in a lot of duplication
    The 2nd option is the most promising one, but I might still happen that a job on develop is cancelled.

@upsj upsj force-pushed the cancel_actions_of_same_branch branch from 0703afb to 27a8107 Compare February 16, 2022 11:25
@upsj
Copy link
Member

upsj commented Feb 16, 2022

Github added support for fallback values, so we can distinguish between PRs and develop merges.

@upsj upsj requested a review from a team February 16, 2022 11:26
@upsj upsj force-pushed the cancel_actions_of_same_branch branch 4 times, most recently from 1a22b1e to 175dcc2 Compare February 16, 2022 12:04
@yhmtsai
Copy link
Member

yhmtsai commented Feb 16, 2022

Maybe also gitlab too? AFAIK, it needs to change the setting of the gitlab

@upsj upsj force-pushed the cancel_actions_of_same_branch branch from 77d1645 to 22460bb Compare February 16, 2022 12:10
@upsj
Copy link
Member

upsj commented Feb 16, 2022

Some explanation: Currently the actions are being run based on the push event, which means even branches without a PR will run actions. This changes the behavior to use push only for master, develop and release tags. The PR jobs are being launched by the pull_request event instead, which has the correct head_ref available to build a PR-unique concurrency group ID. If head_ref is not set, it uses the run ID instead, which is always unique, so no cancellation will happen for non-PR jobs.

@upsj upsj force-pushed the cancel_actions_of_same_branch branch from 35a175b to 266255b Compare February 16, 2022 12:18
@pratikvn
Copy link
Member

@upsj, Maybe you can disable the abidiff failing here ?

@@ -10,7 +17,7 @@ on:
default: false

concurrency:
group: ${{ github.workflow}}-${{ github.ref }}
group: ${{ github.workflow }}-${{ (github.head_ref && github.ref) || github.run_id }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what's && here? are they trancated together

Copy link
Member

@upsj upsj Feb 16, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is basically "if (head_ref) { ref } else { run_id }"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

okay, it is still in the fallback behavior

@upsj
Copy link
Member

upsj commented Feb 16, 2022

@pratikvn good point! I added it

@upsj
Copy link
Member

upsj commented Feb 16, 2022

@yhmtsai I think due to the fact that Gitlab is being mirrored from Gitlab's side, there is no direct way to distinguish between PR jobs and regular jobs. A more appropriate approach would probably be pushing to Gitlab from a Github Action, this would also enable things like a check-pr! command.

@yhmtsai
Copy link
Member

yhmtsai commented Feb 16, 2022

github.head_ref is only availble in pull request and it is the source branch of the pull request. Is it always be the same as the github.ref? Or, the source branch is the parent branch of the pull request

@upsj
Copy link
Member

upsj commented Feb 16, 2022

github.head_ref is the ID of the last commit in this PR, thus it is not suitable to identify the PR. It is only available if the action was triggered by a pull request-related event (in this case: pull_request synchronized, which is triggered if the PR branch was updated and can be merged into the base branch, develop in most cases). github.ref on the other hand is a textual description like refs/pull/882 that is unique and fixed for each PR.

Copy link
Member

@yhmtsai yhmtsai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@upsj upsj added 1:ST:ready-to-merge This PR is ready to merge. and removed 1:ST:ready-for-review This PR is ready for review labels Feb 16, 2022
@upsj upsj force-pushed the cancel_actions_of_same_branch branch from 5d74ace to 1345139 Compare February 16, 2022 13:52
@upsj upsj force-pushed the cancel_actions_of_same_branch branch from 1345139 to 0f23f6c Compare February 16, 2022 13:54
@upsj upsj merged commit fc6322b into develop Feb 16, 2022
@upsj upsj deleted the cancel_actions_of_same_branch branch February 16, 2022 13:57
@ginkgo-bot
Copy link
Member

Error: PR already merged!

tcojean added a commit that referenced this pull request Nov 12, 2022
Advertise release 1.5.0 and last changes

+ Add changelog,
+ Update third party libraries
+ A small fix to a CMake file

See PR: #1195

The Ginkgo team is proud to announce the new Ginkgo minor release 1.5.0. This release brings many important new features such as:
- MPI-based multi-node support for all matrix formats and most solvers;
- full DPC++/SYCL support,
- functionality and interface for GPU-resident sparse direct solvers,
- an interface for wrapping solvers with scaling and reordering applied,
- a new algebraic Multigrid solver/preconditioner,
- improved mixed-precision support,
- support for device matrix assembly,

and much more.

If you face an issue, please first check our [known issues page](https://github.com/ginkgo-project/ginkgo/wiki/Known-Issues) and the [open issues list](https://github.com/ginkgo-project/ginkgo/issues) and if you do not find a solution, feel free to [open a new issue](https://github.com/ginkgo-project/ginkgo/issues/new/choose) or ask a question using the [github discussions](https://github.com/ginkgo-project/ginkgo/discussions).

Supported systems and requirements:
+ For all platforms, CMake 3.13+
+ C++14 compliant compiler
+ Linux and macOS
  + GCC: 5.5+
  + clang: 3.9+
  + Intel compiler: 2018+
  + Apple LLVM: 8.0+
  + NVHPC: 22.7+
  + Cray Compiler: 14.0.1+
  + CUDA module: CUDA 9.2+ or NVHPC 22.7+
  + HIP module: ROCm 4.0+
  + DPC++ module: Intel OneAPI 2021.3 with oneMKL and oneDPL. Set the CXX compiler to `dpcpp`.
+ Windows
  + MinGW and Cygwin: GCC 5.5+
  + Microsoft Visual Studio: VS 2019
  + CUDA module: CUDA 9.2+, Microsoft Visual Studio
  + OpenMP module: MinGW or Cygwin.


Algorithm and important feature additions:
+ Add MPI-based multi-node for all matrix formats and solvers (except GMRES and IDR). ([#676](#676), [#908](#908), [#909](#909), [#932](#932), [#951](#951), [#961](#961), [#971](#971), [#976](#976), [#985](#985), [#1007](#1007), [#1030](#1030), [#1054](#1054), [#1100](#1100), [#1148](#1148))
+ Porting the remaining algorithms (preconditioners like ISAI, Jacobi, Multigrid, ParILU(T) and ParIC(T)) to DPC++/SYCL, update to SYCL 2020, and improve support and performance ([#896](#896), [#924](#924), [#928](#928), [#929](#929), [#933](#933), [#943](#943), [#960](#960), [#1057](#1057), [#1110](#1110),  [#1142](#1142))
+ Add a Sparse Direct interface supporting GPU-resident numerical LU factorization, symbolic Cholesky factorization, improved triangular solvers, and more ([#957](#957), [#1058](#1058), [#1072](#1072), [#1082](#1082))
+ Add a ScaleReordered interface that can wrap solvers and automatically apply reorderings and scalings ([#1059](#1059))
+ Add a Multigrid solver and improve the aggregation based PGM coarsening scheme ([#542](#542), [#913](#913), [#980](#980), [#982](#982),  [#986](#986))
+ Add infrastructure for unified, lambda-based, backend agnostic, kernels and utilize it for some simple kernels ([#833](#833), [#910](#910), [#926](#926))
+ Merge different CUDA, HIP, DPC++ and OpenMP tests under a common interface ([#904](#904), [#973](#973), [#1044](#1044), [#1117](#1117))
+ Add a device_matrix_data type for device-side matrix assembly ([#886](#886), [#963](#963), [#965](#965))
+ Add support for mixed real/complex BLAS operations ([#864](#864))
+ Add a FFT LinOp for all but DPC++/SYCL ([#701](#701))
+ Add FBCSR support for NVIDIA and AMD GPUs and CPUs with OpenMP ([#775](#775))
+ Add CSR scaling ([#848](#848))
+ Add array::const_view and equivalent to create constant matrices from non-const data ([#890](#890))
+ Add a RowGatherer LinOp supporting mixed precision to gather dense matrix rows ([#901](#901))
+ Add mixed precision SparsityCsr SpMV support ([#970](#970))
+ Allow creating CSR submatrix including from (possibly discontinuous) index sets ([#885](#885), [#964](#964))
+ Add a scaled identity addition (M <- aI + bM) feature interface and impls for Csr and Dense ([#942](#942))


Deprecations and important changes:
+ Deprecate AmgxPgm in favor of the new Pgm name. ([#1149](#1149)).
+ Deprecate specialized residual norm classes in favor of a common `ResidualNorm` class ([#1101](#1101))
+ Deprecate CamelCase non-polymorphic types in favor of snake_case versions (like array, machine_topology, uninitialized_array, index_set) ([#1031](#1031), [#1052](#1052))
+ Bug fix: restrict gko::share to rvalue references (*possible interface break*) ([#1020](#1020))
+ Bug fix: when using cuSPARSE's triangular solvers, specifying the factory parameter `num_rhs` is now required when solving for more than one right-hand side, otherwise an exception is thrown ([#1184](#1184)).
+ Drop official support for old CUDA < 9.2 ([#887](#887))


Improved performance additions:
+ Reuse tmp storage in reductions in solvers and add a mutable workspace to all solvers ([#1013](#1013), [#1028](#1028))
+ Add HIP unsafe atomic option for AMD ([#1091](#1091))
+ Prefer vendor implementations for Dense dot, conj_dot and norm2 when available ([#967](#967)).
+ Tuned OpenMP SellP, COO, and ELL SpMV kernels for a small number of RHS ([#809](#809))


Fixes:
+ Fix various compilation warnings ([#1076](#1076), [#1183](#1183), [#1189](#1189))
+ Fix issues with hwloc-related tests ([#1074](#1074))
+ Fix include headers for GCC 12 ([#1071](#1071))
+ Fix for simple-solver-logging example ([#1066](#1066))
+ Fix for potential memory leak in Logger ([#1056](#1056))
+ Fix logging of mixin classes ([#1037](#1037))
+ Improve value semantics for LinOp types, like moved-from state in cross-executor copy/clones ([#753](#753))
+ Fix some matrix SpMV and conversion corner cases ([#905](#905), [#978](#978))
+ Fix uninitialized data ([#958](#958))
+ Fix CUDA version requirement for cusparseSpSM ([#953](#953))
+ Fix several issues within bash-script ([#1016](#1016))
+ Fixes for `NVHPC` compiler support ([#1194](#1194))


Other additions:
+ Simplify and properly name GMRES kernels ([#861](#861))
+ Improve pkg-config support for non-CMake libraries ([#923](#923), [#1109](#1109))
+ Improve gdb pretty printer ([#987](#987), [#1114](#1114))
+ Add a logger highlighting inefficient allocation and copy patterns ([#1035](#1035))
+ Improved and optimized test random matrix generation ([#954](#954), [#1032](#1032))
+ Better CSR strategy defaults ([#969](#969))
+ Add `move_from` to `PolymorphicObject` ([#997](#997))
+ Remove unnecessary device_guard usage ([#956](#956))
+ Improvements to the generic accessor for mixed-precision ([#727](#727))
+ Add a naive lower triangular solver implementation for CUDA ([#764](#764))
+ Add support for int64 indices from CUDA 11 onward with SpMV and SpGEMM ([#897](#897))
+ Add a L1 norm implementation ([#900](#900))
+ Add reduce_add for arrays ([#831](#831))
+ Add utility to simplify Dense View creation from an existing Dense vector ([#1136](#1136)).
+ Add a custom transpose implementation for Fbcsr and Csr transpose for unsupported vendor types ([#1123](#1123))
+ Make IDR random initilization deterministic ([#1116](#1116))
+ Move the algorithm choice for triangular solvers from Csr::strategy_type to a factory parameter ([#1088](#1088))
+ Update CUDA archCoresPerSM ([#1175](#1116))
+ Add kernels for Csr sparsity pattern lookup ([#994](#994))
+ Differentiate between structural and numerical zeros in Ell/Sellp ([#1027](#1027))
+ Add a binary IO format for matrix data ([#984](#984))
+ Add a tuple zip_iterator implementation ([#966](#966))
+ Simplify kernel stubs and declarations ([#888](#888))
+ Simplify GKO_REGISTER_OPERATION with lambdas ([#859](#859))
+ Simplify copy to device in tests and examples ([#863](#863))
+ More verbose output to array assertions ([#858](#858))
+ Allow parallel compilation for Jacobi kernels ([#871](#871))
+ Change clang-format pointer alignment to left ([#872](#872))
+ Various improvements and fixes to the benchmarking framework ([#750](#750), [#759](#759), [#870](#870), [#911](#911), [#1033](#1033), [#1137](#1137))
+ Various documentation improvements ([#892](#892), [#921](#921), [#950](#950), [#977](#977), [#1021](#1021), [#1068](#1068), [#1069](#1069), [#1080](#1080), [#1081](#1081), [#1108](#1108), [#1153](#1153), [#1154](#1154))
+ Various CI improvements ([#868](#868), [#874](#874), [#884](#884), [#889](#889), [#899](#899), [#903](#903),  [#922](#922), [#925](#925), [#930](#930), [#936](#936), [#937](#937), [#958](#958), [#882](#882), [#1011](#1011), [#1015](#1015), [#989](#989), [#1039](#1039), [#1042](#1042), [#1067](#1067), [#1073](#1073), [#1075](#1075), [#1083](#1083), [#1084](#1084), [#1085](#1085), [#1139](#1139), [#1178](#1178), [#1187](#1187))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1:ST:ready-to-merge This PR is ready to merge. reg:ci-cd This is related to the continuous integration system.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants