https://github.com/halide/Halide

sort by:
Revision Author Date Message Commit Date
26f6457 Merge remote-tracking branch 'origin/master' into abadams/unsigned_demosaic 11 October 2021, 21:03:06 UTC
96ca9bc Demosaic should be done unsigned So that we can use pavgw instructions and the like. Speeds it up slightly on x86 (5% or so) 11 October 2021, 21:01:24 UTC
1e40a71 Fix for top-of-tree LLVM (#6306) * Fix for top-of-tree LLVM * drive-by fix for other bad LLVM_VERSION checks 11 October 2021, 20:48:35 UTC
2a2c4b0 At some point llvm re-added pavgw intrinsics (#6302) * At some point llvm re-added pavgw intrinsics This is a good thing, because these do not reliably trigger from the pattern in runtime/x86.ll * Delete more dead code 10 October 2021, 21:06:57 UTC
2bfa567 Add ClampUnsafeAccesses pass. (#6294) * Add ClampUnsafeAccesses pass. Fixes #6131 Inject clamps around func calls h(...) when all the following conditions hold: 1. The call flows into an indexing context, such as: `f(x) = g(h(x))` or `let y = h(x) in f(x) = g(y)` 2. The FuncValueBounds of h are smaller than those of its type 3. h's allocation bounds might be wider than its compute bounds Condition (3) is not yet implemented see #6297. 08 October 2021, 18:52:29 UTC
c6529ed Modernize loops, part 4/final (#6296) * Modernize loops, part 4/final Final part getting code ready for clang-tidy's modernize-loop check, plus enabling the check * Update Module.cpp 08 October 2021, 01:21:42 UTC
0b297f2 Modernize loops, part 3 (#6295) * Modernize loops, part 3 Part 3 of getting code ready for clang-tidy's modernize-loop check * Update Func.cpp * Address review comments 07 October 2021, 20:04:57 UTC
e27db6f Don't set environment for RISCV Linux as apparently it is not (#6282) used. Should not change anything. Per issue: https://github.com/halide/Halide/issues/6281 07 October 2021, 16:26:52 UTC
ed87acb Modernize loops, part 2 (#6293) Part 2 of getting code ready for clang-tidy's modernize-loop check 07 October 2021, 00:50:51 UTC
9169734 [hannk] Add specialization for broadcast of input 0 (#6291) * [hannk] Add specialization for broadcast of input 0 Alternate fix for https://github.com/halide/Halide/pull/6290 that is Halide-only. * Update elementwise_generator.cpp * Oops, do Mul as well 06 October 2021, 20:51:06 UTC
71c47b3 Modernize loops, part 1 (#6292) Part 1 of getting code ready for clang-tidy's modernize-loop check: src/autoschedulers and src/runtime 06 October 2021, 20:37:26 UTC
81b34e2 Remove unbound variable in documentation (#6287) In the example for RDom::where, the simplified case contains a free occurence of `r.x`, which should be replaced with `10` since we are in the case `r.x == 10`. 05 October 2021, 16:32:59 UTC
da7c66e Make parking_control (etc) use vtables (#6275) * Make parking_control (etc) use vtables This class hierarchy is clearly best modeled with virtual methods (rather than fn ptrs), but was not; we *think* this was due to COMDAT issues that have been resolved by other means. I refactored this to use virtual methods instead (and removed the unused unpark_all function); it seems to work locally. * Add -fno-rtti to runtime compile flags (needed to allow vtables in runtime code) * make all overrides 'final' * Make virtual methods protected * Make structs final too * pacify clang-tidy 04 October 2021, 16:33:15 UTC
2495bcc Remove hopefully dead code. (#6280) 02 October 2021, 17:38:40 UTC
81ad45e compiler stack usage improvements (#6239) * Reduce compiler stack usage, and grant more control over stack usage I found some code in the wild that needs 9mb of stack to lower. It's a pain to even diagnose the problem definitively, because it requires plumbing platform-specific linker flags to grant more stack. This commit: - Reduces peak stack usage of similar code in the repo (the FFT) - Increases the stack size for lowering and codegen to 32mb on all platforms, using stack switching techniques. We started doing this on Windows a while ago and it hasn't bitten us, so let's try on more platforms. - Gives user control over the amount of stack used for lowering and codegen. It shouldn't be necessary except when diagnosing problems like this in future. Using the control I was able to determine that the correctness tests all pass with 500k of stack, and the apps all pass with 1MB, so 32MB ought to be enough for anybody. I found a never-checked-in test for the mux helper which uses 10MB of stack and really shouldn't need to, so I added that (and opened an issue) as an example of how to grant more stack when necessary, even though 10MB is less than our default now. Also fixed an incorrect comment on the Block node. * Fixes for macos * Add test to cmake * Fix type of temporary * Reduce number of exprs in the mux * Fix quadratic memory usage in new test * Better comment * Variable name fix * Try giving windows a little more stack * Clarify why we want a live Stmt in scope * Review comments * Check some return values * tickle buildbots * Fixes for arm macos * Remove stray character * clang-tidy had some reasonable concerns * Comment fix * Maybe windows needs yet more stack Co-authored-by: Steven Johnson <srj@google.com> 01 October 2021, 21:41:29 UTC
4b9f728 Remove more obsolete MachO/COMDAT workarounds (#6274) * Remove more obsolete MachO/COMDAT workarounds (Followup to #6272) * Update metal.cpp * A few more fixes 30 September 2021, 17:16:12 UTC
ef387ad Minor cleanups in thread_pool_common.h (#6276) Minor hygiene noticed when doing other patches: - prefer `constexpr int` over `#define`, since we can now use C++17 in runtime code - remove redundant def of MAX_THREADS - use `do .. while (0)` idiom for functional macros 30 September 2021, 17:03:07 UTC
a8d7013 Remove the runtime/ssp module (#6277) * Remove the runtime/ssp module It doesn't get included via *any* path in the runtime linker, and removing it doesn't seem to affect any tests. (I haven't looked at the revision history to see when it was added and/or when inclusion of it was removed.) * Update LLVM_Runtime_Linker.cpp * Update LLVM_Runtime_Linker.cpp 30 September 2021, 02:09:12 UTC
e092c01 Fix alignment issues in synchronization_common.h (#6272) * Fix alignment issues in synchronization_common.h To work around old COMDAT issues, we allocated the table as a char array and cast it to what we want; unfortunately this doesn't guarantee the right alignment for the table and in some environments (eg wasm) we can get unaligned-access failures. We could fix this by forcing the right alignment, but since we fixed COMDAT issues in another way a while back (adding smarts to LLVM_Runtime_Linker), let's just remove the hack and declare it normally. Also added some drive-by changes to ensure that the hashtable size and HASH_TABLE_BITS were safe (this happened to be the case before but wasn't enforced), and also to init all the fields in hash_bucket. (Q: do we really need `check_hash()` to exist? With the mods in place above, is it possible for addr_hash() to return a bad index?) * Always use HASH_TABLE_BITS in addr_hash() * Only use check_hash() in DEBUG_RUNTIME builds 29 September 2021, 23:08:38 UTC
4307645 [Hexagon] Remove qurt_init_fini (#6271) Including qurt_init_fini generates the below error: dlopenbuf failed: undefined symbol #140 __DTOR_LIST__ Including qurt_init_fini was needed when the pipeline was loaded using mmap. This is not needed now. Co-authored-by: Ankit Aggarwal <aankit@quicinc.com> 29 September 2021, 16:56:34 UTC
e836ea6 CMake: install docs into halide subdirectory of doc dir (#6267) 28 September 2021, 08:36:38 UTC
8fbc788 [hannk] Add Make target to rebuild just the Halide-generated code. (#6265) * [hannk] Add Make target to rebuild just the Halide-generated code. Also, drive-by comment fix about disabling Fortran (!) when building for Android. * More changes 27 September 2021, 17:12:25 UTC
ebb9f19 Usage of C++ `<thread>` header requires linking to threading library (#6257) * Usage of C++ `<thread>` header requires linking to threading library `Generator.cpp` and `ThreadPool.h` both `#include <thread>`, but don't link to the threading implementation. This fixes build for me on debian sid, which is failing otherwise with: ``` $ ninja [ 0% 2/1480][ 0% 0:00:00 + 0:33:06] Linking CXX executable src/autoschedulers/adams2019/get_host_target FAILED: src/autoschedulers/adams2019/get_host_target : && /usr/local/bin/clang++ -pipe -O3 -DNDEBUG src/autoschedulers/adams2019/CMakeFiles/get_host_target.dir/get_host_target.cpp.o -o src/autoschedulers/adams2019/get_host_target -Wl,-rpath,/repositories/halide/build/src: src/libHalide.so.13.0.0 && : ld: error: /usr/lib/gcc/x86_64-linux-gnu/11/libstdc++.so: undefined reference to pthread_create [--no-allow-shlib-undefined] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ 0% 5/1480][ 0% 0:00:00 + 0:12:47] Linking CXX executable src/autoschedulers/adams2019/test_apps_autoscheduler FAILED: src/autoschedulers/adams2019/test_apps_autoscheduler : && /usr/local/bin/clang++ -pipe -O3 -DNDEBUG src/autoschedulers/adams2019/CMakeFiles/test_apps_autoscheduler.dir/test.cpp.o -o src/autoschedulers/adams2019/test_apps_autoscheduler -Wl,-rpath,/repositories/halide/build/src src/libHalide.so.13.0.0 -ldl && : ld: error: /usr/lib/gcc/x86_64-linux-gnu/11/libstdc++.so: undefined reference to pthread_create [--no-allow-shlib-undefined] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ 0% 7/1480][ 0% 0:00:00 + 0:08:53] Linking CXX executable src/autoschedulers/adams2019/test_function_dag FAILED: src/autoschedulers/adams2019/test_function_dag : && /usr/local/bin/clang++ -pipe -O3 -DNDEBUG src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/test_function_dag.cpp.o src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/FunctionDAG.cpp.o src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/ASLog.cpp.o -o src/autoschedulers/adams2019/test_function_dag -Wl,-rpath,/repositories/halide/build/src src/libHalide.so.13.0.0 && : ld: error: /usr/lib/gcc/x86_64-linux-gnu/11/libstdc++.so: undefined reference to pthread_create [--no-allow-shlib-undefined] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ 0% 9/1480][ 0% 0:00:00 + 0:06:41] Linking CXX executable src/autoschedulers/li2018/gradient_autoscheduler_test_cpp FAILED: src/autoschedulers/li2018/gradient_autoscheduler_test_cpp : && /usr/local/bin/clang++ -pipe -O3 -DNDEBUG src/autoschedulers/li2018/CMakeFiles/gradient_autoscheduler_test_cpp.dir/test.cpp.o -o src/autoschedulers/li2018/gradient_autoscheduler_test_cpp -Wl,-rpath,/repositories/halide/build/src src/libHalide.so.13.0.0 && : ld: error: /usr/lib/gcc/x86_64-linux-gnu/11/libstdc++.so: undefined reference to pthread_create [--no-allow-shlib-undefined] clang: error: linker command failed with exit code 1 (use -v to see invocation) [ 2% 35/1480][ 0% 0:00:00 + 0:05:09] Generating included_schedule_file.runtime.o ninja: build stopped: subcommand failed. ``` * Dommy commit to retrigger bots 24 September 2021, 16:13:58 UTC
11ec1dc Remove remaining bits of LLVM10 support (#6245) Update various parts of the source that still assume LLVM10 is supported. (We probably need to update the buildbots as well before this lands.) 17 September 2021, 21:14:21 UTC
95198a7 Remove torch/extension dependency and fix PyTorch example, adding the correct (GPU) autoscheduler (#6234) * fix static op warning * add backward * removes "torch/extension.h" dependency * suppress grad check warnings * simplifies CUDA PyTorch bindings, remove HL_PT_CUDA define * fix gradient for scalar parameter * fix style issues * Update CodeGen_PyTorch.cpp 15 September 2021, 21:47:31 UTC
2d0ac72 Modify hexagon_remote/Makefile to allow defining C++ #defines on the command line (#6243) * Modify hexagon_remote/Makefile to allow defining C++ #defines on the command line * Update Makefile 14 September 2021, 23:41:33 UTC
fdcf140 Improve the code quality of scalarized code (#6218) * Improve the quality of scalarized predicated loads. * Add assert * clang-format * We can't assume this assert won't be hit. * Fix implementation of single lane shuffles in deinterleave. 14 September 2021, 20:27:54 UTC
10e4e8e Fall through to LLVM for unknown shuffles on Hexagon (#6237) * Fall through to LLVM for unknown shuffles on Hexagon. * Don't fall back to LLVM, use vdelta instead. * Fix vdelta patterns 13 September 2021, 18:27:59 UTC
d80e5d8 Join generator watchdog timer if exception thrown (#6240) Make sure to join the generator watchdog timer when an exception is thrown. Otherwise the error message gets swallowed entirely and you just get "terminate called without an active exception" Also rejiggered the watchdog to do a timed wait on a condition variable instead of polling every 100ms. 10 September 2021, 19:31:17 UTC
b78b205 Upgrade clang-format and clang-tidy to LLVM-12 (#6233) 02 September 2021, 17:58:52 UTC
24d6bd6 Hoist unrolled prefetches to top of the block (#6230) * Hoist unrolled prefetches to top of the block When a loop with prefetch is unrolled, the prefetch instructions getting scattered through the loop can cause LLVM codegen issues in some cases (see https://bugs.llvm.org/show_bug.cgi?id=51172). As a partial mitigation for that issue, this PR adds a pass to hoist all prefetch instructions to the top of their loop. This is still a bit experimental; it definitely addresses the codegen issues we see, but makes the use of prefetch potentially less effective (since the hoisted prefetch may be too far from the eventual use to be effective). * appease clang-tidy * Avoid quadratic behavior * Use template instead of std::function * Require prefetch offset to be pure 29 August 2021, 20:02:34 UTC
085e11e Rename inner version of bounds_of_expr_in_scope (#6232) It's not in the explicit namespace that it's requested in (Halide::Internal), so turning on that debugging code results in compile failures. I just gave it a different name to disambiguate. 27 August 2021, 21:00:14 UTC
c860cab Add modernize-make-shared and modernize-make-unique to .clang-tidy and fix warnings (#6222) * Add modernize-make-shared and modernize-make-unique to .clang-tidy and fix warnings * std::initializer_list instead of std::vector * Update Pipeline.h 25 August 2021, 17:36:14 UTC
f43f016 More prefetch fixes (#6226) * More prefetch fixes - Arguments to Call::prefetch() must be scalars, not vectors - Add more testcases to correctness_prefetch Addresses more of #6219 (but still not the title issue, i.e. ignoring offset) * Fix horrific bug * Have CodeGen_C emit the same arguments for __builtin_prefetch() as the runtime module * Minor cleanup * Explicitly pass target thru * Fix correctness_prefetch for host-hvx * Add comments 24 August 2021, 22:25:57 UTC
d507b9a Fix bug in prefetch() (#6225) In #6155, we incorrectly assume that we can qualify the 'from' prefetch var by just adding 'prefix'; this isn't true if (e.g.) there are any splits involved. Instead, we need to walk through the active loops to find a suitable match. In addition, if no match is found, we now fail with an error (rather than quietly doing something undefined), as the 'from' var is required to be from an active loop. (Addresses some-but-not-all of #6219) 23 August 2021, 21:46:26 UTC
30040cd Prefetch cleanup (#6220) * Use std::move where appropriate * Prefetch cleanup This is (mostly) a cleanup pass to make the flow of Prefetch injection & lowering more obvious to the reader of the code (via commenting and minor code restructuring). Notable exception: the HVX backend processing of Call::prefetch (and relevant runtime code) was refactored to make it (IMHO) less janky. (Also some drive-by insertions of std::move where appropriate) 23 August 2021, 16:31:16 UTC
7c437e4 fix #6207 (#6214) Co-authored-by: Steven Johnson <srj@google.com> 22 August 2021, 20:27:39 UTC
7aafbb9 Fix wasm simd issues (#6217) - f64x2.convert_low_i32x4_s/u are now generating proerly at top-of-tree, so re-enable them - f64x2.promote_low_f32x4 is temporarily broken for larger vector widths, so disable it for now (issue is reported and fix is underway) Also, driveby change to .gitignore. 20 August 2021, 22:53:06 UTC
ed5e1e1 Use C++17 structured binding instead of std::tie (#6213) * Use C++17 structured binding instead of std::tie * appease clang-tidy 20 August 2021, 22:25:50 UTC
7079ff2 Fix for upcoming LLVM API change (#6212) 20 August 2021, 19:11:41 UTC
06e8865 Fix issues with predicated interleaving stores on Hexagon (#6211) * Fix issues with predicated interleaving stores on Hexagon. * Fix buffer API usage issue. * Add default device API support for Hexagon. * More DeviceAPI support 20 August 2021, 02:11:04 UTC
c61a930 Fix unroll failures from adams2019 when the Expr depends on estimates (#6200) * track depends_on_estimate in BoundsInfo - fix bounds_are_constant 19 August 2021, 17:06:04 UTC
d653a73 Add IRMutator::mutate_exprs() (#6203) * Add IRMutator::mutate_exprs() There's a common pattern in many IRMutators that is "mutate a vector<Expr> and optionally let me know if anything is different". (Note, this uses C++17 structured-binding syntax, which we previously weren't using in Halide. Objections?) This adds a shared utility method (well, two, thanks to VariadicVisitor) and plus in the usage in all the places that seemed obvious. I doubt this moves the needle on speed in either direction, but makes for smaller code. * Silence warnings * Update Inline.cpp * Update ParallelRVar.cpp * Update SplitTuples.cpp * Update StorageFlattening.cpp * Revisions 17 August 2021, 21:15:38 UTC
d811a3f More augmentation of debugging code (#6185) * More augmentation of debugging code This expands on #6182 by added tracking for BoxesTouched, and integrating the nesting levels with the previous code. This allows a more complete vision of what's happening during bounds calculation. * Minor fixes * Unexpose indent 16 August 2021, 20:34:58 UTC
72284a2 unsafe_promise_clamped() should be pure (#6199) As discussed in https://github.com/halide/Halide/pull/6189, this intrinsic should probably be Pure. 13 August 2021, 19:12:07 UTC
a081660 Add information to comment on ```align_loads```. (#6196) * Add information to comment. * Wording improvement. 12 August 2021, 21:06:38 UTC
3b7e1ba [hannk] Remove alignment requirements for shallow DepthwiseConv ops (#6198) * [hannk] Remove alignment requirements for shallow DepthwiseConv ops * Update depthwise_conv_generator.cpp 12 August 2021, 20:55:14 UTC
6229afa Upgrade apps/hannk to TFLite 2.6 (#6197) * Upgrade apps/hannk to TFLite 2.6 * Remove scalpel left in patient 12 August 2021, 20:15:28 UTC
69075b4 Internal::promise_clamped() should be pure (Fixes #6186) (#6189) * ApplySplit should use pure promise_clamped() (Fixes #6186) * Make all promise_clamped calls pure * pure_promise_clamped -> promise_clamped 12 August 2021, 19:51:15 UTC
2394250 [Hexagon] Do not pattern match inside if_then_else block (#6194) * Do not pattern match inside if_then_else block Resolves the compilation below compilation error while generating hannk::upsample_channels_uint8 from hannk/depthwise_conv.generator: Unknown intrinsic dynamic_shuffle The problem occurs when we pattern match hvx instrinsics inside if_then_else nodes and try to scalarize them later. In the patch we prevent matching these intrinsics inside if_then_else blocks. * Do not match for only vector types * pattern match for scalars and scalar-broadcasts Co-authored-by: Ankit Aggarwal <aankit@quicinc.com> 12 August 2021, 17:06:00 UTC
43b412b Update WABT version to latest release (1.0.24) (#6193) 12 August 2021, 17:02:52 UTC
b7fa882 Fix unused-variable warning-as-error (#6192) The latest Emscripten compilers will complain about this. 11 August 2021, 21:28:10 UTC
67802cf Add memmove to WasmExecutor callbacks (#6191) Some not-yet-landed variants of the wasm toolchain+runtime environments need this. 11 August 2021, 18:53:36 UTC
e8b5837 Add a watchdog timer to Generator (#6184) * Add a watchdog timer to Generator In degenerate conditions (eg, bugs in Halide or LLVM, or pathological user code), running a Generator can take arbitrarily long times (we recently found some buildbots that had Generators that had been running for several days). This adds a simple background thread to generator_main() to ensure that compilations don't take unreasonable lengths of time. It defaults to 15 minutes of wall-clock time, but can be customized by the -t flag. * Update Generator.cpp 11 August 2021, 17:33:13 UTC
fb44637 Augment debugging code (#6182) * Augment debugging code I upgraded some debugging code in AddImageChecks and Bounds while tracking down a bug, and I think the upgrades are worth keeping for future use. * clang-format * Minor changes per comments * clang-format 10 August 2021, 22:26:10 UTC
d249fa0 Update tutorial todos (#6161) This is based on our discussion in the dev meeting. Feel free to suggest changes. 06 August 2021, 19:24:14 UTC
451cfa8 Add argv and metadata support to C++ backend (Issue #2071) (#6179) * Add argv and metadata support to C++ backend (Issue #2071) * legalize_name-> c_print_name * Fix user_context handling 06 August 2021, 15:58:33 UTC
2e229f5 Rewrite Rules Evaluation Project - Merging Relevant Synthesized Rewrite Rules (#6174) Conducted experiments to analyze the performance effects of adding 4000+ synthesized rewrite rules to Halide. Narrowed down the rules to 11 rewrite rules whose associative & commutative variants are added in this PR. With these rewrite rules, Halide achieves >10% peak memory reductions in 192 cases in apps including camera_pipe, harris, nl_means, and stencil_chain, which is similar to the results (with all 4000+ rules) from this paper - https://dl.acm.org/doi/pdf/10.1145/3428234 04 August 2021, 04:54:30 UTC
8b26454 Add more fine-grained prefetch() directive (Issue #3735) (#6155) Add more fine-grained prefetch() directive (Issue #3735) 03 August 2021, 20:06:53 UTC
4f8629c Fix broken wasm-simd extmul instructions due to changes from https://reviews.llvm.org/D106724 (#6177) 03 August 2021, 00:49:54 UTC
0a09bfb Fix for trunk LLVM (#6176) * Fix for trunk LLVM * More Fixes 02 August 2021, 21:14:12 UTC
e52d6ca Fix Xcode issue that requires at least one source file when building a library from objects. (#6175) * Fix Xcode issue that requires at least one source file when building a library from objects. Fixes #6167 * add newline to end of file 31 July 2021, 04:43:06 UTC
a7e8c43 Partial revert of 8f849ae6514e83f8bf94d05e452a467df352f74c (only (#6173) reverting halide_remote.cpp). 29 July 2021, 15:53:11 UTC
36f6b8c Use generic build command instead of make. Fixes #6163 (#6169) 28 July 2021, 17:53:33 UTC
2b8ec44 Remove deprecated realize() Python wrapprs (#6162) The C++ versions were removed in #6122, but the Python equivalents were overlooked. 27 July 2021, 14:57:41 UTC
a5585cb Add various bounds-related simplifier rules (#6160) * add simplifier rules 27 July 2021, 02:07:40 UTC
2ab9a56 De-predicate loads and stores in Metal/OpenCL/D3D12 backend (#6158) * Depredicate loads and stores in Metal backend * Fix typo. * Mark override, add additional using * float_t -> float * Update CMakeLists.txt * clang-format * Also scalarize in D3D12 and OpenCL * use const_true() helper 24 July 2021, 13:55:32 UTC
b68393c [hannk] Add a --csv flag to compare_vs_tflite (#6149) * [hannk] Add optional taskset support to the run_on_device scripts * [hannk] Add a --csv flag to compare_vs_tflite This lets us output results in CSV format for easy copy/paste into (eg) spreadsheets. 21 July 2021, 23:08:12 UTC
025a9b9 Handle depth_multiplier != 1 in a separate op (#6154) * Implement depth_multiplier != 1 in a separate op. * Fix build on GCC * Remove stale comment * clang-format * Add more comments to inv_depth_multiplier 21 July 2021, 22:11:55 UTC
9d7284b Move quantization to a helper function depending on the target (#6150) * Move quantization + relu to a helper function depending on the target. * clang-format * x86 has these too actually * Fix typo 20 July 2021, 20:50:14 UTC
5ca8cdf Generalize Conv2D to be a Conv of any dimensionality (#6146) * Generalize Conv2D to be a Conv of any dimensionality. * clang-format 20 July 2021, 16:43:26 UTC
5812f33 Configurable minimum size for alignment in align_loads (#6143) Co-authored-by: Steven Johnson <srj@google.com> 20 July 2021, 15:45:49 UTC
b457d3c Add support for int16 output in Conv2D (#6145) This allows us to convert all (currently supported) FC ops into Conv2D ops. Remove all the FC-specific Halide and Op code. 20 July 2021, 02:16:25 UTC
9d1e1e3 [hannk] Rewrite FC in terms of Conv2D (#6144) * [hannk] Rewrite FC in terms of Conv2D FullyConnected is very similar to Conv2D, so rather than maintaining multiple similar implementations, let's translate a FullyConnected node into a Conv2D node (with some Reshape nodes as necessary). Note that we keep the old FC logic for int16 outputs, as Conv2D doesn't support those yet; if this PR is landed, a followup PR will add that ability to Conv2D, and the existing FC support will be removed entirely. 20 July 2021, 00:33:52 UTC
bd7ebf5 Fix for top-of-tree LLVM (#6142) * Fix for top-of-tree LLVM 19 July 2021, 19:27:44 UTC
557c8e4 Fix Hexagon vrmpy with 16-bit results (#4248) (#6137) * Fix #4248 * clang-format 16 July 2021, 17:56:05 UTC
769b855 Add optimization for corner case in conv (#6139) * Add silly optimization for weird cases. * Use transpose 15 July 2021, 16:22:28 UTC
42e1d45 [hannk] Allow aliasing of Reshape tensors (#6138) * Allow aliasing of Reshape tensors Previously we didn't allow this because aliased tensors had to have the same rank, which is ~never the case for Reshape. Aliasing for Reshape is a huge win because it essentially becomes a no-op rather than a memcpy. Running against standard set of models shows no regression in differences vs. tflite. 15 July 2021, 16:02:00 UTC
19f2bc7 Reduce verbosity of compare_vs_tflite further (#6136) 14 July 2021, 00:20:25 UTC
802c22a Don't reinterpret cast when codegenning vector concat (#6125) It confuses the HVX LLVM backend, and shouldn't be necessary anyway. 13 July 2021, 23:13:02 UTC
77207a5 Optimize shallow depthwise convolutions (#6134) * Add TailStrategy::PredicateLoads and TailStrategy::PredicateStores * Different compilers * PredicateStores is faster than specialize + ShiftInwards * Update comments. * Allow PredicateStores for RVars * Fix test to avoid realize bounds query issues. * Add comments. * clang-format * predicate* is not pure * Fix documentation bugs * Don't allow PredicateStores for reductions. * Substitute more strongly around Provide * Change these back to pure for now to satisfy some logic in ScheduleFunctions * Fix use after free of pred. * Update comments. * Refactor implementation of predication * Visit predicates * Partition loops with predicated loads/stores. * Clean up ApplySplit * Fix inappropriate predicated vectorization of VectorReduce * De-dup GuardWithIf and Predicate * These also handle scalar predicated loads/stores. * Print provide predicates * Don't allow predicated non-innermost splits. * Remove debugging code * Forgot to add new file * Add test to CMake build * Fix bug in simplification of extract_element * Fix issue with mixing uses of guarded expressions inside and outside calls. * Don't lift impure exprs. * clang-format * clang-format again * Add "shallow" version of depthwise for small numbers of channels. * Better name for input_stride_x * Fix performance regression in deep case. * Update performance * Missed rename * Enable tiling of shallow case. * Require x be a dummy dim for shallow depthwise * Small cleanup to avoid ternary * clang-format * Can't use shallow depthwise when stride_x != 1 13 July 2021, 23:04:21 UTC
a762c34 Add TailStrategy::PredicateLoads and TailStrategy::PredicateStores (#6126) * Add TailStrategy::PredicateLoads and TailStrategy::PredicateStores * Different compilers * PredicateStores is faster than specialize + ShiftInwards * Update comments. * Allow PredicateStores for RVars * Fix test to avoid realize bounds query issues. * Add comments. * clang-format * predicate* is not pure * Fix documentation bugs * Don't allow PredicateStores for reductions. * Substitute more strongly around Provide * Change these back to pure for now to satisfy some logic in ScheduleFunctions * Fix use after free of pred. * Update comments. * Refactor implementation of predication * Visit predicates * Partition loops with predicated loads/stores. * Clean up ApplySplit * Fix inappropriate predicated vectorization of VectorReduce * De-dup GuardWithIf and Predicate * These also handle scalar predicated loads/stores. * Print provide predicates * Don't allow predicated non-innermost splits. * Remove debugging code * Forgot to add new file * Add test to CMake build * Fix bug in simplification of extract_element * Fix issue with mixing uses of guarded expressions inside and outside calls. * Don't lift impure exprs. * clang-format * clang-format again 13 July 2021, 21:54:11 UTC
867b6c8 [hannk] Make compare_vs_tflite with --verbose 0 less noisy (#6135) Minor fixes to eliminate noise. 13 July 2021, 20:01:21 UTC
e705253 [hannk] Implement greedy algorithm in AllocationPlanner (#6117) * [hannk] Rework most of hannk's Tensor storage to be arena-based. * Update interpreter.cpp * Restore get_tensor * clang-format * Add missing include * Fix arena alignment issues * Remove redundant assert * Rework AllocationPlanner API a bit * [hannk] Implement greedy algorithm in AllocationPlanner This uses a basic greedy approach to doing an allocation plan for tensors in hannk. Initial testing shows exact result matches between old and new code. Drive-by changes: - Change Interpreter's `verbose` -> `verbosity` to allow more output granularity, and update callers as needed. - Fix two places in ModelRunner that should have called the function hooks rather than the functions directly. * clang-format * Add missing includes * Add missing includes * trigger buildbots * Minor fixes and comments in AllocationPlanner * Suggested fixes 13 July 2021, 01:17:41 UTC
3e9cb4f Fix wasm regression at ToT LLVM (#6132) llvm.wasm.promote.low was removed. Calling fpext directly is the preferred approach now. 12 July 2021, 23:22:05 UTC
a2c47a9 [Hexagon] Use LLVM masked stores. (#6129) * [Hexagon] Use LLVM masked stores. Letting CodeGen_LLVM handle predicated stores for Hexagon allows us to generate HVX predicated stores instead of scalar predicated stores. * Corrections to run haank on hexagon-sim Co-authored-by: Ankit Aggarwal <aankit@quicinc.com> 08 July 2021, 19:22:22 UTC
f48a8da Adding padding byte size to outermost header byte count in MATLAB5 file format. (#6128) Adding padding byte size to outermost header byte count when writing MATLAB5 file format matrix. This ensures SciPy will successfully read files written by this routine. 07 July 2021, 23:33:53 UTC
27a2348 Track argument change to LLVM's CreateMaskedLoad. (#6130) 07 July 2021, 23:31:06 UTC
a914574 [Hexagon] Makefile changes for hannk on Hexagon (#6066) * [Hexagon] Makefile changes for hannk on Hexagon Initial commit to get hannk app. Works on device. Qurt crash on sim. * Add missing file stubs.c * Run clang-format * correction * clang-format * clang-format * address comments * Run all tests * sim-constants in seperate file * add file * Changes * changes Co-authored-by: Ankit Aggarwal <aankit@quicinc.com> Co-authored-by: Steven Johnson <srj@google.com> 02 July 2021, 04:56:36 UTC
240f6a3 Use bound_correlated_differences in find_constant_bounds (#6059) * move PartiallyCancelDifferences to outside of SimplifyCorrelatedDifferences * add a rule to address #6044 correlation * use bound_correlated_differences in find_constant_bounds 01 July 2021, 14:55:28 UTC
f7aa53b Remove deprecated realize() variants from Func and PIpeline (#6122) These were deprecated in Halide 12. Let's remove them for Halide 13. 30 June 2021, 19:24:19 UTC
d1d7359 Relax overzealous pruning rule (#6115) We don't allow schedules that fuse to the extent that we can no longer vectorize. This was implemented incorrectly though. The check assumed that something was going to be compute_at inside the innermost loop, and neglected the possibility that we were about to tile that loop. 29 June 2021, 23:15:12 UTC
84b78da Fix potential undefined behavior in `set_flag` (#6118) Previously, the Clang UndefinedBehaviorSanitizer (UBSan) complained about potential undefined behavior in `halide_buffer_t::set_flag` because the enum `halide_buffer_flags` is interpreted as an int32_t and implicitly converted to a uint64_t: ``` runtime error: implicit conversion from type 'int' of value -2 (32-bit, signed) to type 'unsigned long' changed the value to 18446744073709551614 (64-bit, unsigned) ``` On most compilers and hardware, this causes no issues, since the conversion and implementation of `set_flag` together produce the expected behavior still. However, it is better to be on the safe side and make the explicit conversion to a uint64_t before doing the bitwise negation. This change makes sure the conversion from int32_t is made before the bitwise negation, which fixes the potential undefined behavior and keeps UBSan from complaining. 29 June 2021, 22:27:00 UTC
1b7f369 [hannk] Rework most of hannk's Tensor storage to be arena-based. (#6104) * [hannk] Rework most of hannk's Tensor storage to be arena-based. 29 June 2021, 16:30:51 UTC
408a277 Float16 support in CodeGen_ARM (#6102) * Add definition of Target::ARMFp16 Add the definition of the feature for ARMv8.2-a half-precision floating point data processing * Added test to generate 'float16' neon assembly; * Add check for data type in float16 NEON test The test simd_op_check doesn't check the suffix of operand which indicates the data type in case of AArch64 NEON instruction. e.g. FADD V0.4S, V0.4S, V0.4S In order to distinguish instruction of fp16 from fp32, the suffix such as ".4S" in the above needs to be checked. * Generate float16 Arm aarch64 LLVM-IR Armv8-a extension of Half-precision floating point data processing is supported by CodeGen_ARM. The target needs to be set as 64-bit with "arm_fp16" feature. 32-bit is not supported in this commit. Upgrading fp16 to fp32 with emulated conversion is replaced with either fp16 native instruction or fp32 operation with native type conversion of fp16-fp32 * Fix format and comments for arm_fp16 feature Co-authored-by: Liam O'Neil <liam.oneil@arm.com> 28 June 2021, 17:57:29 UTC
bfd9cea Update LoopNest.cpp (#6086) Remove obsolete assert for output accessing other outputs 28 June 2021, 17:23:32 UTC
2816567 Enable ubuntu packaging (#6113) * Revert "Disable Ubuntu Packaging Action (Issue #6111) (#6112)" This reverts commit 3f3dd702 * Explicitly update to avoid out of date package lists. Fixes #6111 26 June 2021, 00:39:42 UTC
0da1354 Avoid pathological cases in halide_benchmark() (#6110) In the variant that tries to compute a good samples/iters value based on min_time, there's a pathological case if the environment's timer is relatively coarse, and the op being profiled is relatively fast; in this case, you can end up with timings that are very close to zero (or *literally* zero), and our attempt to calculate the number of iterations can explode into the billions, making the benchmark appear to hang (as it may take an absurd length of time to run). To fix this, add a maximum value for iters_per_sample, and smarten the calculation for when the measured time is tiny. 25 June 2021, 23:24:33 UTC
3f3dd70 Disable Ubuntu Packaging Action (Issue #6111) (#6112) * Disable Ubuntu Packaging Action (Issue #6111) 25 June 2021, 21:38:28 UTC
7791e84 Remove floats from extern_producer (#6109) * Don't rely on floats/trig unnecessarily * Use different period 24 June 2021, 18:23:48 UTC
back to top