Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/UCLA-VAST/AutoSA
/ functions
Functions
546 in github.com/UCLA-VAST/AutoSA
⨍
Functions
546
◇
Types & classes
201
↓ 1 callers
Function
gpu_hybrid_tile
Apply hybrid tiling on "node" and its parent based on the (valid) * bounds on the relative dependence distances "bounds" and * the tile sizes in "ti
gpu_hybrid.c:119
↓ 1 callers
Function
gpu_prog_alloc
gpu.c:5794
↓ 1 callers
Function
gpu_tree_ensure_preceding_sync
Insert an extension on top of "node" that puts a synchronization node * for "kernel" before "node" unless there already is * such a synchronization
gpu_tree.c:531
↓ 1 callers
Function
gpu_tree_ensure_sync_after_core
Insert an extension on top of "node" that puts a synchronization node * for "kernel" after "node" unless there already is such a sync node or * "nod
gpu_tree.c:566
↓ 1 callers
Function
gpu_tree_insert_shared_before_thread
Insert a "shared" mark in front of the "thread" mark * provided the linear branch between "node" and the "thread" mark * does not contain such a "sh
gpu_tree.c:104
↓ 1 callers
Function
gpu_tree_move_right_to_sync
Move right in the sequence on top of "node" to a synchronization node * for "kernel". * If "node" itself contains a synchronization node following
gpu_tree.c:620
↓ 1 callers
Function
gpu_tree_move_up_to_thread
Move up the tree underneath the "thread" mark until * the "thread" mark is reached. */
gpu_tree.c:245
↓ 1 callers
Function
gpu_tree_node_is_kernel
Is "node" a mark node with an identifier called "kernel"? */
gpu_tree.c:62
↓ 1 callers
Function
group_array_references
Group array references that should be considered together when * deciding whether to access them from private, shared or global memory. * Return -1
gpu_group.c:1289
↓ 1 callers
Function
group_common_shared_memory_tile
Given an initial grouping of array references and shared memory tiles * for each group that allows for a shared memory tile, merge two groups * if b
gpu_group.c:1184
↓ 1 callers
Function
group_contraction_from_prefix_and_domain
Construct a contraction from "prefix" and "domain" for a new group * in "grouping". * * The values of the prefix schedule "prefix" are used as inst
grouping.c:431
↓ 1 callers
Function
group_overlapping_writes
If two groups have overlapping access relations (within the innermost * loop) and if one of them involves a write, then merge the two groups * into
gpu_group.c:1100
↓ 1 callers
Function
group_statements
Group the domain elements into a single space, named kernelX, * with X the kernel sequence number "kernel_id". */
gpu.c:3769
↓ 1 callers
Function
group_tagged_access_relation
Return the union of all tagged access relations in the group. */
gpu.c:799
↓ 1 callers
Function
group_tile
Return a map from the first group->shared_tile->depth dimensions * of the computed schedule to the array tile in * global memory that corresponds to
gpu.c:881
↓ 1 callers
Function
has_any_permutable_node
Does "schedule" contain any permutable band with at least one coincident * member? */
gpu.c:2578
↓ 1 callers
Function
has_empty_domain
Have all domain elements been filtered out before reaching * the "node" position in the schedule tree? */
gpu_hybrid.c:27
↓ 1 callers
Function
has_sync_before_core
Does the subtree rooted at "node" (which is a band node) contain * any synchronization statement for "kernel" that precedes * the core computation o
gpu_tree.c:442
↓ 1 callers
Function
hex_lower
Construct the lower constraint of the hexagonal tile, i.e., * * a <= 2h+1 * -a + 2h+1 >= 0 * * This constraint corresponds to (7) in * "Hybrid H
hybrid.c:448
↓ 1 callers
Function
hex_lower_left
Construct the lower left constraint of the hexagonal tile, i.e., * * du a - b <= (2h+1) du - duh * -du a + b + (2h+1) du - duh >= 0 * * where duh
hybrid.c:423
↓ 1 callers
Function
hex_lower_right
Construct the lower right constraint of the hexagonal tile, i.e., * * dl a + b <= (2h+1) dl + duh + (s0-1) * -dl a - b + (2h+1) dl + duh + (s0-1) >
hybrid.c:471
↓ 1 callers
Function
hex_upper
Construct the uppper constraint of the hexagonal tile, i.e., * * a >= 0 * * This constraint corresponds to (13) in * "Hybrid Hexagonal/Classical
hybrid.c:556
↓ 1 callers
Function
hex_upper_left
Construct the upper left constraint of the hexagonal tile, i.e., * * dl a + b >= h dl - (d - 1)/d with d = den(dl) * dl a + b - h dl + (d - 1)/d
hybrid.c:499
↓ 1 callers
Function
hex_upper_right
Construct the upper right constraint of the hexagonal tile, i.e., * * du a - b >= du h - duh - (s0-1) - dlh - (d - 1)/d with d = den(du) * du a - b
hybrid.c:526
↓ 1 callers
Function
hybrid_tile_drop_phase_marks
Given a branch "node" that contains a sequence node with two phases * of hybrid tiling as input, remove the two phase marker nodes. * * That is, th
hybrid.c:2238
↓ 1 callers
Function
init_build_info
Initialize the fields of "build_info". * * Initially, the AST generation is not inside any parallel for loop. * * The contraction of the entire sc
cpu.c:515
↓ 1 callers
Function
init_device
Print code for initializing the device for execution of the transformed * code. This includes declaring locally defined variables as well as * decl
opencl.c:1059
↓ 1 callers
Function
init_device
Print code for initializing the device for execution of the transformed * code. This includes declaring locally defined variables as well as * decl
cuda.c:513
↓ 1 callers
Function
insert_context
Insert a context node at "node" introducing the block and thread * identifiers along with their bounds, which are stored in kernel->grid_size * and
gpu.c:3064
↓ 1 callers
Function
insert_empty_permutable_band
Insert a zero-dimensional permutable band at "node". */
gpu.c:4001
↓ 1 callers
Function
insert_guard
Insert a guard that eliminates kernel launches where the kernel * obviously does not have any work to do. * * In particular, eliminate kernel launc
gpu.c:3094
↓ 1 callers
Function
insert_positive_size_guards
Make sure that code for the statements in "filters" that * copy arrays to or from the device is only generated when * the size of the corresponding
gpu.c:4697
↓ 1 callers
Function
insert_shared
Insert a mark node with identifier "shared" in front of "node". */
gpu_tree.c:83
↓ 1 callers
Function
insert_sync_before
Insert (or extend) an extension on top of "node" that puts * a synchronization node for "kernel" before "node". * Return a pointer to the original n
gpu_tree.c:491
↓ 1 callers
Function
is_array_positive_size_guard_trivial
Given an array, check whether its positive size guard expression is * trivial. */
opencl.c:244
↓ 1 callers
Function
is_outer_tilable
Is "node" the outermost node in its branch that can be tiled * and then mapped to block and thread identifiers? * If there are no such nodes in the
gpu.c:2620
↓ 1 callers
Function
is_read_only_scalar
Is the array "array" being extracted a read-only scalar? * * That is, is "array" a scalar that is never possibly written to. * An array containing
gpu.c:142
↓ 1 callers
Function
is_stmt_killed
Has statement "stmt" been killed from "scop"? * That is, is the instance set of "scop" free from any * instances of "stmt"? */
gpu.c:5559
↓ 1 callers
Function
isolate_permutable_subtrees
If "node" points to a set node, then separate its children * into subtrees that have suitably permutable bands and * those that do not. * Adjust th
gpu.c:4283
↓ 1 callers
Function
join_all_groups
Combine all groups in "groups" into a single group and return * the new number of groups (1 or 0 if there were no groups to start with). */
gpu_group.c:1255
↓ 1 callers
Function
kernel_requires_unroll
Does any array reference group mapping require the band that is mapped * to threads to be unrolled? */
gpu.c:3121
↓ 1 callers
Function
lift_phase
Take a "phase" defined over the ts-space and plug in the projection * from the input schedule space to the ts-space. * The result is then defined ov
hybrid.c:1469
↓ 1 callers
Function
list_set_min_max
Given a constraint of the form * * a i_0 + b i_1 >= 0 * or * a i_0 + b i_1 = 0 * * use it to update one or both of the non-negative bounds * in
hybrid.c:1174
↓ 1 callers
Function
load_schedule
Load and return a schedule from a file called "filename". */
schedule.c:85
↓ 1 callers
Function
localize_access
Replace the host schedule dimensions in the access relation "access" * by parameters, so that they are treated as fixed when checking for reuse * (w
gpu_group.c:400
↓ 1 callers
Function
localize_bounds
The sizes of the arrays on the host that have been computed by * extract_array_info may depend on the parameters. Use the extra * constraints on th
gpu.c:1324
↓ 1 callers
Function
map_to_device
Update "schedule" for mapping to a GPU device. * * In particular, insert a context node, create kernels for * each outermost tilable band and intro
gpu.c:5293
↓ 1 callers
Function
mark_global_arrays
Mark all arrays of "kernel" that have an array reference group * that is not mapped to private or shared memory as * accessing the corresponding glo
gpu.c:996
↓ 1 callers
Function
mark_kernels
Insert "kernel" marks that point to a ppcg_kernel structure * in front of all outermost tilable band that (by construction) * have at least one para
gpu.c:4342
↓ 1 callers
Function
mark_openmp_parallel
Mark a for node openmp parallel, if it is the outermost parallel for node. */
cpu.c:193
↓ 1 callers
Function
mark_printed
Keep track of the fact that the macro definition corresponding * to "note_name" has been printed to "p" by attaching a note with * that name. The v
print.c:71
↓ 1 callers
Function
matches_prefix
Given a relation "map" between instances of two statements A and B, * are pairs of related instances executed together in the input schedule? * That
grouping.c:210
↓ 1 callers
Function
merge_leaves
Merge pairs of consecutive leaves in "leaves" taking into account * the intersection of validity and proximity schedule constraints "dep". * * If a
grouping.c:315
↓ 1 callers
Function
merge_pair
Merge the leaves at position "pos" and "pos + 1" in "leaves". */
grouping.c:277
↓ 1 callers
Function
node_is_core
Assuming "node" is a filter node, does it correspond to the branch * that contains the "thread" mark, i.e., does it contain any elements * in "core"
gpu_tree.c:156
↓ 1 callers
Function
node_may_persist
Determine the set of array elements that may need to be perserved * by a kernel constructed from the subtree at "node". * This includes the set of a
gpu.c:5099
↓ 1 callers
Function
only_fixed_element_accessed
Is "array" only accessed as individual, fixed elements? * That is, does each access to "array" access a single, fixed element? */
gpu.c:167
↓ 1 callers
Function
opencl_allocate_device_arrays
Allocate accessed device arrays. */
opencl.c:301
↓ 1 callers
Function
opencl_build_program_from_string
Create an OpenCL program from a string and compile it. */
ocl_utilities.c:111
↓ 1 callers
Function
opencl_close_files
Close all output files. Write the kernel contents to the kernel file before * closing it. * * Return 0 on success and -1 on failure. */
opencl.c:190
↓ 1 callers
Function
opencl_declare_device_arrays
opencl.c:222
↓ 1 callers
Function
opencl_enable_double_support
Prints a #pragma to enable support for double floating-point * precision. OpenCL 1.0 adds support for double precision floating-point as * an optio
opencl.c:872
↓ 1 callers
Function
opencl_open_files
Open the host .c file and the kernel .h and .cl files for writing. * Their names are derived from info->output (or info->input if * the user did not
opencl.c:69
↓ 1 callers
Function
opencl_print_as_c_string
Write text to a file as a C string literal. * * This function also prints any characters after the last newline, although * normally the input stri
opencl.c:138
↓ 1 callers
Function
opencl_print_block_sizes
Print the block sizes as a list of the sizes in each * dimension. */
opencl.c:473
↓ 1 callers
Function
opencl_print_host_code
opencl.c:1267
↓ 1 callers
Function
opencl_print_host_macros
opencl.c:204
↓ 1 callers
Function
opencl_print_kernel
opencl.c:905
↓ 1 callers
Function
opencl_print_kernel_arguments
Print the arguments to a kernel declaration or call. If "types" is set, * then print a declaration (including the types of the arguments). * * The
opencl.c:547
↓ 1 callers
Function
opencl_print_kernel_header
Print the header of the given kernel. */
opencl.c:618
↓ 1 callers
Function
opencl_print_kernel_iterators
opencl.c:672
↓ 1 callers
Function
opencl_print_kernel_var
opencl.c:686
↓ 1 callers
Function
opencl_print_kernel_vars
opencl.c:711
↓ 1 callers
Function
opencl_print_sync
Print a call to barrier() which is a sync statement. * All work-items in a work-group executing the kernel on a processor must * execute the barrier
opencl.c:732
↓ 1 callers
Function
opencl_print_total_number_of_work_items_as_list
Print a list that represents the total number of work items. The list is * constructed by performing an element-wise multiplication of the block siz
opencl.c:1002
↓ 1 callers
Function
opencl_print_total_number_of_work_items_for_dim
This function prints the i'th block size multiplied by the i'th grid size, * where i (a parameter to this function) is one of the possible dimensions
opencl.c:954
↓ 1 callers
Function
opencl_release_cl_objects
opencl.c:418
↓ 1 callers
Function
opencl_release_device_arrays
Free the accessed device arrays. */
opencl.c:336
↓ 1 callers
Function
opencl_set_kernel_arguments
Set the arguments of the OpenCL kernel by printing a call to the OpenCL * clSetKernelArg() function for each kernel argument. */
opencl.c:493
↓ 1 callers
Function
opencl_setup
Create an OpenCL device, context, command queue and build the kernel. * input is the name of the input file provided to ppcg. */
opencl.c:354
↓ 1 callers
Function
opencl_write_kernel_file
Write the code that we have accumulated in the kernel isl_printer to the * kernel.cl file. If the opencl_embed_kernel_code option has been set, prin
opencl.c:165
↓ 1 callers
Function
parameter_vector
Return an isl_multi_aff, with as elements the parameters in "space" * that have the names specified by the elements in "names". * If (some of) these
gpu.c:2961
↓ 1 callers
Function
parametrize
Equate the dimensions of "set" starting at "first" to * freshly created parameters with identifiers "ids". * The number of equated dimensions is equ
schedule.c:49
↓ 1 callers
Function
pet_stmt_extract_accesses
Construct a linked list of gpu_stmt_access objects, * one for each access expression in the statement body. * "any_to_outer" maps all intermediate a
gpu.c:5541
↓ 1 callers
Function
phase_align_params
Align the parameters of the elements of "phase" to those of "space". */
hybrid.c:1405
↓ 1 callers
Function
populate_array_references
Fill up the groups array with singleton groups, i.e., one group * per reference, initializing the array, access, write, n_ref and refs fields. * In
gpu_group.c:647
↓ 1 callers
Function
ppcg_attach_multi_pw_aff
Given a multi affine expression "mpa" without domain, modify it to have * the schedule space of "build" as domain. * * If the schedule space of "bu
print.c:342
↓ 1 callers
Function
ppcg_compute_grouping_schedule
Compute a schedule on the domain of "sc" that respects the schedule * constraints in "sc", after trying to combine groups of statements. * * "sched
grouping.c:709
↓ 1 callers
Function
ppcg_grouping_compute_dep
Compute the intersection of the proximity and validity dependences * in grouping->sc and store the result in grouping->dep, unless * this intersecti
grouping.c:65
↓ 1 callers
Function
ppcg_grouping_leaf_free
Free all memory allocated for "leaves". */
grouping.c:98
↓ 1 callers
Function
ppcg_ht_bounds_alloc
Create a ppcg_ht_bounds object for a band living in "space". * The bounds are initialized to NaN. */
hybrid.c:69
↓ 1 callers
Function
ppcg_ht_bounds_construct_tiling
Construct a hybrid tiling description from bounds on the dependence * distances "bounds". * "input_node" points to the original parent node. * "inp
hybrid.c:876
↓ 1 callers
Function
ppcg_ht_bounds_insert_tiling
Given valid bounds on the relative dependence distances for * the pair of nested nodes that "node" point to, as well as sufficiently * wide tile siz
hybrid.c:2082
↓ 1 callers
Function
ppcg_ht_bounds_set_upper
Replace the upper bound on the relative dependence distances * in the first space dimension by "upper". */
hybrid.c:123
↓ 1 callers
Function
ppcg_ht_bounds_supports_sizes
Is the tile size specified by "sizes" wide enough in the first space * dimension, i.e., the base of the hexagon? This ensures that, * after hybrid
hybrid.c:1991
↓ 1 callers
Function
ppcg_ht_compute_bounds
Given a schedule node "node" that, together with its child, * satisfies the input pattern for hybrid tiling, compute bounds * on the relative depend
hybrid.c:1315
↓ 1 callers
Function
ppcg_ht_has_input_pattern
Does "node" satisfy the input patttern for hybrid tiling? * That is, does "node" satisfy the properties of the outer node and * does the child of "n
hybrid.c:1024
↓ 1 callers
Function
ppcg_ht_parent_has_input_pattern
Does the parent of "node" satisfy the input patttern for hybrid tiling? * That is, does "node" satisfy the properties of the inner node and * does t
hybrid.c:1004
↓ 1 callers
Function
ppcg_ht_phase_extract_from_mark
Given a mark node with an identifier that points to a ppcg_ht_phase, * extract this ppcg_ht_phase pointer. */
hybrid.c:1645
↓ 1 callers
Function
ppcg_ht_phase_isolate_full_tile_node
If options->isolate_full_tiles is set, then mark the full tiles * in "node" for isolation. The full tiles are derived from "phase". * "node" may po
hybrid.c:1836
← previous
next →
301–400 of 546, ranked by callers