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

Supernodal SpTRSV, improve symbolic performance #899

Merged
merged 1 commit into from
Mar 18, 2021

Conversation

iyamazaki
Copy link
Contributor

This PR aims to reduce the SpTRSV symbolic time by keep track of nonzero entries in generate_supernodal_graph (using deep-copy of the whole vector can be expensive for a large matrix).

Spot-checks on White:

  • ../scripts/cm_test_all_sandia --spot-check --arch=Power8,Pascal60 --num=1

#######################################################
PASSED TESTS
#######################################################
cuda-10.1.105-Cuda_OpenMP-release build_time=701 run_time=165
cuda-10.1.105-Cuda_Serial-release build_time=742 run_time=233
cuda-9.2.88-Cuda_OpenMP-release build_time=690 run_time=192
cuda-9.2.88-Cuda_Serial-release build_time=712 run_time=260
gcc-6.4.0-OpenMP_Serial-release build_time=243 run_time=171
gcc-7.2.0-OpenMP-release build_time=189 run_time=59
gcc-7.2.0-OpenMP_Serial-release build_time=246 run_time=169
gcc-7.2.0-Serial-release build_time=167 run_time=72

  • ../scripts/cm_test_all_sandia --spot-check-tpls --arch=Power8,Pascal60 --num=1 --cxxflags-extra='-DKOKKOSKERNELS_ENABLE_SUPERNODAL_SPTRSV=ON'

#######################################################
PASSED TESTS
#######################################################
cuda-10.1.105-Cuda_Serial-release build_time=827 run_time=231
cuda-9.2.88-Cuda_OpenMP-release build_time=758 run_time=196
gcc-7.2.0-OpenMP-release build_time=191 run_time=60
gcc-7.2.0-Serial-release build_time=161 run_time=74
gcc-7.4.0-OpenMP-release build_time=204 run_time=56

@kokkos-devops-admin
Copy link

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection Is Not Necessary for this Pull Request.

@kokkos-devops-admin
Copy link

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: KokkosKernels_PullRequest_GCC720

  • Build Num: 56
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_GCC720

  • Build Num: 49
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_INTEL18

  • Build Num: 35
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_GCC720_Light

  • Build Num: 77
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_CUDA10

  • Build Num: 41
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_CUDA9

  • Build Num: 35
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_GCC720_GCC740

  • Build Num: 35
  • Status: STARTED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Using Repos:

Repo: KOKKOSKERNELS (iyamazaki/kokkos-kernels)
  • Branch: sptrsv-symbolic
  • SHA: 0016058
  • Mode: TEST_REPO

Pull Request Author: iyamazaki

@kokkos-devops-admin
Copy link

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: KokkosKernels_PullRequest_GCC720

  • Build Num: 56
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_GCC720

  • Build Num: 49
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_INTEL18

  • Build Num: 35
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_GCC720_Light

  • Build Num: 77
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_CUDA10

  • Build Num: 41
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_CUDA9

  • Build Num: 35
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

Build Information

Test Name: KokkosKernels_PullRequest_Tpls_GCC720_GCC740

  • Build Num: 35
  • Status: PASSED

Jenkins Parameters

Parameter Name Value
KOKKOSKERNELS_SOURCE_BRANCH sptrsv-symbolic
KOKKOSKERNELS_SOURCE_REPO https://github.com/iyamazaki/kokkos-kernels
KOKKOSKERNELS_SOURCE_SHA 0016058
KOKKOSKERNELS_TARGET_BRANCH develop
KOKKOSKERNELS_TARGET_REPO https://github.com/kokkos/kokkos-kernels
KOKKOSKERNELS_TARGET_SHA 77848fd
PULLREQUESTNUM 899
TEST_REPO_ALIAS KOKKOSKERNELS

@kokkos-devops-admin
Copy link

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
NO REVIEWS HAVE BEEN PERFORMED ON THIS PULL REQUEST!

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

5 similar comments
@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

6 similar comments
@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

Copy link
Contributor

@e10harvey e10harvey left a comment

Choose a reason for hiding this comment

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

@iyamazaki, Please see my review comments. What do you think about using bit-wise operators to more efficiently utilize the memory allocated in check and completely avoid resetting it at the end of the outer loop? Another option would be to make check an array of bools.

int nblocks = 0;
for (int s = 0; s < nsuper; s++) {
int j1 = nb[s];
int j2 = j1+1; // based on the first row

size_type nidxs = 0;
for (size_type i = row_map_host (j1); i < row_map_host (j2); i++) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Is row_map_host an array of row indices indicating where rows that contain non-zero scalars exist in a given 2-rank matrix?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, it points to the location of the nonzero, but even though we operate on supernodal blocks, the matrix is still stored in the standard CSR format with rank-1 arrays.

int nblocks = 0;
for (int s = 0; s < nsuper; s++) {
int j1 = nb[s];
int j2 = j1+1; // based on the first row

size_type nidxs = 0;
for (size_type i = row_map_host (j1); i < row_map_host (j2); i++) {
int s2 = map (entries_host (i));
Copy link
Contributor

Choose a reason for hiding this comment

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

Is s2 the index of a 2-rank matrix (supernodal block?) that contains non-zero scalars?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, s2 is the index of the supernodal block, but the matrix is stored in the standard CSR format with rank-1 arrays.

int nblocks = 0;
for (int s = 0; s < nsuper; s++) {
int j1 = nb[s];
int j2 = j1+1; // based on the first row

size_type nidxs = 0;
for (size_type i = row_map_host (j1); i < row_map_host (j2); i++) {
Copy link
Contributor

Choose a reason for hiding this comment

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

What is the maximum value in row_map_host(:)?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is the number of nonzero entries in the matrix.

Kokkos::deep_copy (check, 0);
//Kokkos::deep_copy (check, 0);
for (size_type i = 0; i < nidxs; i++) {
check (idxs(i)) = 0;
Copy link
Contributor

Choose a reason for hiding this comment

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

Consider making check an array of 64bit integers and using bit-wise operators to toggle bits. In this way, it may be reasonable to allocate check to be large enough so that it does not need to be overwritten before every iteration of the inner loop.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

nsup is the number of supernodal blocks. So, in the worst case, it can be number of columns, and in order not to be overwritten, I need to allocate n^2 entries?

Copy link
Contributor

Choose a reason for hiding this comment

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

What is the size of check in bytes now? What is the maximum value of n?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is the size of the local matrix and is an input from a user. So, it is difficult to say the max. Maybe, typically, it is around O(10^5)?

Copy link
Contributor

Choose a reason for hiding this comment

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

If n is O(10^5), then check would need to be up to ~1GB if each element of check is a single bit? To reduce memory usage, a fall-back approach could be to have two or more limited-size check arrays; when one is used up, zero the used one out in parallel; this would require some synchronization.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Thank you, @e10harvey. Any saving in the memory is good (though nsup is usually much smaller than n, and this setup is still done on the host).

@kokkos-devops-admin
Copy link

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
THE LAST COMMIT TO THIS PULL REQUEST HAS BEEN REVIEWED, BUT NOT ACCEPTED OR REQUIRES CHANGES

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

6 similar comments
@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

4 similar comments
@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

Copy link
Contributor Author

@iyamazaki iyamazaki left a comment

Choose a reason for hiding this comment

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

Thank you so much for your review, @e10harvey !!

int nblocks = 0;
for (int s = 0; s < nsuper; s++) {
int j1 = nb[s];
int j2 = j1+1; // based on the first row

size_type nidxs = 0;
for (size_type i = row_map_host (j1); i < row_map_host (j2); i++) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, it points to the location of the nonzero, but even though we operate on supernodal blocks, the matrix is still stored in the standard CSR format with rank-1 arrays.

int nblocks = 0;
for (int s = 0; s < nsuper; s++) {
int j1 = nb[s];
int j2 = j1+1; // based on the first row

size_type nidxs = 0;
for (size_type i = row_map_host (j1); i < row_map_host (j2); i++) {
Copy link
Contributor Author

Choose a reason for hiding this comment

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

It is the number of nonzero entries in the matrix.

int nblocks = 0;
for (int s = 0; s < nsuper; s++) {
int j1 = nb[s];
int j2 = j1+1; // based on the first row

size_type nidxs = 0;
for (size_type i = row_map_host (j1); i < row_map_host (j2); i++) {
int s2 = map (entries_host (i));
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, s2 is the index of the supernodal block, but the matrix is stored in the standard CSR format with rank-1 arrays.

Kokkos::deep_copy (check, 0);
//Kokkos::deep_copy (check, 0);
for (size_type i = 0; i < nidxs; i++) {
check (idxs(i)) = 0;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

nsup is the number of supernodal blocks. So, in the worst case, it can be number of columns, and in order not to be overwritten, I need to allocate n^2 entries?

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

2 similar comments
@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

Copy link
Contributor

@e10harvey e10harvey left a comment

Choose a reason for hiding this comment

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

Thanks, @iyamazaki ! Sorry for the delayed approval.

@kokkos-devops-admin
Copy link

Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ e10harvey ]!

@kokkos-devops-admin
Copy link

All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....

@e10harvey e10harvey merged commit d7fc6d8 into kokkos:develop Mar 18, 2021
@iyamazaki
Copy link
Contributor Author

Thank you @e10harvey so much for reviewing this PR!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants