nodes
Access
dataclass
Bases: NotationTree, NotationExpression
Notation AST expression representing the value of tensor tns at the indices
idx....
Source code in src/finch/finch_notation/nodes.py
280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 | |
AccessFType
Bases: FType
Source code in src/finch/finch_notation/nodes.py
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | |
element_type
property
Returns the element type of the access ftype.
__call__(val)
Convert val the way the accessed tensor's type would.
Source code in src/finch/finch_notation/nodes.py
227 228 229 230 231 | |
AccessMode
dataclass
Bases: NotationNode
Notation AST node representing the access mode of a tensor.
Source code in src/finch/finch_notation/nodes.py
200 201 202 203 | |
Assign
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that defines lhs as having the value rhs.
Source code in src/finch/finch_notation/nodes.py
469 470 471 472 473 474 475 476 477 478 479 480 | |
Block
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that executes each of its arguments in turn.
Source code in src/finch/finch_notation/nodes.py
702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 | |
Cached
dataclass
Bases: NotationTree, NotationExpression
Notation AST expression arg, equivalent to the quoted expression ref.
Often used after the compiler caches the computation ref into a variable
arg, but we still wish to refer to the original expression to prove
properties about it.
Source code in src/finch/finch_notation/nodes.py
402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 | |
Call
dataclass
Bases: NotationTree, NotationExpression, CallTerm
Notation AST expression for the result of calling the function op on
args....
Source code in src/finch/finch_notation/nodes.py
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | |
Child
dataclass
Bases: NotationTree, Cursor
A sublevel of a level expression.
Source code in src/finch/finch_notation/nodes.py
514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 | |
Cursor
dataclass
Bases: NotationExpression, ABC
A level expression that retains its owning tensor.
Source code in src/finch/finch_notation/nodes.py
483 484 485 486 487 488 489 490 491 492 | |
Declare
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that declares tns with an initial value init reduced
with op in the current scope. A tensor with a dynamic fill takes init as
its fill.
Source code in src/finch/finch_notation/nodes.py
647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 | |
from_children(tns, init, op, *shape)
classmethod
Creates a Declare node from its children.
Source code in src/finch/finch_notation/nodes.py
664 665 666 667 668 669 | |
Dimension
dataclass
Bases: NotationTree, NotationExpression
Notation AST expression representing the dimension of tensor tns in
rank r.
Source code in src/finch/finch_notation/nodes.py
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | |
Fiber
dataclass
Bases: NotationTree, NotationExpression
A positioned level view, retaining the owning tensor type at the root.
Source code in src/finch/finch_notation/nodes.py
538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 | |
FillValue
dataclass
Bases: NotationTree, NotationExpression
Notation AST expression representing the fill value of tensor tns.
Source code in src/finch/finch_notation/nodes.py
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 | |
Freeze
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that freezes tns in the current scope after
modifications with op.
Source code in src/finch/finch_notation/nodes.py
672 673 674 675 676 677 678 679 680 681 682 683 684 | |
Full
dataclass
Bases: NotationTree, NotationExpression
A read-only tensor filled with val, with scalar shape by default.
Source code in src/finch/finch_notation/nodes.py
306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 | |
Function
dataclass
Bases: NotationTree
A module-level function definition with arguments args....
Attributes:
| Name | Type | Description |
|---|---|---|
name |
Variable
|
The function variable, annotated with its AssemblyKernelFType. |
args |
tuple[Variable, ...]
|
The arguments to the function. |
body |
NotationStatement
|
The body of the function. If it does not contain a return statement,
the function returns the value of |
Source code in src/finch/finch_notation/nodes.py
719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 | |
children
property
Returns the children of the node.
from_children(name, *args_body)
classmethod
Creates a term with the given head and arguments.
Source code in src/finch/finch_notation/nodes.py
740 741 742 743 744 | |
HollowFiber
dataclass
Bases: Fiber
A candidate sparse fiber, recording whether a non-fill value was written.
Source code in src/finch/finch_notation/nodes.py
564 565 566 567 568 569 570 571 572 573 574 575 576 | |
If
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that only executes body if cond is true.
Source code in src/finch/finch_notation/nodes.py
439 440 441 442 443 444 445 446 447 448 449 450 | |
IfElse
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that executes then_body if cond is true, otherwise
executes else_body.
Source code in src/finch/finch_notation/nodes.py
453 454 455 456 457 458 459 460 461 462 463 464 465 466 | |
Increment
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that updates the value lhs using rhs.
Source code in src/finch/finch_notation/nodes.py
366 367 368 369 370 371 372 373 374 375 376 377 | |
Literal
dataclass
Bases: NotationExpression, LiteralTerm
Notation AST expression for the literal value val.
Source code in src/finch/finch_notation/nodes.py
97 98 99 100 101 102 103 104 105 106 107 108 | |
Loop
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that runs body for each value of idx in ext.
Source code in src/finch/finch_notation/nodes.py
424 425 426 427 428 429 430 431 432 433 434 435 436 | |
Looplet
dataclass
Bases: NotationExpression
A typed tensor expression being lowered by a looplet pass.
Source code in src/finch/finch_notation/nodes.py
132 133 134 135 136 137 138 139 140 141 | |
Module
dataclass
Bases: NotationTree
Represents a group of functions. This is the toplevel translation unit for FinchNotation.
Attributes:
| Name | Type | Description |
|---|---|---|
funcs |
tuple[Function, ...]
|
The functions defined in the module. |
Source code in src/finch/finch_notation/nodes.py
766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 | |
children
property
Returns the children of the node.
NotationExpression
dataclass
Bases: NotationNode, ExpressionTerm
Notation AST expression base class.
A Notation expression is a program node which evaluates to a value.
Source code in src/finch/finch_notation/nodes.py
72 73 74 75 76 77 78 79 80 81 82 83 84 85 | |
result_type
abstractmethod
property
Get the type of the expression.
NotationNode
dataclass
NotationNode
Base class for all Finch Notation nodes
Source code in src/finch/finch_notation/nodes.py
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | |
__str__()
Returns a string representation of the node.
Source code in src/finch/finch_notation/nodes.py
57 58 59 60 61 | |
head()
classmethod
Returns the head of the node.
Source code in src/finch/finch_notation/nodes.py
44 45 46 47 | |
NotationStatement
dataclass
Bases: NotationNode
Notation AST statement base class.
A Notation statement is a program node nested inside a function which does not produce a value, but may modify the state of the machine.
Source code in src/finch/finch_notation/nodes.py
88 89 90 91 92 93 94 | |
Read
dataclass
Bases: AccessMode
Notation AST node representing a read-only access mode for a tensor. This mode allows reading the value of a tensor without modifying it.
Source code in src/finch/finch_notation/nodes.py
335 336 337 338 339 340 341 342 343 344 | |
Repack
dataclass
Bases: NotationTree, NotationStatement
Registers updates from a symbolic object val with the original
object obj. The original object may now be accessed and modified.
Attributes:
| Name | Type | Description |
|---|---|---|
slot |
The symbolic object to read from. |
|
obj |
NotationExpression
|
The original object to write to. |
Source code in src/finch/finch_notation/nodes.py
627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 | |
children
property
Returns the children of the node.
Return
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that returns the value of val from the current
function.
Source code in src/finch/finch_notation/nodes.py
747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 | |
children
property
Returns the children of the node.
Root
dataclass
Bases: NotationTree, Cursor
The first level of a tensor.
Source code in src/finch/finch_notation/nodes.py
495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 | |
Slot
dataclass
Bases: NotationExpression, NamedTerm
Represents a register to a symbolic object. Using a register in an expression creates a copy of the object.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
The name of the symbolic object to register. |
type |
FType
|
The type of the symbolic object. |
Source code in src/finch/finch_notation/nodes.py
579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 | |
result_type
property
Returns the type of the expression.
Thaw
dataclass
Bases: NotationTree, NotationStatement
Notation AST statement that thaws tns in the current scope, moving the tensor
from read-only mode to update-only mode with a reduction operator op.
Source code in src/finch/finch_notation/nodes.py
687 688 689 690 691 692 693 694 695 696 697 698 699 | |
Unpack
dataclass
Bases: NotationTree, NotationStatement
Attempts to convert rhs into a symbolic, which can be registerd with
lhs. The original object must not be accessed or modified until the
corresponding Repack node is reached.
Attributes:
| Name | Type | Description |
|---|---|---|
lhs |
Slot
|
The symbolic object to write to. |
rhs |
NotationExpression
|
The original object to read from. |
Source code in src/finch/finch_notation/nodes.py
606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 | |
children
property
Returns the children of the node.
Unwrap
dataclass
Bases: NotationTree, NotationExpression
Notation AST statement that unwraps the scalar value from a 0-dimensional
tensor arg.
Source code in src/finch/finch_notation/nodes.py
380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 | |
result_type
property
Returns the type of the unwrapped value.
Update
dataclass
Bases: AccessMode, NotationTree
Notation AST node representing an update access mode for a tensor. This
mode allows reading and modifying the value of a tensor. Increment
operations are allowed in this mode, and will use the update operation op
to increment ref with val as ref = op(ref, val). To overwrite the
value of a tensor, use the ops algebra.overwrite or algebra.init_write.
Attributes:
op: The operation used to update the value of the tensor.
Source code in src/finch/finch_notation/nodes.py
347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | |
Value
dataclass
Bases: NotationExpression
Notation AST expression for host code val expected to evaluate to a value of
type type_.
Source code in src/finch/finch_notation/nodes.py
114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |
Variable
dataclass
Bases: NotationExpression, NamedTerm
Notation AST expression for a variable named name.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
The name of the variable. |
type_ |
FType
|
The type of the variable. |
Source code in src/finch/finch_notation/nodes.py
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 | |