88from sympy .printing import sstr
99
1010from devito import Eq , Revolver , configuration # noqa
11- from devito .arch import Arm , Cpu64 , Device , get_advisor_path , sniff_mpi_distro
11+ from devito .arch import Arm , Cpu64 , Device , Power , get_advisor_path , sniff_mpi_distro
1212from devito .arch .compiler import (
13- IntelCompiler , NvidiaCompiler , OneapiCompiler , compiler_registry
13+ GNUCompiler , IntelCompiler , NvidiaCompiler , OneapiCompiler , compiler_registry
1414)
1515from devito .checkpointing import NoopRevolver
1616from devito .finite_differences .differentiable import EvalDerivative
@@ -35,10 +35,19 @@ def skipif(items, whole_module=False):
3535 items = as_tuple (items )
3636 # Sanity check
3737 accepted = set ()
38- accepted .update ({'device' , 'device-C' , 'device-openmp' , 'device-openacc' ,
39- 'device-aomp' , 'cpu64-icc' , 'cpu64-icx' , 'cpu64-nvc' ,
40- 'noadvisor' , 'cpu64-arm' , 'cpu64-icpx' , 'chkpnt' })
41- accepted .update ({'nodevice' , 'noomp' })
38+ accepted .update ({
39+ # GPU (device-language)
40+ 'device' , 'device-C' , 'device-openmp' , 'device-openacc' , 'device-aomp' ,
41+ # CPU (cpu64-instruction set)
42+ 'cpu64-icc' , 'cpu64-icx' , 'cpu64-nvc' , 'cpu64-icpx' ,
43+ # CPU (cpu64-architecture)
44+ 'cpu64-arm' ,
45+ # CPU (cpu64-architecture-compiler)
46+ 'cpu64-power-gcc' ,
47+ # Miscellaneous
48+ 'chkpnt'
49+ })
50+ accepted .update ({'noadvisor' , 'nodevice' , 'noomp' })
4251 unknown = sorted (set (items ) - accepted )
4352 if unknown :
4453 raise ValueError (f"Illegal skipif argument(s) `{ unknown } `" )
@@ -97,6 +106,11 @@ def skipif(items, whole_module=False):
97106 if i == 'cpu64-arm' and isinstance (configuration ['platform' ], Arm ):
98107 skipit = "Arm doesn't support x86-specific instructions"
99108 break
109+ if i == 'cpu64-power-gcc' and \
110+ isinstance (configuration ['platform' ], Power ) and \
111+ isinstance (configuration ['compiler' ], GNUCompiler ):
112+ skipit = "GCC cannot compile these POWER instructions"
113+ break
100114 # Skip if pyrevolve not installed
101115 if i == 'chkpnt' and Revolver is NoopRevolver :
102116 skipit = "pyrevolve not installed"
0 commit comments