Reference guide: Overview

General Remarks

Creation via Static Methods

To map more directly to the isl’s C interface, object creation in islpy is done through static methods instead of through constructors. These are marked ‘(static)’ in each class’s overview section.

Documented vs. Non-documented Functionality

Since islpy is automatically generated from the isl C headers, some of the functionality it exposes might be undocumented. Undocumented functionality might change or vanish without notice. ‘Documented’ functionality is defined as whatever is mentioned in the isl manual. islpy will let you call undocumented functions, but you are doing so at your own risk.

Invalidation of Arguments

You may notice that a few methods below say ‘(becomes invalid)’. This has to do with an idiosyncrasy in isl’s interface that was retained at the Python level for efficiency. Such arguments will be deleted (by isl) upon entry to the called function. If you would like to retain access to that object, simply append a .copy() to that argument. (Note that you will notice if an object got deleted for you accidentally, as the next operation on it will simply fail with an exception.)

Integers

Whenever an integer argument is required, islpy supports regular Python integers and Python long integers. It will return Python long integers.

Automatic Casts

islpy will automatically perform the following upward casts in argument lists:

Called with Argument Type
BasicSet Set
BasicMap Map
Set UnionSet
Map UnionMap
Space LocalSpace
Aff PwAff

as well as casts contained in the transitive closure of this ‘casting graph’.

Error Reporting

exception islpy.Error

Convenience

islpy.make_zero_and_vars(set_vars, params=[], ctx=None)
Parameters:
  • set_vars – an iterable of variable names, or a comma-separated string
  • params – an iterable of variable names, or a comma-separated string
Returns:

a dictionary from variable names (in set_vars and params) to PwAff instances that represent each of the variables. They key ‘0’ is also include and represents a PwAff zero constant.

New in version 2016.1.1.

This function is intended to make it relatively easy to construct sets programmatically without resorting to string manipulation.

Usage example:

v = isl.make_zero_and_vars("i,j,k", "n")

myset = (
        v[0].le_set(v["i"] + v["j"])
        &
        (v["i"] + v["j"]).lt_set(v["n"])
        &
        (v[0].le_set(v["i"]))
        &
        (v["i"].le_set(13 + v["n"]))
        )
islpy.affs_from_space(space)
Returns:a dictionary from variable names (in set_vars and params) to PwAff instances that represent each of the variables in*space. They key ‘0’ is also include and represents a PwAff zero constant.

New in version 2016.2.

This function is intended to make it relatively easy to construct sets programmatically without resorting to string manipulation.

Usage example:

s = isl.Set("[n] -> {[i,j,k]: 0<=i,j,k<n}")
v = isl.affs_from_space(s.space)

myset = (
        v[0].le_set(v["i"] + v["j"])
        &
        (v["i"] + v["j"]).lt_set(v["n"])
        &
        (v[0].le_set(v["i"]))
        &
        (v["i"].le_set(13 + v["n"]))
        )

Lifetime Helpers

class islpy.ffi_callback_handle

Some callbacks, notably those in AstBuild, need to outlive the function call to which they’re passed. These callback return a callback handle that must be kept alive until the callback is no longer needed.

Global Data

islpy.DEFAULT_CONTEXT

ISL objects being unpickled or initialized from strings will be instatiated within this Context.

New in version 2015.2.

Symbolic Constants

class islpy.error
abort = 1
alloc = 2
internal = 4
invalid = 5
none = 0
quota = 6
unknown = 3
unsupported = 7
class islpy.dim_type
all = 5
cst = 0
div = 4
in_ = 2
out = 3
param = 1
set = 3
class islpy.fold
list = 2
max = 1
min = 0
class islpy.ast_op_type
access = 23
add = 7
address_of = 25
and_ = 0
and_then = 1
call = 22
cond = 15
div = 10
eq = 17
error = -1
fdiv_q = 11
ge = 20
gt = 21
le = 18
lt = 19
max = 4
member = 24
min = 5
minus = 6
mul = 9
or_ = 2
or_else = 3
pdiv_q = 12
pdiv_r = 13
select = 16
sub = 8
zdiv_r = 14
class islpy.ast_expr_type
error = -1
id = 1
int = 2
op = 0
class islpy.ast_node_type
block = 3
error = -1
for_ = 1
if_ = 2
mark = 4
user = 5
class islpy.format
C = 4
EXT_POLYLIB = 6
ISL = 0
LATEX = 5
OMEGA = 3
POLYLIB = 1
POLYLIB_CONSTRAINTS = 2
class islpy.yaml_style
BLOCK = 0
FLOW = 1

Output

class islpy.Printer(_data)
ast_op_type_set_print_name(self, type, name)
Parameters:
Returns:

Printer (self)

end_line(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
flush(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
get_ctx(self)
Parameters:selfPrinter
Returns:Context
get_note(self, id)
Parameters:
Returns:

Id

get_output_format(self)
Parameters:selfPrinter
Returns:int
get_str(self)
Parameters:selfPrinter
Returns:string
get_yaml_style(self)
Parameters:selfPrinter
Returns:int
has_note(self, id)
Parameters:
Returns:

bool

indent(self, indent)
Parameters:
Returns:

Printer (self)

print_aff(self, aff)
Parameters:
Returns:

Printer (self)

print_aff_list(self, list)
Parameters:
Returns:

Printer (self)

print_ast_expr(self, expr)
Parameters:
Returns:

Printer (self)

print_ast_expr_list(self, list)
Parameters:
Returns:

Printer (self)

print_ast_node(self, node)
Parameters:
Returns:

Printer (self)

print_ast_node_list(self, list)
Parameters:
Returns:

Printer (self)

print_basic_map(self, bmap)
Parameters:
Returns:

Printer (self)

print_basic_map_list(self, list)
Parameters:
Returns:

Printer (self)

print_basic_set(self, bset)
Parameters:
Returns:

Printer (self)

print_basic_set_list(self, list)
Parameters:
Returns:

Printer (self)

print_constraint(self, c)
Parameters:
Returns:

Printer (self)

print_constraint_list(self, list)
Parameters:
Returns:

Printer (self)

print_double(self, d)
Parameters:
Returns:

Printer (self)

print_id(self, id)
Parameters:
Returns:

Printer (self)

print_id_list(self, list)
Parameters:
Returns:

Printer (self)

print_int(self, i)
Parameters:
Returns:

Printer (self)

print_local_space(self, ls)
Parameters:
Returns:

Printer (self)

print_map(self, map)
Parameters:
Returns:

Printer (self)

print_map_list(self, list)
Parameters:
Returns:

Printer (self)

print_multi_aff(self, maff)
Parameters:
Returns:

Printer (self)

print_multi_pw_aff(self, mpa)
Parameters:
Returns:

Printer (self)

print_multi_union_pw_aff(self, mupa)
Parameters:
Returns:

Printer (self)

print_multi_val(self, mv)
Parameters:
Returns:

Printer (self)

print_point(self, pnt)
Parameters:
Returns:

Printer (self)

print_pw_aff(self, pwaff)
Parameters:
Returns:

Printer (self)

print_pw_aff_list(self, list)
Parameters:
Returns:

Printer (self)

print_pw_multi_aff(self, pma)
Parameters:
Returns:

Printer (self)

print_pw_qpolynomial(self, pwqp)
Parameters:
Returns:

Printer (self)

print_pw_qpolynomial_fold(self, pwf)
Parameters:
Returns:

Printer (self)

print_qpolynomial(self, qp)
Parameters:
Returns:

Printer (self)

print_qpolynomial_fold(self, fold)
Parameters:
Returns:

Printer (self)

print_schedule(self, schedule)
Parameters:
Returns:

Printer (self)

print_schedule_constraints(self, sc)
Parameters:
Returns:

Printer (self)

print_schedule_node(self, node)
Parameters:
Returns:

Printer (self)

print_set(self, map)
Parameters:
Returns:

Printer (self)

print_set_list(self, list)
Parameters:
Returns:

Printer (self)

print_space(self, dim)
Parameters:
Returns:

Printer (self)

print_str(self, s)
Parameters:
Returns:

Printer (self)

print_union_access_info(self, access)
Parameters:
Returns:

Printer (self)

print_union_flow(self, flow)
Parameters:
Returns:

Printer (self)

print_union_map(self, umap)
Parameters:
Returns:

Printer (self)

print_union_pw_aff(self, upa)
Parameters:
Returns:

Printer (self)

print_union_pw_multi_aff(self, upma)
Parameters:
Returns:

Printer (self)

print_union_pw_qpolynomial(self, upwqp)
Parameters:
Returns:

Printer (self)

print_union_pw_qpolynomial_fold(self, upwf)
Parameters:
Returns:

Printer (self)

print_union_set(self, uset)
Parameters:
Returns:

Printer (self)

print_union_set_list(self, list)
Parameters:
Returns:

Printer (self)

print_val(self, v)
Parameters:
Returns:

Printer (self)

print_val_list(self, list)
Parameters:
Returns:

Printer (self)

print_vec(self, vec)
Parameters:
Returns:

Printer (self)

set_indent(self, indent)
Parameters:
Returns:

Printer (self)

set_indent_prefix(self, prefix)
Parameters:
Returns:

Printer (self)

set_isl_int_width(self, width)
Parameters:
Returns:

Printer (self)

set_note(self, id, note)
Parameters:
Returns:

Printer (self)

set_output_format(self, output_format)
Parameters:
Returns:

Printer (self)

set_prefix(self, prefix)
Parameters:
Returns:

Printer (self)

set_suffix(self, suffix)
Parameters:
Returns:

Printer (self)

set_yaml_style(self, yaml_style)
Parameters:
Returns:

Printer (self)

start_line(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
static to_str(ctx)
Parameters:ctxContext
Returns:Printer
yaml_end_mapping(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
yaml_end_sequence(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
yaml_next(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
yaml_start_mapping(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)
yaml_start_sequence(self)
Parameters:selfPrinter (becomes invalid)
Returns:Printer (self)

Helper functions

islpy.align_spaces(obj, tgt, obj_bigger_ok=False, across_dim_types=False)

Try to make the space in which obj lives the same as that of tgt by adding/matching named dimensions.

Parameters:obj_bigger_ok – If True, no error is raised if the resulting obj has more dimensions than tgt.
islpy.align_two(obj1, obj2, across_dim_types=False)

Align the spaces of two objects, potentially modifying both of them.

See also align_spaces().