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
collect_call_domains
Collect the iteration domains of the statements in "scop" * that contain a call expression. */
ppcg.c:314
↓ 1 callers
Function
collect_deps
Collect all dependences from "scop" that are relevant for performing * hybrid tiling on "node" and its child and map them to the schedule * space of
hybrid.c:1088
↓ 1 callers
Function
collect_names
Collect all variable names that are in use in "scop". * In particular, collect all parameters in the context and * all the array names. * Store the
ppcg.c:122
↓ 1 callers
Function
collect_non_kill_domains
Collect the iteration domains of the statements in "scop", * skipping kill statements. */
ppcg.c:252
↓ 1 callers
Function
collect_non_private_tagged_writes
Collect the references to all writes in "kernel" that write directly * to global or shared memory, i.e., that are not mapped to private memory. * Ea
gpu.c:2711
↓ 1 callers
Function
collect_order_dependences
For each array in "prog", store the (untagged) order dependences * derived from the array in array->dep_order. * In particular, consider all referen
gpu.c:280
↓ 1 callers
Function
collect_references
Collect all references to the given array and store pointers to them * in array->refs. */
gpu.c:60
↓ 1 callers
Function
combine_time_tile
Consruct a function that is equal to the time tile of "phase0" * on the domain of "phase0" and equal to the time tile of "phase1" * on the domain of
hybrid.c:1604
↓ 1 callers
Function
complete_grouping
Complete "grouping" to cover all statement instances in the domain * of grouping->sc. * * In particular, grouping->domain is set to the full set of
grouping.c:651
↓ 1 callers
Function
complete_index
Does the index expression "index" of "expr" represent an access * to a single element? * That is, is "index" completely specified? * * If "expr" a
gpu.c:5412
↓ 1 callers
Function
compute_accessed_by_single_thread_depth
Return the lowest depth between data->kernel_depth and data->thread_depth * at which every array element accessed through "acc" is accessed * by a s
gpu_group.c:524
↓ 1 callers
Function
compute_cpu_schedule
Compute a schedule for the scop "ps". * * First derive the appropriate schedule constraints from the dependences * in "ps" and then compute a sched
cpu.c:708
↓ 1 callers
Function
compute_dependences
Compute the dependences of the program represented by "scop". * Store the computed potential flow dependences * in scop->dep_flow and the reads with
ppcg.c:718
↓ 1 callers
Function
compute_extent
Compute and return the extent of "array", taking into account the set of * accessed elements. * * In particular, the extent in the outer dimension
gpu.c:113
↓ 1 callers
Function
compute_flow_dep
Compute the potential flow dependences and the potential live in * accesses. * * Both must-writes and must-kills are allowed to kill dependences *
ppcg.c:685
↓ 1 callers
Function
compute_forced_dependences
Compute those validity dependences of the program represented by "scop" * that should be unconditionally enforced even when live-range reordering *
ppcg.c:583
↓ 1 callers
Function
compute_full_tile
Return a description of the full tiles of "phase" at the point * in the original schedule tree where the tiling was applied. * * First construct a
hybrid.c:1758
↓ 1 callers
Function
compute_group_bounds_core
Compute the private and/or shared memory tiles for the array * reference group "group" of array "array". * Return isl_stat_ok on success and isl_sta
gpu_group.c:922
↓ 1 callers
Function
compute_group_tilings
Compute a tiling for all the array reference groups in "kernel". */
gpu.c:1018
↓ 1 callers
Function
compute_hexagon
Construct the basic hexagonal tile shape. * "space" is the 2D space in which the hexagon should be constructed. * h is st-1, with st the tile size i
hybrid.c:600
↓ 1 callers
Function
compute_live_out
Compute the live out accesses, i.e., the writes that are * potentially not killed by any kills or any other writes, and * store them in ps->live_out
ppcg.c:385
↓ 1 callers
Function
compute_live_range_reordering_dependences
Compute the dependences of the program represented by "scop" * in case live range reordering is allowed. * * We compute the actual live ranges and
ppcg.c:670
↓ 1 callers
Function
compute_localize
Compute a mapping from the ts-space to the local coordinates * within each tile. In particular, compute * * ts[t, s] -> local_ts[t % (2 S_t), (s +
hybrid.c:816
↓ 1 callers
Function
compute_may_persist
Compute the set of inner array elements that may have their values * preserved by "prog". In particular, collect the array elements of * arrays tha
gpu.c:5764
↓ 1 callers
Function
compute_order_dependences
Compute the order dependences that prevent the potential live ranges * from overlapping. * * In particular, construct a union of relations * * [R
ppcg.c:517
↓ 1 callers
Function
compute_phase_shift
Compute the offset of phase 1 with respect to phase 0 * in the ts-space ("space"). * In particular, return * * ts[st, s0 + duh] */
hybrid.c:700
↓ 1 callers
Function
compute_privatization
Create a set of dimension data->thread_depth + data->n_thread * that equates the residue of the final data->n_thread dimensions * modulo the kernel-
gpu_group.c:1406
↓ 1 callers
Function
compute_sched_to_copy
Given a mapping "iterator_map" from the AST schedule to a domain, * return the corresponding mapping from the AST schedule * to the outer kernel->co
gpu.c:920
↓ 1 callers
Function
compute_schedule
Compute an appropriate schedule based on the accesses in * gen->read and gen->write. * * We derive schedule constraints from the dependences in gen
gpu.c:4430
↓ 1 callers
Function
compute_shift_phase
Give the phase_shift ts[S_t, S_0 + floor(d_u h)], * compute a function that applies the shift, i.e., * * ts[t, s] -> ts[t + S_t, s + S_0 + floor(d_
hybrid.c:790
↓ 1 callers
Function
compute_shift_space
Compute a shift in the space dimension for tiles * at time tile T = floor(t/(2 * S_t)) * such that they align to a multiple of the total space tile
hybrid.c:764
↓ 1 callers
Function
compute_space_shift
Compute the shift that should be added to the space band * in order to be able to apply rectangular tiling to the space. * Store the shift in phase-
hybrid.c:1498
↓ 1 callers
Function
compute_space_sizes
Compute the total size of a tile for the space dimensions, * i.e., those corresponding to the child node * of the input pattern. * If S_0 is the or
hybrid.c:676
↓ 1 callers
Function
compute_space_tile
Compute the space tiling and store the result in phase->space_tile. * The space tiling is of the form * * [P[t] -> C[s]] -> C[floor((s + space_shif
hybrid.c:1543
↓ 1 callers
Function
compute_sync_writes
Collect all write references that require synchronization. * "node" is assumed to point to the kernel node. * Each reference is represented by a uni
gpu.c:3714
↓ 1 callers
Function
compute_tagged_flow_dep
Compute the flow dependences and the live_in accesses and store * the results in ps->dep_flow and ps->live_in. * A copy of the flow dependences, tag
ppcg.c:473
↓ 1 callers
Function
compute_tagger
Construct a function from tagged iteration domains to the corresponding * untagged iteration domains with as range of the wrapped map in the domain
ppcg.c:344
↓ 1 callers
Function
compute_time_tile
Return the function * * ts[t, s] -> floor(t/(2 * st)) * * representing the time tile. * "space" is the space ts[t, s]. */
hybrid.c:722
↓ 1 callers
Function
concat
Construct the string "<a>_<b>". */
gpu.c:4612
↓ 1 callers
Function
construct_cpu_schedule_constraints
Construct schedule constraints from the dependences in ps * for the purpose of computing a schedule for a CPU. * * The proximity constraints are se
cpu.c:667
↓ 1 callers
Function
construct_group_id
Construct a unique identifier for a group in "grouping". * * The name is of the form G_n, with n the first value starting at * grouping->group_id t
grouping.c:379
↓ 1 callers
Function
construct_local_ts_space
Construct and return the space local_ts[t, s]. */
hybrid.c:654
↓ 1 callers
Function
construct_phase
Construct a ppcg_ht_phase object, that simply copies * information from "tiling". * That is, the result is defined over the "ts" space and * corres
hybrid.c:1381
↓ 1 callers
Function
construct_tile_map
Construct a mapping from the elements of the original pair of bands * to which tiling was applied that belong to a tile of "phase" * to that tile, p
hybrid.c:1707
↓ 1 callers
Function
construct_ts_space
Construct and return the space ts[t, s]. */
hybrid.c:638
↓ 1 callers
Function
copy_array_from_device
Print code to "p" for copying "array" back from the device to the host * in its entirety. The bounds on the extent of "array" have * been precomput
cuda.c:163
↓ 1 callers
Function
copy_array_to_device
Print code to "p" for copying "array" from the host to the device * in its entirety. The bounds on the extent of "array" have * been precomputed in
cuda.c:138
↓ 1 callers
Function
covers_src_and_dst
Given a relation "map" between instances of two statements A and B, * does it relate every instance of A (according to the domain of "src") * to eve
grouping.c:175
↓ 1 callers
Function
cpu_print_macros
Print the required macros for the CPU AST "node" to "p", * including those needed for the user statements inside the AST. */
cpu.c:499
↓ 1 callers
Function
create_access_leaf
This function is called for each statement node in the AST * for copying to or from shared/private memory. * Attach a pointer to a ppcg_kernel_stmt
gpu.c:1950
↓ 1 callers
Function
create_copy_filters
For each array in "prog" of which an element appears in "accessed" and * that is not a read only scalar, create a zero-dimensional universe set * of
gpu.c:4637
↓ 1 callers
Function
create_domain_leaf
This function is called for each instance of a user statement * in the kernel "kernel", identified by "gpu_stmt". * "kernel" may be NULL if we are n
gpu.c:1865
↓ 1 callers
Function
create_kernel_var
gpu.c:1228
↓ 1 callers
Function
create_kernel_vars
gpu.c:1252
↓ 1 callers
Function
create_sync_leaf
Create a synchronization ppcg_kernel_stmt and * attach it to the node "node" representing the synchronization. */
gpu.c:2006
↓ 1 callers
Function
cuda_close_files
Close all output files. */
cuda_common.c:45
↓ 1 callers
Function
cuda_open_files
Open the host .cu file and the kernel .hu and .cu files for writing. * Add the necessary includes. */
cuda_common.c:21
↓ 1 callers
Function
declare_device_array
Print a declaration for the device array corresponding to "array" on "p". */
cuda.c:44
↓ 1 callers
Function
declare_device_arrays
cuda.c:74
↓ 1 callers
Function
depth_accesses_overlap
Check if the access relations of group1 and group2 overlap within * the outermost min(group1->min_depth, group2->min_depth) loops. */
gpu_group.c:1110
↓ 1 callers
Function
dereference
Dereference "expr" by adding an index [0]. * The original "expr" is assumed not to have any indices. * * If "expr" is a member access, then the der
gpu.c:1694
↓ 1 callers
Function
detect_strides
Given an array access "access", check if for any index i there is * a shift a(p) and a stride g such that * * a(p) + i = 0 mod g * * If so, recor
gpu_group.c:138
↓ 1 callers
Function
determine_properties_original_schedule
Return the original schedule with all bands marked permutable and * all band members marked coincident based on the coincidence constraints. * The b
gpu.c:4572
↓ 1 callers
Function
domain_is_sync
Does "domain" consist of a single set with a tuple identifier * corresponding to a synchronization for "kernel"? */
gpu_tree.c:347
↓ 1 callers
Function
eliminate_dead_code
Eliminate dead code from ps->domain. * * In particular, intersect both ps->domain and the domain of * ps->schedule with the (parts of) iteration *
ppcg.c:773
↓ 1 callers
Function
expr_has_call
Does "expr" contain any call expressions? */
ppcg.c:273
↓ 1 callers
Function
extract_array_info
Compute bounds on the host array "pa" based on the corresponding * accessed elements in "arrays" * and collect all references to the array. * Store
gpu.c:187
↓ 1 callers
Function
extract_block_size
Compute the effective block size as a list of the sizes in each dimension * and store the sizes in kernel->block_dim. * * The block size specified
gpu.c:1133
↓ 1 callers
Function
extract_context
Extract the set of parameter values and outer schedule dimensions * for which any statement instance * in the kernel inserted at "node" needs to be
gpu.c:2839
↓ 1 callers
Function
extract_fixed_size
Compute the size of a fixed bounding box around the origin and "set", * where "set" is assumed to contain only non-negative elements, * and store th
gpu.c:1092
↓ 1 callers
Function
extract_grid_size
Compute the effective grid size as a list of the sizes in each dimension. * * The grid size specified by the user or set by default * in read_grid_
gpu.c:1049
↓ 1 callers
Function
extract_leaves
Return an array of "n" elements with information extracted from * the "n" children of "node" starting at "first", all of which * are known to be fil
grouping.c:127
↓ 1 callers
Function
extract_local_accesses
Return (the universe spaces of) the arrays that are declared * inside the scop corresponding to "prog" and for which all * potential writes inside t
gpu.c:4778
↓ 1 callers
Function
extract_single_tagged_access
Given a tagged access relation to a single array "tagged", extract it * as a map, taking into account that the input may be empty. * If the access r
gpu.c:5368
↓ 1 callers
Function
extract_sizes_from_str
gpu.c:2528
↓ 1 callers
Function
extract_stmts
Return an array of gpu_stmt representing the statements in "scop". * Do not collect array accesses for statements that have been killed. */
gpu.c:5578
↓ 1 callers
Function
find_access
Return the gpu_stmt_access in the list "accesses" that corresponds * to "ref_id". */
gpu.c:1441
↓ 1 callers
Function
find_array_index
Return the index of the array called "name" in the list of arrays. */
gpu.c:1455
↓ 1 callers
Function
find_ref_group
Return a pointer to the gpu_array_ref_group in "local" * that contains the reference "access". * Return NULL if no such group can be found. */
gpu.c:1500
↓ 1 callers
Function
find_stmt
Find the element in gen->stmt that has the given "id". * Return NULL if no such gpu_stmt can be found. */
gpu.c:1404
↓ 1 callers
Function
find_stmt
Find the element in scop->stmts that has the given "id". */
cpu.c:281
↓ 1 callers
Function
free_array_info
gpu.c:380
↓ 1 callers
Function
free_device_arrays
cuda.c:115
↓ 1 callers
Function
generate
Generate CUDA code for "scop" and print it to "p". * After generating an AST for the transformed scop as explained below, * we call "gen->print" to
gpu.c:5665
↓ 1 callers
Function
generate
Generate CPU code for "scop" and print it to "p". * * First obtain a schedule for "scop" and then print code for "scop" * using that schedule. */
cpu.c:813
↓ 1 callers
Function
generate_code
Use isl to generate code for both the host and the device * from "schedule". * The device code is marked by "kernel" mark nodes in the schedule tree
gpu.c:2498
↓ 1 callers
Function
generate_cpu
Transform the code in the file called "input" by replacing * all scops by corresponding CPU code and write the results to a file * called "output".
cpu.c:837
↓ 1 callers
Function
generate_cuda
Transform the code in the file called "input" by replacing * all scops by corresponding CUDA code. * The names of the output files are derived from
cuda.c:716
↓ 1 callers
Function
generate_name
Return an isl_id called "prefix%d", with "%d" set to "i". * If an isl_id with such a name already appears among the variable names * of "scop", then
ppcg.c:162
↓ 1 callers
Function
generate_opencl
Transform the code in the file called "input" by replacing * all scops by corresponding OpenCL code. * The host code is written to "output" or a nam
opencl.c:1324
↓ 1 callers
Function
get_all_non_parallel_subtree_filters
Given a set or sequence node, return the union of the filters of * the direct subtrees that do not contain any suitably permutable bands * (accordin
gpu.c:4207
↓ 1 callers
Function
get_initial_non_parallel_subtree_filters
Given a set or sequence node, return the union of the filters of * the initial direct subtrees that do not contain any suitably permutable * bands (
gpu.c:4217
↓ 1 callers
Function
get_local_coincidence
Return the coincidence constraints between pairs of instances * that are scheduled together by the ancestors of "node". * That is, select those coin
gpu.c:4462
↓ 1 callers
Function
get_output_file
Derive the output file name from the input file name. * 'input' is the entire path of the input file. The output * is the file name plus the additio
cpu.c:66
↓ 1 callers
Function
get_prefix
Short-hand for retrieving the prefix schedule at "node" * in the form of an isl_multi_union_pw_aff. */
grouping.c:117
↓ 1 callers
Function
get_schedule
Obtain a schedule for the scop, by reading it from * a file, by computing one or by determining the properties * of the original schedule. */
gpu.c:4604
↓ 1 callers
Function
get_schedule
Compute a schedule based on the dependences in "ps" and * tile it if requested by the user. */
cpu.c:740
↓ 1 callers
Function
gpu_array_ref_group_compute_tiling
Compute a tiling for the array reference group "group". * * The tiling is of the form * * { [D[i] -> A[a]] -> T[t] } * * where D represents the
gpu_group.c:1626
↓ 1 callers
Function
gpu_array_ref_group_requires_unroll
Does the tile associated to "group" require unrolling of the schedule * dimensions mapped to threads? * Note that this can only happen for private t
gpu_group.c:111
↓ 1 callers
Function
gpu_group_references
Group references of all arrays in "kernel". * "node" points to the kernel mark. * The mapping to shared memory in computed at the "shared" mark. *
gpu_group.c:1475
← previous
next →
201–300 of 546, ranked by callers