a00eb7969e
[core] codegen: Implement matrix_power
...
Last of the functions that need to be ported over to strided-ndarray.
2024-12-13 15:23:31 +08:00
27a6f47330
[core] codegen: Implement construction of unsized ndarrays
...
Partially based on f731e604
: core/ndstrides: add more ScalarOrNDArray
and NDArrayObject utils.
2024-12-13 15:23:31 +08:00
061747c67b
[core] codegen: Implement NDArrayValue::atleast_nd
...
Based on 9cfa2622
: core/ndstrides: add NDArrayObject::atleast_nd.
2024-12-13 15:23:31 +08:00
dc91d9e35a
[core] codegen: Implement ScalarOrNDArray and use it in indexing
...
Based on 8f9d2d82
: core/ndstrides: implement ndarray indexing.
2024-12-13 15:23:31 +08:00
438943ac6f
[core] codegen: Implement indexing for NDArray
...
Based on 8f9d2d82
: 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
M-Labs/nac3#486 .
2024-12-13 15:23:31 +08:00
678e56c95d
[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-12-13 15:23:31 +08:00
fdfc80ca5f
[core] codegen: Implement Slice{Type,Value}, RustSlice
...
Based on 01c96396
: core/irrt: add Slice and Range and part of
8f9d2d82
: core/ndstrides: implement ndarray indexing.
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-12-13 15:23:31 +08:00
8b3429d62a
[artiq] Reimplement get_obj_value for strided ndarray
...
Based on 7ef93472
: artiq: reimplement get_obj_value to use ndarray with
strides
2024-12-13 15:23:31 +08:00
f4c5038b95
[artiq] codegen: Reimplement polymorphic_print for strided ndarray
...
Based on 2a6ee503
: artiq: reimplement polymorphic_print for ndarray
2024-12-13 15:23:31 +08:00
ddd16738a6
[core] codegen: implement ndarray iterator NDIter
...
Based on 50f960ab
: core/ndstrides: implement ndarray iterator NDIter
A necessary utility to iterate through all elements in a possibly
strided ndarray.
2024-12-13 15:23:31 +08:00
44c49dc102
[artiq] codegen: Reimplement polymorphic_print for strided ndarray
...
Based on 2a6ee503
: artiq: reimplement polymorphic_print for ndarray
2024-12-13 15:23:31 +08:00
e4bd376587
[core] codegen: Implement ContiguousNDArray
...
Fixes compatibility with linalg algorithms. matrix_power is missing due
to the need for indexing support.
2024-12-13 15:23:29 +08:00
44498f22f6
[core] codegen: Implement NDArray functions from a0a1f35b
2024-12-13 15:22:11 +08:00
110416d07a
[core] codegen/irrt: Add IRRT functions for strided-ndarray
2024-12-13 15:22:11 +08:00
08a7d01a13
[core] Add itemsize and strides to NDArray struct
...
Temporarily disable linalg ndarray tests as they are not ported to work
with strided-ndarray.
2024-12-13 15:22:09 +08:00
3cd36fddc3
[core] codegen/types: Add check_struct_type_matches_fields
...
Shorthand for checking if a type is representable by a StructFields
instance.
2024-12-12 11:40:44 +08:00
56a7a9e03d
[core] codegen: Add helper functions for create+call functions
...
Replacement for various FnCall methods from legacy ndstrides
implementation.
2024-12-12 11:30:36 +08:00
574ae40f97
[core] codegen: Add call_memcpy_generic_array
...
Replacement for Instance<Ptr>::copy_from from legacy ndstrides
implementation.
2024-12-12 11:30:36 +08:00
aa293b6bea
[core] codegen: Add type_aligned_alloca
2024-12-12 11:30:35 +08:00
eb4b881690
[core] Expose {types,values}::ndarray modules
...
Allows better encapsulation of members in these modules rather than
allowing them to leak into types/values mod.
2024-12-12 11:30:14 +08:00
3d0a1d281c
[core] Expose irrt::ndarray
2024-12-10 12:49:49 +08:00
ad67a99c8f
[core] codegen: Cleanup builtin_fns.rs
...
- Unpack tuples directly in function argument
- Replace Vec parameters with slices
- Replace unwrap-transform with map-unwrap
2024-12-10 12:49:49 +08:00
8e2b50df21
[core] codegen/ndarray: Cleanup
...
- Remove redundant size param
- Add *_fields functions and docs
2024-12-09 13:01:08 +08:00
06092ad29b
[core] Move alloca and map_value of ProxyType to implementations
...
These functions may not be invokable by the same set of parameters as
some classes has associated states.
2024-12-09 12:51:50 +08:00
d62c6b95fd
[core] codegen/types: Rename StructField::set_from_value
2024-12-09 12:51:50 +08:00
95e29d9997
[core] codegen: Move ndarray type/value as a separate module
2024-12-09 12:51:46 +08:00
536ed2146c
[meta] Remove all mentions of build_int_cast
...
build_int_cast performs signed extension or truncation depending on the
source and target int lengths. This is usually not what we want - We
want zero-extension instead.
Replace all instances of build_int_cast with
build_int_z_extend_or_bit_cast to fix this issue.
2024-12-09 12:51:39 +08:00
d484d44d95
[standalone] linalg: Fix function name in error message
2024-12-09 12:09:57 +08:00
ac978864f2
[meta] Apply clippy suggestions
2024-12-09 12:08:41 +08:00
95254f8464
[meta] Update Cargo dependencies
2024-12-09 12:08:41 +08:00
964945d244
string_store: update embedding map after compilation
2024-12-03 16:45:46 +08:00
ae09a0d444
exceptions: preallocate in NAC3 instead
2024-12-03 16:45:05 +08:00
01edd5af67
[meta] Apply rustfmt changes
2024-11-29 15:43:34 +08:00
015714eee1
copy constructor -> clone
2024-11-28 18:52:53 +08:00
71dec251e3
ld/dwarf: remove reader resets
...
DWARF reader never had to reverse. Readers are already copied to achieve this effect.
Plus the position that it reverses to might be questionable.
2024-11-28 18:52:53 +08:00
fce61f7b8c
ld: fix dwarf sections offset calculations
2024-11-28 18:52:53 +08:00
babc081dbd
core/toplevel: update tests
2024-11-27 14:31:57 +08:00
5337dbe23b
core/toplevel: add python-like error messages for class definition
2024-11-27 14:31:57 +08:00
f862c01412
core/toplevel: refactor composer
2024-11-27 14:31:53 +08:00
0c9705f5f1
[meta] Apply clippy changes
2024-11-25 16:05:12 +08:00
5f940f86d9
[artiq] Fix obtaining ndarray struct from NDArrayType
2024-11-25 15:01:39 +08:00
5651e00688
flake: add platformdirs artiq dependency
2024-11-22 20:30:30 +08:00
f6745b987f
bump sipyco and artiq used for profiling
2024-11-22 19:43:03 +08:00
e0dedc6580
nac3artiq: support kernels sent by content
2024-11-22 19:38:52 +08:00
28f574282c
[core_derive] Ignore doctest in example
...
Causes linker errors for unknown reasons.
2024-11-22 00:00:05 +08:00
144f0922db
[core] coregen/types: Implement StructFields for NDArray
...
Also rename some fields to better align with their naming in numpy.
2024-11-21 14:27:00 +08:00
c58ce9c3a9
[core] codegen/types: Implement NDArray in terms of i8*
...
Better aligns with the future implementation of ndstrides.
2024-11-21 14:27:00 +08:00
f7e296da53
[core] irrt: Break IRRT into several impl files
...
Each IRRT file is now mapped to one Rust file.
2024-11-21 14:27:00 +08:00
b58c99369e
[core] irrt: Update some IRRT implementation
...
- Change CSlice to use `void*` for better pointer compatibility
- Only include impl *.hpp files in irrt.cpp
- Refactor typedef to using declaration
- Add missing ``// namespace`
2024-11-21 14:26:58 +08:00
1a535db558
[core] codegen: Add dtype to NDArrayType
...
We won't have this once NDArray is refactored to strided impl.
2024-11-20 15:35:57 +08:00