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
↓ 10 callers
Function
gpu_array_ref_group_tile
Return the effective gpu_array_tile associated to "group" or * NULL if there is no such gpu_array_tile. */
gpu_group.c:94
↓ 10 callers
Function
gpu_tree_move_up_to_kernel
Move up the tree underneath the "kernel" mark until * the "kernel" mark is reached. */
gpu_tree.c:261
↓ 9 callers
Function
gpu_array_ref_group_free
If group->n_ref == 1, then group->refs was set by * populate_array_references to point directly into * group->array->refs and should not be freed.
gpu_group.c:700
↓ 9 callers
Function
ppcg_ht_bounds_free
Free "bounds" along with all its fields. */
hybrid.c:54
↓ 8 callers
Function
gpu_array_is_read_only_scalar
Is "array" a read-only scalar? */
gpu.c:422
↓ 8 callers
Function
gpu_array_ref_group_type
Should this array reference group be mapped to private, shared or global * memory? * If we have computed both a private and a shared tile, then * t
gpu_group.c:77
↓ 8 callers
Function
ppcg_set_schedule_node_type
Mark all dimensions in the band node "node" to be of "type". */
schedule.c:180
↓ 7 callers
Function
gpu_array_requires_device_allocation
Does "array" need to be allocated on the device? * If it is a read-only scalar, then it will be passed as an argument * to the kernel and therefore
gpu.c:433
↓ 7 callers
Function
gpu_tree_move_down_to_thread
Move down the branch between "kernel" and "thread" until * the "thread" mark is reached, where the branch containing the "thread" * mark is identifi
gpu_tree.c:229
↓ 7 callers
Function
ppcg_ast_expr_print_macros
Print the required macros for "expr". */
print.c:270
↓ 7 callers
Function
ppcg_scop_generate_names
Return a list of "n" isl_ids of the form "prefix%d". * If an isl_id with such a name already appears among the variable names * of "scop", then adju
ppcg.c:189
↓ 6 callers
Function
core_child
Move to the only child of "node" that has the "thread" mark as descendant, * where the branch containing this mark is identified by the domain elemen
gpu_tree.c:181
↓ 6 callers
Function
gpu_array_tile_free
gpu_array_tile.c:6
↓ 6 callers
Function
node_is_thread
Is "node" a mark node with an identifier called "thread"? */
gpu_tree.c:76
↓ 5 callers
Function
gpu_array_info_print_size
Print an expression for the size of "array" in bytes. */
gpu_print.c:44
↓ 5 callers
Function
gpu_array_is_scalar
Check if a gpu array is a scalar. A scalar is a value that is not stored * as an array or through a pointer reference, but as a single data element.
gpu.c:404
↓ 5 callers
Function
ppcg_ht_phase_free
Free "phase" along with all its fields. */
hybrid.c:361
↓ 4 callers
Function
expand
Expand the domain of the schedule "s" by plugging in * the contraction "contraction" and return the result. */
gpu_group.c:1390
↓ 4 callers
Function
gpu_array_tile_size
Compute the size of the tile specified by "tile" * in number of elements and return the result. */
gpu_array_tile.c:57
↓ 4 callers
Function
gpu_print_macros
Print the required macros for the GPU AST "node" to "p", * including those needed for the user statements inside the AST. */
gpu_print.c:249
↓ 4 callers
Function
gpu_tree_move_down_to_depth
Move down from the "kernel" mark (or at least a node with schedule * depth smaller than or equal to "depth") to a band node at schedule * depth "dep
gpu_tree.c:284
↓ 4 callers
Function
node_is_sync_filter
Does "node" point to a filter selecting a synchronization statement * for "kernel"? */
gpu_tree.c:368
↓ 4 callers
Function
ppcg_build_size_expr
Build an access AST expression from "size" using "build". * "size" does not have a domain, but "build" may have a proper schedule space. * First mod
print.c:369
↓ 4 callers
Function
ppcg_ht_phase_get_domain
Return the domain of hybrid tiling phase "phase". */
hybrid.c:391
↓ 4 callers
Function
ppcg_ht_tiling_free
Remove a reference to "tile" and free "tile" along with all its fields * as soon as the reference count drops to zero. */
hybrid.c:275
↓ 4 callers
Function
ppcg_kernel_print_domain
gpu_print.c:186
↓ 4 callers
Function
ppcg_set_macro_names
Set the names of the macros that may appear in a printed isl AST. */
print.c:325
↓ 4 callers
Function
ppcg_size_from_extent
Compute the size of a bounding box around the origin and "set", * where "set" is assumed to contain only non-negative elements. * In particular, com
util.c:73
↓ 4 callers
Function
prefixcmp
Compare the prefix of "s" to "prefix" up to the length of "prefix". */
util.h:11
↓ 3 callers
Function
check_phase
Check if all the fields of "phase" are valid, freeing "phase" * if they are not. */
hybrid.c:1364
↓ 3 callers
Function
compute_group_bounds
Compute the private and/or shared memory tiles for the array * reference group "group" of array "array" and set the tile depth. * Return 0 on succes
gpu_group.c:1031
↓ 3 callers
Function
construct_band_tiles_sizes
Construct an isl_multi_val for use as tile sizes for tiling "node" * from the elements in "tile_size". */
gpu.c:2764
↓ 3 callers
Function
extract_sizes
Given a union map { kernel[i] -> *[...] }, * return the range in the space called "type" for the kernel with * sequence number "id". */
gpu.c:505
↓ 3 callers
Function
free_stmts
gpu.c:696
↓ 3 callers
Function
get_outer_array_name
Return the name of the outer array (of structs) accessed by "access". */
gpu.c:43
↓ 3 callers
Function
gpu_prog_free
gpu.c:5838
↓ 3 callers
Function
gpu_tree_ensure_following_sync
Insert an extension on top of "node" that puts a synchronization node * for "kernel" after "node" unless there already is * such a synchronization n
gpu_tree.c:548
↓ 3 callers
Function
has_following_sync
Is "node" part of a sequence with a subsequent synchronization statement * for "kernel"? * That is, is the parent of "node" a filter such that there
gpu_tree.c:417
↓ 3 callers
Function
is_marked
Is "node" a mark node with an identifier called "name"? */
gpu_tree.c:39
↓ 3 callers
Function
node_is_shared
Is "node" a mark node with an identifier called "shared"? */
gpu_tree.c:69
↓ 3 callers
Function
open_or_croak
Open the file called "name" for writing or print an error message. */
opencl.c:51
↓ 3 callers
Function
opencl_set_kernel_argument
Print a call to the OpenCL clSetKernelArg() function which sets * the arguments of the kernel. arg_name and arg_index are the name and the * index
opencl.c:445
↓ 3 callers
Function
ppcg_compute_non_grouping_schedule
Compute a schedule on the domain of "sc" that respects the schedule * constraints in "sc", without trying to combine groups of statements. */
schedule.c:131
↓ 3 callers
Function
ppcg_end_block
print.c:29
↓ 3 callers
Function
ppcg_extract_base_name
Copy the base name of "input" to "name" and return its length. * "name" is not NULL terminated. * * In particular, remove all leading directory com
ppcg.c:83
↓ 3 callers
Function
ppcg_grouping_clear
Clear all memory allocated by "grouping". */
grouping.c:53
↓ 3 callers
Function
ppcg_ht_bounds_get_lower
Return the lower bound on the relative dependence distances * in space dimension "pos". */
hybrid.c:140
↓ 3 callers
Function
ppcg_kernel_free
gpu.c:1173
↓ 3 callers
Function
ppcg_kernel_requires_array_argument
Does "kernel" need to be passed an argument corresponding to array "i"? * * The argument is only needed if the kernel accesses this device memory.
gpu.c:1396
↓ 3 callers
Function
ppcg_kernel_stmt_free
gpu.c:1416
↓ 3 callers
Function
ppcg_start_block
print.c:20
↓ 3 callers
Function
read_sizes_from_set
Given a singleton set, extract the first (at most *len) elements * of the single integer tuple into *sizes and update *len if needed. * * If "set"
gpu.c:535
↓ 3 callers
Function
remove_local_accesses
Given an access relation "access" from one or more array reference groups, * remove those reads if ("read" is 1) or writes (if "read" is 0) * that a
gpu.c:2261
↓ 3 callers
Function
set_schedule_modulo
Return constraints on the domain elements that equate a sequence of * parameters called "names", to the partial schedule * of "node" modulo the inte
gpu.c:3014
↓ 3 callers
Function
set_used_sizes
Add the map { kernel[id] -> type[sizes] } to gen->used_sizes, * if the option debug->dump_sizes is set. */
gpu.c:568
↓ 3 callers
Function
snap_band_to_sizes
Replace the partial schedule S of the band node "node" by * * floor(S/f) * * or * * f * floor(S/f) * * if scale_tile_loops is set, with f the
gpu.c:2788
↓ 3 callers
Function
split_band
If the band node "node" has more than "n" members, then split off * the first "n" of them. */
gpu.c:2913
↓ 3 callers
Function
subtree_has_permutable_bands
Does the subtree rooted at "node" have any suitably permutable band nodes? * That is, does it have any nodes that are permutable and that * have a l
gpu.c:2566
↓ 2 callers
Function
access_is_bijective
Given an access relation in terms of at least data->thread_depth initial * dimensions of the computed schedule, check if it is bijective for * fixed
gpu_group.c:428
↓ 2 callers
Function
accessed_by_domain
Return the set of outer array elements accessed by * by the statement instances in "domain" in "prog". * The instances in "domain" are those that ap
gpu.c:2878
↓ 2 callers
Function
add_bounded_parameters_dynamic
Add "len" parameters p[i] with identifiers "ids" and intersect "set" * with * * { : 0 <= p[i] < size[i] } * * or an overapproximation. */
gpu.c:754
↓ 2 callers
Function
add_copies_group
Check whether the array reference group "group" is mapped to * private or shared memory and, if so, * add copy statements to the schedule tree of "n
gpu.c:3604
↓ 2 callers
Function
add_group_write_sync
If any writes in "group" require synchronization, then make sure * that there is a synchronization node for "kernel" after the node * following "nod
gpu.c:3268
↓ 2 callers
Function
add_one
tests/call5.c:3
↓ 2 callers
Function
anchored_non_local_accesses
Return a read ("read" is 1) or write access relation for "group" * with those accesses removed that are only needed to communicate data * within the
gpu.c:3206
↓ 2 callers
Function
can_tile
Check if we can find a memory tile for the given array * based on the given accesses, and if so, put the results in "tile". * * We project the acce
gpu_group.c:219
↓ 2 callers
Function
check_input_pattern
Check that "node" satisfies the input pattern for hybrid tiling. * Error out if it does not. */
hybrid.c:1042
↓ 2 callers
Function
collect_domains
Collect the iteration domains of the statements in "scop" that * satisfy "pred". */
ppcg.c:218
↓ 2 callers
Function
compute_tagged_flow_dep_only
Compute the tagged flow dependences and the live_in accesses and store * the results in ps->tagged_dep_flow and ps->live_in. * * Both must-writes a
ppcg.c:425
↓ 2 callers
Function
compute_tile_depth
Compute the number of outer schedule tile dimensions that affect * the offset of "tile". * If there is no such dimension, then return the index * o
gpu_group.c:455
↓ 2 callers
Function
construct_schedule_constraints
Construct schedule constraints from the dependences in prog->scop and * the array order dependences in prog->array_order. * * If live range reorder
gpu.c:4378
↓ 2 callers
Function
copy_array
Copy "array" from the host to the device (to_host = 0) or * back from the device to the host (to_host = 1). */
opencl.c:1030
↓ 2 callers
Function
create_copy_device
Create a graft for copying arrays to or from the device, * whenever the size of the array is strictly positive. * Each statement is called "<prefix>
gpu.c:4742
↓ 2 callers
Function
create_from_access
Given an array reference group "group", create a mapping * * read[D -> A] -> [D -> A] * * if "read" is set or * * write[D -> A] -> [D -> A] *
gpu.c:3236
↓ 2 callers
Function
create_sync_domain
Create a union set containing a single set with a tuple identifier * called "syncX" and user pointer equal to "kernel". */
gpu_tree.c:316
↓ 2 callers
Function
declare_accessed_local_variables
Mark all variables that are accessed by the statement instances in "domain" * and that are local to "prog" as requiring a declaration in the host cod
gpu.c:4230
↓ 2 callers
Function
derive_flow_dep_from_tagged_flow_dep
Compute ps->dep_flow from ps->tagged_dep_flow * by projecting out the reference tags. */
ppcg.c:459
↓ 2 callers
Function
expand_and_tag
Given a set of local reaching domain elements "domain", * expand them to the corresponding leaf domain elements using "contraction" * and insert the
gpu.c:4883
↓ 2 callers
Function
extract_input_schedule
Extract the input schedule from "node", i.e., the product * of the partial schedules of the parent and child nodes * in the input pattern. */
hybrid.c:1061
↓ 2 callers
Function
filter_flow
Given a filter node that is the child of a set or sequence node, * restrict data->local_flow to refer only to those elements * in the filter of the
gpu.c:4901
↓ 2 callers
Function
generate_gpu
Transform the code in the file called "input" by replacing * all scops by corresponding GPU code and write the results to "out". */
gpu.c:5720
↓ 2 callers
Function
get
tests/call4.c:3
↓ 2 callers
Function
get_macros
Return the ppcg_macros object that holds the currently active * macro definitions in "p". * If "p" has a note with macro definitions, then return th
print.c:180
↓ 2 callers
Function
get_non_parallel_subtree_filters
Given a set or sequence node, return the union the filters of either all * (if "only_initial" is not set) or the initial (if "only_initial" is set)
gpu.c:4163
↓ 2 callers
Function
gpu_array_can_be_private
Can "array" be mapped to private memory? * That is, is it only accessed as individual elements with * constant index expressions? */
gpu.c:413
↓ 2 callers
Function
gpu_array_info_print_call_argument
Print the call of an array argument. */
gpu_print.c:110
↓ 2 callers
Function
gpu_array_info_print_declaration_argument
Print the declaration of an array argument. * "memory_space" allows to specify a memory space prefix. */
gpu_print.c:81
↓ 2 callers
Function
gpu_array_positive_size_guard
Return the set of parameter values for which the array has a positive * size in all dimensions. * If the sizes are only valid for some parameter val
gpu.c:447
↓ 2 callers
Function
gpu_array_ref_group_access_relation
Return the union of all read (read = 1) and/or write (write = 1) * access relations in the group. */
gpu_group.c:50
↓ 2 callers
Function
gpu_array_ref_group_print_name
Print the name of the local copy of a given group of array references. */
gpu_group.c:25
↓ 2 callers
Function
gpu_array_tile_create
Create a gpu_array_tile for an array of dimension "n_index". */
gpu_array_tile.c:28
↓ 2 callers
Function
gpu_create_kernel
Create a ppcg_kernel representing the domain instances that reach "node" * and insert a mark node pointing to the ppcg_kernel before "node". * The b
gpu.c:3844
↓ 2 callers
Function
gpu_local_array_info_linearize_index
Linearize the index expression "expr" based on the array bounds * of "array". * * That is, transform expression * * A[i_0][i_1]...[i_n] * * to
gpu.c:1761
↓ 2 callers
Function
gpu_print_local_declarations
Print declarations to "p" for arrays that are local to "prog" * but that are used on the host and therefore require a declaration. */
gpu_print.c:21
↓ 2 callers
Function
gpu_print_types
Print the definitions of all types prog->scop that have not been * printed before (according to "types") on "p". * Extend the list of printed types
gpu_print.c:277
↓ 2 callers
Function
gpu_tree_id_is_sync
Is "id" the identifier of a synchronization statement inside "kernel"? * That is, does its name start with "sync" and does it point to "kernel"? */
gpu_tree.c:332
↓ 2 callers
Function
gpu_tree_move_down_to_shared
Move down the branch between "kernel" and "thread" until * the "shared" mark is reached, where the branch containing the "shared" * mark is identifi
gpu_tree.c:212
↓ 2 callers
Function
gpu_tree_move_left_to_sync
Move left in the sequence on top of "node" to a synchronization node * for "kernel". * If "node" itself contains a synchronization node preceding *
gpu_tree.c:591
↓ 2 callers
Function
group_depth_overlapping_writes
If two groups have overlapping access relations (within the outer * depth loops) and if one of them involves a write, * then merge the two groups in
gpu_group.c:1139
↓ 2 callers
Function
group_subsequence
Look for any pairs of consecutive leaves among the "n" children of "node" * starting at "first" that should be merged together. * Store the results
grouping.c:570
next →
1–100 of 546, ranked by callers