123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #ifndef PPCG_OPTIONS_H
- #define PPCG_OPTIONS_H
- #include <isl/arg.h>
- #include <isl/options.h>
- struct ppcg_debug_options {
- int dump_schedule_constraints;
- int dump_schedule;
- int dump_final_schedule;
- int dump_sizes;
- int verbose;
- };
- struct ppcg_options {
- struct isl_options *isl;
- struct ppcg_debug_options *debug;
- /* Group chains of consecutive statements before scheduling. */
- int group_chains;
- /* Use isl to compute a schedule replacing the original schedule. */
- int reschedule;
- int scale_tile_loops;
- int wrap;
- /* Assume all parameters are non-negative. */
- int non_negative_parameters;
- char *ctx;
- char *sizes;
- /* Perform tiling (C target). */
- int tile;
- int tile_size;
- /* Isolate full tiles from partial tiles. */
- int isolate_full_tiles;
- /* Take advantage of private memory. */
- int use_private_memory;
- /* Take advantage of shared memory. */
- int use_shared_memory;
- /* Maximal amount of shared memory. */
- int max_shared_memory;
- /* The target we generate code for. */
- int target;
- /* Generate OpenMP macros (C target only). */
- int openmp;
- /* Linearize all device arrays. */
- int linearize_device_arrays;
- /* Allow the use of GNU extensions in generated code. */
- int allow_gnu_extensions;
- /* Allow live range to be reordered. */
- int live_range_reordering;
- /* Allow hybrid tiling whenever a suitable input pattern is found. */
- int hybrid;
- /* Unroll the code for copying to/from shared memory. */
- int unroll_copy_shared;
- /* Unroll code inside tile on GPU targets. */
- int unroll_gpu_tile;
- /* Options to pass to the OpenCL compiler. */
- char *opencl_compiler_options;
- /* Prefer GPU device over CPU. */
- int opencl_use_gpu;
- /* Number of files to include. */
- int opencl_n_include_file;
- /* Files to include. */
- const char **opencl_include_files;
- /* Print definitions of types in kernels. */
- int opencl_print_kernel_types;
- /* Embed OpenCL kernel code in host code. */
- int opencl_embed_kernel_code;
- /* Name of file for saving isl computed schedule or NULL. */
- char *save_schedule_file;
- /* Name of file for loading schedule or NULL. */
- char *load_schedule_file;
- };
- ISL_ARG_DECL(ppcg_debug_options, struct ppcg_debug_options,
- ppcg_debug_options_args)
- ISL_ARG_DECL(ppcg_options, struct ppcg_options, ppcg_options_args)
- #define PPCG_TARGET_C 0
- #define PPCG_TARGET_CUDA 1
- #define PPCG_TARGET_OPENCL 2
- void ppcg_options_set_target_defaults(struct ppcg_options *options);
- #endif
|