Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Tom Harke
pystencils
Commits
05aa005a
Commit
05aa005a
authored
Nov 28, 2019
by
Stephan Seitz
Browse files
Add `use_auto_for_assignments` as a kernel parameter
parent
69c29833
Changes
2
Hide whitespace changes
Inline
Side-by-side
pystencils/astnodes.py
View file @
05aa005a
...
...
@@ -518,7 +518,7 @@ class LoopOverCoordinate(Node):
class
SympyAssignment
(
Node
):
def
__init__
(
self
,
lhs_symbol
,
rhs_expr
,
is_const
=
True
,
use_auto
=
Tru
e
):
def
__init__
(
self
,
lhs_symbol
,
rhs_expr
,
is_const
=
True
,
use_auto
=
Fals
e
):
super
(
SympyAssignment
,
self
).
__init__
(
parent
=
None
)
self
.
_lhs_symbol
=
lhs_symbol
self
.
rhs
=
sp
.
sympify
(
rhs_expr
)
...
...
pystencils/kernelcreation.py
View file @
05aa005a
...
...
@@ -26,7 +26,8 @@ def create_kernel(assignments,
gpu_indexing
=
'block'
,
gpu_indexing_params
=
MappingProxyType
({}),
use_textures_for_interpolation
=
True
,
cpu_prepend_optimizations
=
[]):
cpu_prepend_optimizations
=
[],
use_auto_for_assignments
=
False
):
"""
Creates abstract syntax tree (AST) of kernel, using a list of update equations.
...
...
@@ -102,12 +103,10 @@ def create_kernel(assignments,
vectorize
(
ast
,
**
cpu_vectorize_info
)
else
:
raise
ValueError
(
"Invalid value for cpu_vectorize_info"
)
return
ast
elif
target
==
'llvm'
:
from
pystencils.llvm
import
create_kernel
ast
=
create_kernel
(
assignments
,
type_info
=
data_type
,
split_groups
=
split_groups
,
iteration_slice
=
iteration_slice
,
ghost_layers
=
ghost_layers
)
return
ast
elif
target
==
'gpu'
:
from
pystencils.gpucuda
import
create_cuda_kernel
ast
=
create_cuda_kernel
(
assignments
,
type_info
=
data_type
,
...
...
@@ -115,10 +114,15 @@ def create_kernel(assignments,
iteration_slice
=
iteration_slice
,
ghost_layers
=
ghost_layers
,
skip_independence_check
=
skip_independence_check
,
use_textures_for_interpolation
=
use_textures_for_interpolation
)
return
ast
else
:
raise
ValueError
(
"Unknown target %s. Has to be one of 'cpu', 'gpu' or 'llvm' "
%
(
target
,))
if
use_auto_for_assignments
:
for
a
in
ast
.
atoms
(
SympyAssignment
):
a
.
use_auto
=
True
return
ast
def
create_indexed_kernel
(
assignments
,
index_fields
,
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment