Commit 89cae45
authored
Optimized arithmetic methods for strided triangular matrices (#52571)
This uses broadcasting for operations like `A::UpperTriangular +
B::UpperTriangular` in case the parents are `StridedMatrix`es. Looping
only over the triangular part is usually faster for large matrices,
where presumably memory is the bottleneck.
Some performance comparisons, using
```julia
julia> U = UpperTriangular(rand(1000,1000));
julia> U1 = UnitUpperTriangular(rand(size(U)...));
```
| Operation | master | PR |
| --------------- | ---------- | ----- |
|`-U` |`1.011 ms (3 allocations: 7.63 MiB)` |`559.680 μs (3 allocations:
7.63 MiB)` |
|`U + U`/`U - U` |`971.740 μs (3 allocations: 7.63 MiB)` | `560.063 μs
(3 allocations: 7.63 MiB)` |
|`U + U1`/`U - U1` |`3.014 ms (9 allocations: 22.89 MiB)` | `944.772 μs
(3 allocations: 7.63 MiB)` |
|`U1 + U1` |`4.509 ms (12 allocations: 30.52 MiB)` | `1.687 ms (3
allocations: 7.63 MiB)` |
|`U1 - U1` |`3.357 ms (9 allocations: 22.89 MiB)` | `1.763 ms (3
allocations: 7.63 MiB)` |
I've retained the existing methods as fallback, in case there's current
code that works without broadcasting.1 parent fe0db7d commit 89cae45
2 files changed
+107
-14
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| |||
156 | 157 | | |
157 | 158 | | |
158 | 159 | | |
159 | | - | |
160 | | - | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
161 | 180 | | |
162 | 181 | | |
163 | 182 | | |
| |||
481 | 500 | | |
482 | 501 | | |
483 | 502 | | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
484 | 508 | | |
485 | 509 | | |
486 | 510 | | |
| |||
719 | 743 | | |
720 | 744 | | |
721 | 745 | | |
| 746 | + | |
| 747 | + | |
| 748 | + | |
| 749 | + | |
| 750 | + | |
| 751 | + | |
| 752 | + | |
| 753 | + | |
| 754 | + | |
| 755 | + | |
722 | 756 | | |
723 | 757 | | |
724 | 758 | | |
| |||
918 | 952 | | |
919 | 953 | | |
920 | 954 | | |
| 955 | + | |
921 | 956 | | |
922 | 957 | | |
| 958 | + | |
923 | 959 | | |
924 | 960 | | |
925 | | - | |
| 961 | + | |
926 | 962 | | |
927 | | - | |
| 963 | + | |
928 | 964 | | |
929 | | - | |
| 965 | + | |
930 | 966 | | |
931 | 967 | | |
932 | 968 | | |
| 969 | + | |
933 | 970 | | |
934 | 971 | | |
935 | | - | |
| 972 | + | |
936 | 973 | | |
937 | | - | |
| 974 | + | |
938 | 975 | | |
939 | | - | |
| 976 | + | |
940 | 977 | | |
941 | 978 | | |
942 | 979 | | |
| 980 | + | |
943 | 981 | | |
944 | 982 | | |
945 | | - | |
| 983 | + | |
946 | 984 | | |
947 | 985 | | |
948 | | - | |
| 986 | + | |
949 | 987 | | |
950 | | - | |
| 988 | + | |
951 | 989 | | |
952 | 990 | | |
953 | 991 | | |
| 992 | + | |
954 | 993 | | |
955 | 994 | | |
956 | | - | |
| 995 | + | |
957 | 996 | | |
958 | 997 | | |
959 | | - | |
| 998 | + | |
960 | 999 | | |
961 | | - | |
| 1000 | + | |
962 | 1001 | | |
963 | 1002 | | |
964 | 1003 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
526 | 526 | | |
527 | 527 | | |
528 | 528 | | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
529 | 546 | | |
530 | 547 | | |
531 | 548 | | |
| |||
894 | 911 | | |
895 | 912 | | |
896 | 913 | | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
897 | 919 | | |
898 | 920 | | |
899 | 921 | | |
| |||
911 | 933 | | |
912 | 934 | | |
913 | 935 | | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
914 | 968 | | |
0 commit comments