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

Add support for SimSYCL as a SYCL implementation #871

Open
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

fknorr
Copy link
Contributor

@fknorr fknorr commented Feb 17, 2024

This adds SimSYCL as a supported SYCL implementation, complete with CMake integration and an exclude-list for the "fast" conformance build.

This should be merged after #870 #872 and #873, because the CTS it will not actually compile for many of the non-excluded cases unless those bugs are addressed.

@fknorr fknorr requested a review from a team as a code owner February 17, 2024 17:59
if (NOT ${SYCL_IMPLEMENTATION} IN_LIST KNOWN_SYCL_IMPLEMENTATIONS)
message(FATAL_ERROR
"The SYCL CTS requires specifying a SYCL implementation with "
"-DSYCL_IMPLEMENTATION=[Intel_SYCL,DPCPP;hipSYCL]")
"-DSYCL_IMPLEMENTATION=[Intel_SYCL,DPCPP;hipSYCL;SimSYCL]")
Copy link
Contributor

Choose a reason for hiding this comment

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

I wonder if we should just put KNOWN_SYCL_IMPLEMENTATIONS directly into the message instead of modifying it every time we change list of known implementations?

Copy link
Member

Choose a reason for hiding this comment

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

Perhaps CTS_GRADE_SYCL_IMPLEMENTATION or something better, because we know quite many other implementations. :-)

Comment on lines 77 to 79
#if SYCL_CTS_COMPILING_WITH_SIMSYCL
SKIP("SimSYCL does not implement asynchronous execution.");
#endif
Copy link
Contributor

Choose a reason for hiding this comment

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

I think that from the conformance point of view the better to use DISABLED_FOR_TEST_CASE macro so the test appears as failed.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I'm not sure this is even non-conformant. IIRC an implementation only needs to guarantee forward progress on an event when wait is called on it, which does not happen in any of these test cases.

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think this test requires a guarantee of forward progress, does it? It seems like it is just calling event::get_wait_list and making sure the list contains the direct dependencies of a pending command. There is no expectation that the command has completed when get_wait_list is called.

Comment on lines +3 to +6
if(SYCL_IMPLEMENTATION STREQUAL SimSYCL)
message(WARNING "SimSYCL does not provide true concurrency between host and device, disabling USM atomic tests")
list(FILTER test_cases_list EXCLUDE REGEX usm_atomic_access_.*\\.cpp$)
endif()
Copy link
Contributor

Choose a reason for hiding this comment

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

Piggybacking off of @AlexeySachkov's comment, these should preferably also be disabled using DISABLE_FOR_TEST_CASE(SimSYCL, ...!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Same as above - this needs a forward progress guarantee in SYCL to pass.

@psalz
Copy link
Contributor

psalz commented Feb 21, 2024

Please also document SimSYCL in README.md and docs/README.adoc!

cmake/AdaptSimSYCL.cmake Outdated Show resolved Hide resolved
@psalz
Copy link
Contributor

psalz commented Feb 21, 2024

Ideally we should also include SimSYCL in our CI setup. I think it should be relatively straightforward to add, analogously to hipSYCL/AdaptiveCpp.

@keryell
Copy link
Member

keryell commented Sep 10, 2024

How do we move on this?

@fknorr
Copy link
Contributor Author

fknorr commented Dec 18, 2024

Rebased onto #1011 and #874 and #872 , and now mentions SimSYCL in docs.

@fknorr fknorr force-pushed the build-with-simsycl branch from 3c601ad to 28402a6 Compare December 28, 2024 12:14
@fknorr fknorr force-pushed the build-with-simsycl branch from 28402a6 to 47b7b26 Compare January 8, 2025 11:26
@fknorr
Copy link
Contributor Author

fknorr commented Jan 8, 2025

I've added a CI step for a SimSYCL build, but creating the docker image needs some secrets. Not sure how to proceed on this.

@psalz
Copy link
Contributor

psalz commented Jan 8, 2025

I've added a CI step for a SimSYCL build, but creating the docker image needs some secrets. Not sure how to proceed on this.

I've launched a manual run to create the image here. It went through, but it looks like there's some issue while building the CTS itself!

@fknorr
Copy link
Contributor Author

fknorr commented Jan 8, 2025

Thanks, it's building now!

@fknorr fknorr force-pushed the build-with-simsycl branch from 6580cf8 to 66159bf Compare January 8, 2025 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants