Commit Graph

1402 Commits

Author SHA1 Message Date
1b1ead6758 artiq: reimplement reformat_rpc_arg for ndarray 2024-10-17 15:21:24 +08:00
cd320cae49 standalone/ndarray: improve {reshape,broadcast_to,transpose} tests
Print their shapes and exhaustively print all contents.
2024-10-17 15:18:23 +08:00
f6e44908dd standalone/ndarray: add and organize view function tests 2024-10-17 15:18:23 +08:00
4e57a82543 core/ndstrides: update builtin_fns to use ndarray with strides 2024-10-17 15:17:50 +08:00
1ba8365692 core/ndstrides: add NDArrayObject::to_any 2024-10-17 14:58:46 +08:00
34b1e6b982 core/ndstrides: add ContiguousNDArray
Currently this is used to interop with nalgebra.
2024-10-17 14:58:46 +08:00
e7aa2688e6 core/ndstrides: implement np_dot() for scalars and 1D 2024-10-17 14:57:28 +08:00
548739b86f core/ndstrides: implement general matmul 2024-10-17 14:57:28 +08:00
3bd344bd2b core/ndstrides: implement cmpop 2024-10-17 14:53:09 +08:00
92d2efcc6e core/ndstrides: implement unary op 2024-10-17 14:52:20 +08:00
39ae9bd630 core/ndstrides: implement binop 2024-10-17 14:52:18 +08:00
94e98c1bd9 core/ndstrides: add NDArrayOut, broadcast_map and map 2024-10-17 14:47:20 +08:00
d12d62f078 core/ndstrides: implement subscript assignment
Overlapping is not handled. Currently it has undefined behavior.
2024-10-17 14:40:38 +08:00
5f31d6ec28 core/ndstrides: add more ScalarOrNDArray and NDArrayObject utils 2024-10-17 14:40:38 +08:00
020b776889 core/ndstrides: implement np_transpose() (no axes argument)
The IRRT implementation knows how to handle axes. But the argument is
not in NAC3 yet.
2024-10-17 14:39:51 +08:00
fc51bc63e2 core/ndstrides: implement broadcasting & np_broadcast_to() 2024-10-17 14:38:06 +08:00
f8c0e2c4dd core/ndstrides: implement np_reshape() 2024-10-17 14:35:17 +08:00
c156c7e46e core: categorize np_{transpose,reshape} as 'view functions' 2024-10-17 14:32:49 +08:00
e33f74b331 core/ndstrides: implement np_size() 2024-10-17 14:31:55 +08:00
c307a483bd core/ndstrides: implement np_shape() and np_strides()
These functions are not important, but they are handy for debugging.

`np.strides()` is not an actual NumPy function, but `ndarray.strides` is used.
2024-10-17 14:31:55 +08:00
f57df4c6a7 core/ndstrides: implement ndarray.fill() and .copy() 2024-10-17 14:29:05 +08:00
532fccf1fb core/ndstrides: implement np_identity() and np_eye() 2024-10-17 14:29:05 +08:00
de732ba68e core/ndstrides: implement np_array()
It also checks for inconsistent dimensions if the input is a list.
e.g., rejecting `[[1.0, 2.0], [3.0]]`.

However, currently only `np_array(<input>, copy=False)` and `np_array(<input>, copy=True)` are supported. In NumPy, copy could be false, true, or None. Right now, NAC3's `np_array(<input>, copy=False)` behaves like NumPy's `np.array(<input>, copy=None)`.
2024-10-17 14:27:04 +08:00
5da67b4268 core/irrt: add List
Needed for implementing np_array()
2024-10-17 14:27:04 +08:00
2b6f1f7bc6 core/ndstrides: add NDArrayObject::atleast_nd 2024-10-17 14:27:03 +08:00
8bde4729ef core/ndstrides: add NDArrayObject::make_copy 2024-10-17 14:23:59 +08:00
0206c3989a core/ndstrides: implement ndarray indexing
The functionality for `...` and `np.newaxis` is there in IRRT, but there
is no implementation of them for @kernel Python expressions because of
#486.
2024-10-17 13:56:35 +08:00
7327f979fb core/irrt: rename NDIndex to NDIndexInt
Unfortunately the name `NDIndex` is used in later commits. Renaming this
typedef to `NDIndexInt` to avoid amending. `NDIndexInt` will be removed
anyway when ndarray strides is completed.
2024-10-17 13:52:27 +08:00
f07fe3b88e core/irrt: add Slice and Range
Needed for implementing general ndarray indexing.

Currently IRRT slice and range have nothing to do with NAC3's slice
and range. The IRRT slice and range are currently there to implement
ndarray specific features. However, in the future their definitions may
be used to replace that of NAC3's. (NAC3's range is a [i32 x 3], IRRT's
range is a proper struct. NAC3 does not have a slice struct).
2024-10-17 13:52:27 +08:00
a8928d35e7 core/ndstrides: implement len(ndarray) & refactor len() 2024-10-17 13:44:43 +08:00
76a1c80081 core/ndstrides: implement np_{zeros,ones,full,empty} 2024-10-17 13:44:43 +08:00
8d4c2fd9f2 core/model: add util::gen_for_model 2024-10-17 13:44:43 +08:00
1c8cb84fcf core/object: add ListObject and TupleObject
Needed for implementing other ndarray utils.
2024-10-17 13:44:43 +08:00
9d8358c0e7 core/ndstrides: implement ndarray iterator NDIter
A necessary utility to iterate through all elements in a possibly strided ndarray.
2024-10-17 13:44:43 +08:00
9d87975c01 core/ndstrides: introduce NDArray
NDArray with strides.
2024-10-17 13:44:43 +08:00
35d30703eb core/irrt: fix exception.hpp C++ castings 2024-10-17 13:44:43 +08:00
b605006f58 core/toplevel/helper: add {extract,create}_ndims 2024-10-17 13:44:43 +08:00
5c18a32a28 core/object: introduce object
A small abstraction to simplify implementations.
2024-10-17 13:44:43 +08:00
0066c331d6 [core] introduce models 2024-10-17 13:44:43 +08:00
5839badadd [standalone] Update globals.py with type-inferred global var 2024-10-07 20:44:08 +08:00
56c845aac4 [standalone] Add support for registering globals without type decl 2024-10-07 20:44:06 +08:00
65a12d9ab3 [core] Refactor registration of top-level variables 2024-10-07 17:05:48 +08:00
9c6685fa8f [core] typecheck/function_check: Fix lookup of defined ids in scope 2024-10-07 16:51:37 +08:00
2bb788e4bb [core] codegen/expr: Materialize implicit globals
Required for when globals are read without the use of a global
declaration.
2024-10-07 13:13:20 +08:00
42a2f243b5 [core] typecheck: Disallow redeclaration of var shadowing global 2024-10-07 13:11:00 +08:00
3ce2eddcdc [core] typecheck/type_inferencer: Infer whether variables are global 2024-10-07 13:10:46 +08:00
51bf126a32 [core] typecheck/type_inferencer: Differentiate global symbols
Required for analyzing use of global symbols before global declaration.
2024-10-07 12:25:00 +08:00
1a197c67f6 [core] toplevel/composer: Reduce lock scope while analyzing function 2024-10-05 15:53:20 +08:00
581b2f7bb2 [standalone] Add demo for global variables 2024-10-04 13:24:30 +08:00
746329ec5d [standalone] Implement symbol resolution for globals 2024-10-04 13:24:30 +08:00