Skip to content
Snippets Groups Projects
Commit 8dc0ea33 authored by Andreas Klöckner's avatar Andreas Klöckner
Browse files

Support choosing target from the command line

parent c4c1b6d3
No related branches found
No related tags found
No related merge requests found
......@@ -63,7 +63,8 @@ def main():
parser.add_argument("outfile", default="-", metavar="OUTPUT_FILE",
help="Defaults to stdout ('-').", nargs='?')
parser.add_argument("--lang", metavar="LANGUAGE", help="loopy|fortran")
parser.add_argument("--target")
parser.add_argument("--target", choices=("opencl", "ispc", "c", "cuda"),
default="opencl")
parser.add_argument("--name")
parser.add_argument("--transform")
parser.add_argument("--edit-code", action="store_true")
......@@ -72,9 +73,22 @@ def main():
parser.add_argument("--print-ir", action="store_true")
args = parser.parse_args()
if args.target is not None:
from warnings import warn
warn("--target option is deprecated and ignored")
if args.target == "opencl":
from loopy.target.opencl import OpenCLTarget
target = OpenCLTarget()
elif args.target == "ispc":
from loopy.target.ispc import ISPCTarget
target = ISPCTarget()
elif args.target == "c":
from loopy.target.c import CTarget
target = CTarget()
elif args.target == "cuda":
from loopy.target.cuda import CudaTarget
target = CudaTarget()
else:
raise ValueError("unknown target: %s" % target)
lp.set_default_target(target)
lang = None
if args.infile == "-":
......
......@@ -354,4 +354,31 @@ def make_copy_kernel(new_dim_tags, old_dim_tags=None):
# }}}
# {{{ default target
_DEFAULT_TARGET = None
def _set_up_default_target():
try:
import pyopencl # noqa
except ImportError:
from loopy.target.opencl import OpenCLTarget
target = OpenCLTarget()
else:
from loopy.target.pyopencl import PyOpenCLTarget
target = PyOpenCLTarget()
set_default_target(target)
def set_default_target(target):
# deliberately undocumented for now
global _DEFAULT_TARGET
_DEFAULT_TARGET = target
# }}}
# vim: foldmethod=marker
......@@ -1071,7 +1071,7 @@ def make_kernel(domains, instructions, kernel_data=["..."], **kwargs):
:arg options: an instance of :class:`loopy.Options` or an equivalent
string representation
:arg target: an instance of :class:`loopy.target.TargetBase`, or *None*,
to use an OpenCL target.
to use the default target. (see :func:`loopy.set_default_target`)
"""
defines = kwargs.pop("defines", {})
......@@ -1083,14 +1083,8 @@ def make_kernel(domains, instructions, kernel_data=["..."], **kwargs):
target = kwargs.pop("target", None)
if target is None:
try:
import pyopencl # noqa
except ImportError:
from loopy.target.opencl import OpenCLTarget
target = OpenCLTarget()
else:
from loopy.target.pyopencl import PyOpenCLTarget
target = PyOpenCLTarget()
from loopy import _DEFAULT_TARGET
target = _DEFAULT_TARGET
if flags is not None:
if options is not None:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment