-
Notifications
You must be signed in to change notification settings - Fork 787
[SYCL][RTC] Preliminary support for ESIMD kernels #16222
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
Conversation
Signed-off-by: Julian Oppermann <[email protected]>
Signed-off-by: Julian Oppermann <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few nits & questions.
MDesc = std::move(ESIMDSplits.front()); | ||
|
||
if (MDesc.isESIMD()) { | ||
// TODO: We're assuming ESIMD lowering is not deactivated (why would it?). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How would it be deactivated? Through a user option?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The driver would deactivate it (i.e. not pass -lower-esimd
to sycl-post-link
) in the IR-only output mode, which is only relevant for spec constant processing IIUC. Otherwise it doesn't seem to be influenced by a user-option. I updated the comment to reflect this.
FunctionPassManager MainFPM; | ||
MainFPM.addPass(ESIMDLowerLoadStorePass{}); | ||
|
||
if (!PerformOpts) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the negation correct here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch, thanks!
namespace jit_compiler { | ||
|
||
// Runs a pass pipeline to lower ESIMD constructs on the given split model, | ||
// which may only contain ESIMD entrypoints. This is a copy of the similar |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
may
or must
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
must
Signed-off-by: Julian Oppermann <[email protected]>
@intel/llvm-gatekeepers Please merge, thanks. |
Adds support for compiling source strings that contain ESIMD kernels only, hence require no device splitting. I'm using a simplified version of the driver logic in
sycl-post-link
. The pass pipeline construction helperlowerEsimdConstructs
is also copied fromsycl-post-link
.