-
Notifications
You must be signed in to change notification settings - Fork 229
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
arch: Add ICX support #2051
arch: Add ICX support #2051
Conversation
georgebisbas
commented
Jan 23, 2023
•
edited
Loading
edited
- Add ICX support : https://www.intel.com/content/www/us/en/developer/articles/guide/porting-guide-for-icc-users-to-dpcpp-or-icx.html
- Add icx docker image (same with icc one)
- Adds platforms SKX, KLX, CLC, CLK (@FabioLuporini )
- Adds a condition option for switching test confs
- Drops support for icc version<15
Codecov Report
@@ Coverage Diff @@
## master #2051 +/- ##
==========================================
- Coverage 87.14% 87.09% -0.06%
==========================================
Files 223 223
Lines 39647 39686 +39
Branches 5139 5147 +8
==========================================
+ Hits 34550 34564 +14
- Misses 4521 4544 +23
- Partials 576 578 +2
|
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.
Could we at least add it to the icc-cpu docker CI
1ffff27
to
70f6190
Compare
84e1292
to
a5f56cb
Compare
d6c6120
to
f02a466
Compare
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.
I still don't like having separate OneApi and Intel compiler
docker/Dockerfile.cpu
Outdated
############################################################## | ||
FROM base as icx | ||
|
||
# Download the key to system keyring |
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.
This whole part is a waste , just do FROM icc as icx
and just set the DEVITO env vars
tests/conftest.py
Outdated
@@ -69,6 +71,12 @@ def skipif(items, whole_module=False): | |||
isinstance(configuration['platform'], Cpu64): | |||
skipit = "`icc+cpu64` won't work with this test" | |||
break | |||
# Skip if it won't run with OneAPICompiler | |||
if i == 'cpu64-icpx' and \ |
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.
I don't think we need that, if everything is a proper IntelCompiler
then we just need cpu64-intel
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.
Can do that, but we have tests that, at least temporarily, pass with ICC but not with ICX.
What you propose should be fine with the next release and at some point, we are gonna drop ICC entirely.
I do not have any string preference
901ce68
to
ce35a22
Compare
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.
Let's try taking this to completion
08f7e1c
to
6d717fd
Compare
942caba
to
d7346bb
Compare
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.
Should I rename to intel-icc, intel-icx?
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 icc or icx ?
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.
οκ
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 icc or icx ?
devito/arch/compiler.py
Outdated
@@ -793,6 +847,8 @@ def __lookup_cmds__(self): | |||
'intel': IntelCompiler, | |||
'icpc': IntelCompiler, | |||
'icc': IntelCompiler, |
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.
I wonder whether icc and intel should default to OpenapiCompiler as well. I think they do. At least DEVITO_ARCH=intel.
icc
maybe the only one that really should attempt to pick up icc
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.
ok
0202e68
to
7a269dd
Compare
d2b4c86
to
df590b7
Compare
0ef1fb5
to
851f488
Compare
devito/arch/compiler.py
Outdated
|
||
language = kwargs.pop('language', configuration['language']) | ||
self.cflags.append("-xHost") |
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.
ideally this line goes after pulling platform and language, but we can address it in another PR if it can spare a useless CI spin
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.
ok
devito/arch/compiler.py
Outdated
self.cflags.append('-fdebug-info-for-profiling') | ||
|
||
# Make sure the MPI compiler uses `icx` underneath -- whatever the MPI distro is | ||
if kwargs.get('mpi'): |
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.
Wait, can we now not drop this? Why was the conversation marked as "resolved" ? We should now be getting the MPI warning via super()?
@@ -701,7 +701,6 @@ def test_everything(): | |||
assert np.all(u.data == u1.data) | |||
|
|||
|
|||
@skipif('cpu64-icc') |
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.
it somehow works now?
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.
Yes!
8a6af9f
to
e355ed8
Compare
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.
OK, thanks for the patience. This is now for me good to go.