2 * Copyright 2010-2011 INRIA Saclay
4 * Use of this software is governed by the MIT license
6 * Written by Sven Verdoolaege, INRIA Saclay - Ile-de-France,
7 * Parc Club Orsay Universite, ZAC des vignes, 4 rue Jacques Monod,
11 #include "ppcg_options.h"
13 static struct isl_arg_choice target
[] = {
15 {"cuda", PPCG_TARGET_CUDA
},
16 {"opencl", PPCG_TARGET_OPENCL
},
20 ISL_ARGS_START(struct ppcg_debug_options
, ppcg_debug_options_args
)
21 ISL_ARG_BOOL(struct ppcg_debug_options
, dump_schedule_constraints
, 0,
22 "dump-schedule-constraints", 0, "dump schedule constraints")
23 ISL_ARG_BOOL(struct ppcg_debug_options
, dump_schedule
, 0,
24 "dump-schedule", 0, "dump isl computed schedule")
25 ISL_ARG_BOOL(struct ppcg_debug_options
, dump_sizes
, 0,
27 "dump effectively used per kernel tile, grid and block sizes")
28 ISL_ARG_BOOL(struct ppcg_debug_options
, verbose
, 'v', "verbose", 0, NULL
)
31 ISL_ARGS_START(struct ppcg_options
, ppcg_opencl_options_args
)
32 ISL_ARG_STR(struct ppcg_options
, opencl_compiler_options
, 0, "compiler-options",
33 "options", NULL
, "options to pass to the OpenCL compiler")
34 ISL_ARG_BOOL(struct ppcg_options
, opencl_use_gpu
, 0, "use-gpu", 1,
35 "use GPU device (if available)")
36 ISL_ARG_STR_LIST(struct ppcg_options
, opencl_n_include_file
,
37 opencl_include_files
, 0, "include-file", "filename",
38 "file to #include in generated OpenCL code")
39 ISL_ARG_BOOL(struct ppcg_options
, opencl_embed_kernel_code
, 0,
40 "embed-kernel-code", 0, "embed kernel code into host code")
43 ISL_ARGS_START(struct ppcg_options
, ppcg_options_args
)
44 ISL_ARG_CHILD(struct ppcg_options
, debug
, NULL
, &ppcg_debug_options_args
,
46 ISL_ARG_BOOL(struct ppcg_options
, scale_tile_loops
, 0,
47 "scale-tile-loops", 1, NULL
)
48 ISL_ARG_BOOL(struct ppcg_options
, wrap
, 0, "wrap", 1, NULL
)
49 ISL_ARG_BOOL(struct ppcg_options
, use_shared_memory
, 0, "shared-memory", 1,
50 "use shared memory in kernel code")
51 ISL_ARG_BOOL(struct ppcg_options
, use_private_memory
, 0, "private-memory", 1,
52 "use private memory in kernel code")
53 ISL_ARG_STR(struct ppcg_options
, ctx
, 0, "ctx", "context", NULL
,
54 "Constraints on parameters")
55 ISL_ARG_INT(struct ppcg_options
, tile_size
, 'S', "tile-size", "size", 32, NULL
)
56 ISL_ARG_STR(struct ppcg_options
, sizes
, 0, "sizes", "sizes", NULL
,
57 "Per kernel tile, grid and block sizes")
58 ISL_ARG_INT(struct ppcg_options
, max_shared_memory
, 0,
59 "max-shared-memory", "size", 8192, "maximal amount of shared memory")
60 ISL_ARG_BOOL(struct ppcg_options
, openmp
, 0, "openmp", 0,
61 "Generate OpenMP macros (only for C target)")
62 ISL_ARG_CHOICE(struct ppcg_options
, target
, 0, "target", target
,
63 PPCG_TARGET_CUDA
, "the target to generate code for")
64 ISL_ARG_BOOL(struct ppcg_options
, linearize_device_arrays
, 0,
65 "linearize-device-arrays", 1,
66 "linearize all device arrays, even those of fixed size")
67 ISL_ARG_BOOL(struct ppcg_options
, live_range_reordering
, 0,
68 "live-range-reordering", 1,
69 "allow successive live ranges on the same memory element "
71 ISL_ARG_GROUP("opencl", &ppcg_opencl_options_args
, "OpenCL options")