pyccel.ast.parallel package¶
Submodules¶
pyccel.ast.parallel.basic module¶
-
class
pyccel.ast.parallel.basic.Basic[source]¶ Bases:
sympy.core.basic.Basic-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
pyccel.ast.parallel.communicator module¶
-
class
pyccel.ast.parallel.communicator.Communicator[source]¶ Bases:
pyccel.ast.parallel.basic.BasicRepresents a communicator in the code.
- size: int
- the number of processes in the group associated with the communicator
- rank: int
- the rank of the calling process within the group associated with the communicator
Examples
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
duplicate()[source]¶ This routine creates a duplicate of the communicator other has the same fixed attributes as the communicator.
Examples
-
group¶ the group associated with the communicator.
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
rank¶
-
size¶
-
class
pyccel.ast.parallel.communicator.UniversalCommunicator[source]¶ Bases:
pyccel.ast.parallel.basic.BasicRepresents the communicator to all processes.
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
group¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
size¶
-
pyccel.ast.parallel.group module¶
-
class
pyccel.ast.parallel.group.Difference[source]¶ Bases:
sympy.sets.sets.ComplementRepresents the difference between two groups.
Examples
>>> from pyccel.ast.parallel.group import Group, Difference >>> g1 = Group(1, 3, 6, 7, 8, 9) >>> g2 = Group(0, 2, 4, 5, 8, 9) >>> Difference(g1, g2) {1, 3, 6, 7}
-
default_assumptions= {}¶
-
-
class
pyccel.ast.parallel.group.Group[source]¶ Bases:
sympy.sets.sets.FiniteSetRepresents a group of processes.
- processes: Set
- set of the processes within the group
- rank: int
- the rank of the calling process within the group
Examples
>>> from pyccel.ast.parallel.group import Group >>> g = Group(1, 2, 3, 4) >>> g {1, 2, 3, 4} >>> g.size 4
-
communicator¶
-
compare(other)[source]¶ This routine returns the relationship between self and other If self and other contain the same processes, ranked the same way, this routine returns MPI_IDENT If self and other contain the same processes, but ranked differently, this routine returns MPI_SIMILAR Otherwise this routine returns MPI_UNEQUAL.
-
default_assumptions= {}¶
-
difference(other)[source]¶ Returns in newgroup all processes in self that are not in other, ordered as in self.
Examples
As a shortcut it is possible to use the ‘-‘ operator:
>>> from pyccel.ast.parallel.group import Group >>> g1 = Group(1, 3, 6, 7, 8, 9) >>> g2 = Group(0, 2, 4, 5, 8, 9) >>> g1.difference(g2) {1, 3, 6, 7} >>> g1 - g2 {1, 3, 6, 7}
-
intersection(other)[source]¶ Returns in newgroup all processes that are in both groups, ordered as in self.
Examples
>>> from pyccel.ast.parallel.group import Group >>> g1 = Group(1, 3, 6, 7, 8, 9) >>> g2 = Group(0, 2, 4, 5, 8, 9) >>> g1.intersection(g2) {8, 9}
-
processes¶ Returns the set of the group processes.
-
rank¶
-
size¶ the number of processes in the group.
-
translate(rank1, other, rank2)[source]¶ This routine takes an array of n ranks (ranks1) which are ranks of processes in self. It returns in ranks2 the corresponding ranks of the processes as they are in other. MPI_UNDEFINED is returned for processes not in other
-
union(other)[source]¶ Returns in newgroup a group consisting of all processes in self followed by all processes in other, with no duplication.
Examples
As a shortcut it is possible to use the ‘+’ operator:
>>> from pyccel.ast.parallel.group import Group >>> g1 = Group(1, 3, 6, 7, 8, 9) >>> g2 = Group(0, 2, 4, 5, 8, 9) >>> g1.union(g2) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} >>> g1 + g2 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
-
class
pyccel.ast.parallel.group.Intersection[source]¶ Bases:
sympy.sets.sets.IntersectionRepresents the intersection of groups.
Examples
>>> from pyccel.ast.parallel.group import Group, Intersection >>> g1 = Group(1, 3, 6, 7, 8, 9) >>> g2 = Group(0, 2, 4, 5, 8, 9) >>> Intersection(g1, g2) {8, 9}
-
default_assumptions= {}¶
-
-
class
pyccel.ast.parallel.group.Range[source]¶ Bases:
sympy.sets.fancysets.RangeRepresentes a range of processes.
Examples
>>> from pyccel.ast.parallel.group import Range >>> from sympy import Symbol >>> n = Symbol('n') >>> Range(0, n) Range(0, n)
-
default_assumptions= {}¶
-
-
class
pyccel.ast.parallel.group.Split[source]¶ Bases:
pyccel.ast.parallel.group.GroupSplits the group over a given color.
Examples
>>> from pyccel.ast.parallel.group import UniversalGroup >>> from pyccel.ast.parallel.communicator import UniversalCommunicator, split >>> colors = [1, 1, 0, 1, 0, 0] >>> g = Split(UniversalGroup(), colors, 0) >>> g {2, 4, 5} >>> comm = split(UniversalCommunicator(), g) Communicator({2, 4, 5}, None)
-
default_assumptions= {}¶
-
-
class
pyccel.ast.parallel.group.Union[source]¶ Bases:
sympy.sets.sets.UnionRepresents the union of groups.
Examples
>>> from pyccel.ast.parallel.group import Group, Union >>> g1 = Group(1, 3, 6, 7, 8, 9) >>> g2 = Group(0, 2, 4, 5, 8, 9) >>> Union(g1, g2) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
-
default_assumptions= {}¶
-
-
class
pyccel.ast.parallel.group.UniversalGroup[source]¶ Bases:
sympy.sets.fancysets.NaturalsRepresents the group of all processes. Since the number of processes is only known at the run-time and the universal group is assumed to contain all processes, it is convinient to consider it as the set of all possible processes which is nothing else than the set of Natural numbers.
- np: Symbol
- a sympy symbol describing the total number of processes.
-
communicator¶
-
default_assumptions= {}¶
-
np= np¶
-
processes¶
-
size¶ the total number of processes.
pyccel.ast.parallel.mpi module¶
-
class
pyccel.ast.parallel.mpi.MPI[source]¶ Bases:
pyccel.ast.parallel.basic.BasicBase class for MPI.
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
pyccel.ast.parallel.openacc module¶
-
class
pyccel.ast.parallel.openacc.ACC[source]¶ Bases:
pyccel.ast.parallel.basic.BasicBase class for OpenACC.
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Async[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Async >>> ACC_Async('x', 'y') async(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'async'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Auto[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Auto >>> ACC_Auto() auto
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'auto'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Bind[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Bind >>> ACC_Bind('n') bind(n)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'bind'¶
-
variable¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Collapse[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Collapse >>> ACC_Collapse(2) collapse(2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n_loops¶
-
name= 'collapse'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Copy[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Copy >>> ACC_Copy('x', 'y') copy(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'copy'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Copyin[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Copyin >>> ACC_Copyin('x', 'y') copyin(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'copyin'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Copyout[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Copyout >>> ACC_Copyout('x', 'y') copyout(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'copyout'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Create[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Create >>> ACC_Create('x', 'y') create(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'create'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Default[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Default >>> ACC_Default('present') default(present)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= None¶
-
status¶
-
-
class
pyccel.ast.parallel.openacc.ACC_DefaultAsync[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_DefaultAsync >>> ACC_DefaultAsync('x', 'y') default_async(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'default_async'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Delete[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Delete >>> ACC_Delete('x', 'y') delete(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'delete'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Device[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Device >>> ACC_Device('x', 'y') device(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'device'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_DeviceNum[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_DeviceNum >>> ACC_DeviceNum(2) device_num(2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n_device¶
-
name= 'device_num'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_DevicePtr[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_DevicePtr >>> ACC_DevicePtr('x', 'y') deviceptr(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'deviceptr'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_DeviceResident[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_DeviceResident >>> ACC_DeviceResident('x', 'y') device_resident(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'device_resident'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_DeviceType[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_DeviceType >>> ACC_DeviceType('x', 'y') device_type(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'device_type'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Finalize[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Finalize >>> ACC_Finalize() finalize
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'finalize'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_FirstPrivate[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_FirstPrivate >>> ACC_FirstPrivate('x', 'y') firstprivate(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'firstprivate'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_For[source]¶ Bases:
pyccel.ast.core.ForIterator,pyccel.ast.parallel.openacc.ACCACC Loop construct statement.
Examples
-
body¶
-
clauses¶
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
iterable¶
-
loop¶
-
name= 'do'¶
-
target¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Gang[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Gang >>> ACC_Gang('x', 'y') gang(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'gang'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Host[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Host >>> ACC_Host('x', 'y') host(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'host'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_If[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_If >>> ACC_If(True) if (True)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'if'¶
-
test¶
-
-
class
pyccel.ast.parallel.openacc.ACC_IfPresent[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_IfPresent >>> ACC_IfPresent() if_present
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'if_present'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Independent[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Independent >>> ACC_Independent() independent
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'independent'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Link[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Link >>> ACC_Link('x', 'y') link(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'link'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_NoHost[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_NoHost >>> ACC_NoHost() nohost
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'nohost'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_NumGangs[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_NumGangs >>> ACC_NumGangs(2) num_gangs(2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n_gang¶
-
name= 'num_gangs'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_NumWorkers[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_NumWorkers >>> ACC_NumWorkers(2) num_workers(2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n_worker¶
-
name= 'num_workers'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Parallel[source]¶ Bases:
pyccel.ast.core.ParallelBlock,pyccel.ast.parallel.openacc.ACCACC Parallel construct statement.
Examples
>>> from pyccel.parallel.openacc import ACC_Parallel >>> from pyccel.parallel.openacc import ACC_NumThread >>> from pyccel.parallel.openacc import ACC_Default >>> from pyccel.ast.core import Variable, Assign, Block >>> n = Variable('int', 'n') >>> x = Variable('int', 'x') >>> body = [Assign(x,2.*n + 1.), Assign(n, n + 1)] >>> variables = [x,n] >>> clauses = [ACC_NumThread(4), ACC_Default('shared')] >>> ACC_Parallel(clauses, variables, body) #pragma parallel num_threads(4) default(shared) x := 1.0 + 2.0*n n := 1 + n
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'parallel'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Present[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Present >>> ACC_Present('x', 'y') present(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'present'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Private[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Private >>> ACC_Private('x', 'y') private(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'private'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Reduction[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Reduction >>> ACC_Reduction('+', 'x', 'y') reduction('+': (x, y))
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'reduction'¶
-
operation¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Self[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Self >>> ACC_Self('x', 'y') self(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'self'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Seq[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Seq >>> ACC_Seq() seq
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'seq'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Tile[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Tile >>> ACC_Tile('x', 'y') tile(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'tile'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_UseDevice[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_UseDevice >>> ACC_UseDevice('x', 'y') use_device(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'use_device'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Vector[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Vector >>> ACC_Vector('x', 'y') vector(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'vector'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_VectorLength[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_VectorLength >>> ACC_VectorLength(2) vector_length(2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n¶
-
name= 'vector_length'¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Wait[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Wait >>> ACC_Wait('x', 'y') wait(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'wait'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openacc.ACC_Worker[source]¶ Bases:
pyccel.ast.parallel.openacc.ACCExamples
>>> from pyccel.parallel.openacc import ACC_Worker >>> ACC_Worker('x', 'y') worker(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'worker'¶
-
variables¶
-
pyccel.ast.parallel.openmp module¶
-
class
pyccel.ast.parallel.openmp.OMP[source]¶ Bases:
pyccel.ast.parallel.basic.BasicBase class for OpenMP.
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Collapse[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP CollapseClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Collapse >>> OMP_Collapse(2) collapse(2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n_loops¶
-
name= 'collapse'¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Copyin[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP CopyinClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Copyin >>> OMP_Copyin('x', 'y') copyin(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'copyin'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Default[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP ParallelDefaultClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Default >>> OMP_Default('shared') default(shared)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= None¶
-
status¶
-
-
class
pyccel.ast.parallel.openmp.OMP_FirstPrivate[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP FirstPrivateClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_FirstPrivate >>> OMP_FirstPrivate('x', 'y') firstprivate(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'firstprivate'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openmp.OMP_For[source]¶ Bases:
pyccel.ast.core.ForIterator,pyccel.ast.parallel.openmp.OMPOMP Parallel For construct statement.
Examples
-
body¶
-
clauses¶
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
iterable¶
-
loop¶
-
name= 'do'¶
-
nowait¶
-
target¶
-
-
class
pyccel.ast.parallel.openmp.OMP_If[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP ParallelIfClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_If >>> OMP_If(True) if (True)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'if'¶
-
test¶
-
-
class
pyccel.ast.parallel.openmp.OMP_LastPrivate[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP LastPrivateClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_LastPrivate >>> OMP_LastPrivate('x', 'y') lastprivate(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'lastprivate'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Linear[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP LinearClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Linear >>> OMP_Linear('x', 'y', 2) linear((x, y): 2)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'linear'¶
-
step¶
-
variables¶
-
-
class
pyccel.ast.parallel.openmp.OMP_NumThread[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP ParallelNumThreadClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_NumThread >>> OMP_NumThread(4) num_threads(4)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'num_threads'¶
-
num_threads¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Ordered[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP OrderedClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Ordered >>> OMP_Ordered(2) ordered(2) >>> OMP_Ordered() ordered
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
n_loops¶
-
name= 'ordered'¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Parallel[source]¶ Bases:
pyccel.ast.core.ParallelBlock,pyccel.ast.parallel.openmp.OMPOMP Parallel construct statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Parallel >>> from pyccel.parallel.openmp import OMP_NumThread >>> from pyccel.parallel.openmp import OMP_Default >>> from pyccel.ast.core import Variable, Assign, Block >>> n = Variable('int', 'n') >>> x = Variable('int', 'x') >>> body = [Assign(x,2.*n + 1.), Assign(n, n + 1)] >>> variables = [x,n] >>> clauses = [OMP_NumThread(4), OMP_Default('shared')] >>> OMP_Parallel(clauses, variables, body) #pragma parallel num_threads(4) default(shared) x := 1.0 + 2.0*n n := 1 + n
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'parallel'¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Private[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP PrivateClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Private >>> OMP_Private('x', 'y') private(x, y)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'private'¶
-
variables¶
-
-
class
pyccel.ast.parallel.openmp.OMP_ProcBind[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP ParallelProcBindClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_ProcBind >>> OMP_ProcBind('master') proc_bind(master)
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'proc_bind'¶
-
status¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Reduction[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP ReductionClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Reduction >>> OMP_Reduction('+', 'x', 'y') reduction('+': (x, y))
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
name= 'reduction'¶
-
operation¶
-
variables¶
-
-
class
pyccel.ast.parallel.openmp.OMP_Schedule[source]¶ Bases:
pyccel.ast.parallel.openmp.OMPOMP ScheduleClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Schedule >>> OMP_Schedule('static', 2) schedule(static, 2)
-
chunk_size¶
-
default_assumptions= {'composite': False, 'even': False, 'integer': False, 'odd': False, 'prime': False, 'zero': False}¶
-
is_composite= False¶
-
is_even= False¶
-
is_integer= False¶
-
is_odd= False¶
-
is_prime= False¶
-
is_zero= False¶
-
kind¶
-
name= 'schedule'¶
-
Bases:
pyccel.ast.parallel.openmp.OMPOMP SharedClause statement.
Examples
>>> from pyccel.parallel.openmp import OMP_Shared >>> OMP_Shared('x', 'y') shared(x, y)