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 1 commit into
base: SYCL-2020
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.

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
Member

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, ...!

@psalz
Copy link
Member

psalz commented Feb 21, 2024

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

add_library(${object_lib_name} OBJECT ${test_cases_list})
add_executable(${exe_name} $<TARGET_OBJECTS:${object_lib_name}>)

# hipSYCL needs the macro to be called on both the object library (to
Copy link
Member

@psalz psalz Feb 21, 2024

Choose a reason for hiding this comment

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

Suggested change
# hipSYCL needs the macro to be called on both the object library (to
# SimSYCL needs the macro to be called on both the object library (to

Copy pasta - although I think this isn't even true?

@psalz
Copy link
Member

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.

@@ -0,0 +1,45 @@
add_library(SYCL::SYCL INTERFACE IMPORTED GLOBAL)
Copy link
Member

Choose a reason for hiding this comment

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

Why this file is named AdaptSimSYCL and not SimSYCL?

Copy link
Member

Choose a reason for hiding this comment

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

We've had Find* and Adapt* files for a while now, it has nothing to do with AdaptiveCpp - the corresponding file for AdaptiveCpp in #874 is called AdaptAdaptiveCpp ;-).

@keryell
Copy link
Member

keryell commented Sep 10, 2024

How do we move on this?

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.

4 participants