https://github.com/halide/Halide

sort by:
Revision Author Date Message Commit Date
07d850d Merge branch 'srj/abstract-generator' into srj/pygen-deux 12 May 2022, 16:48:26 UTC
cbc3e87 Merge branch 'main' into srj/abstract-generator 12 May 2022, 16:43:10 UTC
b38b661 Deprecate disable_llvm_loop_opt (#4113) (#6754) This PR proposes to (finally) deprecate disable_llvm_loop_opt: - make LLVM codegen default to no loop optimization; you must use enable_llvm_loop_opt explicitly to enable it - disable_llvm_loop_opt still exists, but does nothing (except issue a user_warning that the feature is deprecated) - Remove various uses of disable_llvm_loop_opt - Add comments everywhere that the default is different in Halide 15 and that the disable_llvm_loop_opt feature will be removed entirely in Halide 16 Note that all Halide code at Google has defaulted to having disable_llvm_loop_opt set for ~years now, so this is a well-tested codepath, and consensus on the Issue seemed to be that this was a good move. 10 May 2022, 20:58:26 UTC
fc227a0 Merge branch 'srj/abstract-generator' into srj/pygen-deux 10 May 2022, 17:33:36 UTC
128660d Restore build_module() and build_gradient_module() methods 10 May 2022, 17:30:09 UTC
9680fd3 Merge branch 'srj/abstract-generator' into srj/pygen-deux 10 May 2022, 01:14:04 UTC
6470a74 Merge branch 'main' into srj/abstract-generator 10 May 2022, 01:10:59 UTC
a2e89d8 Add GeneratorFactoryProvider to generate_filter_main() (#6755) * Add GeneratorFactoryProvider to generate_filter_main() This provides hooks to allow overriding the Generator(s) that generate_filter_main() can use; normally it defaults to the global registry of C++ Generators, but this allows for (e.g.) alternate-language-bindings to selectively override this (e.g. to enumerate only Generators that are visible in that language, etc). (No visible change in behavior from this PR; this is just cherry-picked from work-in-progress elsewhere to simplify review & merge) * Update Generator.cpp * Fix error handling 10 May 2022, 01:07:57 UTC
b4ab8d8 Fixes 09 May 2022, 21:54:57 UTC
780abc1 Merge branch 'srj/abstract-generator' into srj/pygen-deux 09 May 2022, 21:48:17 UTC
ee60300 Update Generator.cpp 09 May 2022, 21:47:02 UTC
e476a05 Merge branch 'main' into srj/abstract-generator 09 May 2022, 21:42:59 UTC
6753d12 fixes 09 May 2022, 21:40:11 UTC
a986078 Deprecate GeneratorContext getters with `get_` prefix (#6753) Minor hygiene: most getters in Halide don't have a `get_` prefix. These are very rarely used (only one instance in our test suite I could find) but, hey, cleanliness. 09 May 2022, 21:38:41 UTC
c2a4293 Merge branch 'srj/generator_factory_provider' into srj/abstract-generator 09 May 2022, 21:35:33 UTC
4ab637c Update Generator.cpp 09 May 2022, 21:30:51 UTC
9605c6c Add GeneratorFactoryProvider to generate_filter_main() This provides hooks to allow overriding the Generator(s) that generate_filter_main() can use; normally it defaults to the global registry of C++ Generators, but this allows for (e.g.) alternate-language-bindings to selectively override this (e.g. to enumerate only Generators that are visible in that language, etc). (No visible change in behavior from this PR; this is just cherry-picked from work-in-progress elsewhere to simplify review & merge) 09 May 2022, 21:26:12 UTC
5e39906 Add GeneratorFactoryProvider for generate_filter_main() 09 May 2022, 21:05:55 UTC
92a0f9d fixes 06 May 2022, 01:14:21 UTC
c15471b Merge branch 'srj/abstract-generator' into srj/pygen-deux 06 May 2022, 01:03:00 UTC
23eadb3 Fixes 06 May 2022, 00:58:23 UTC
5a9664e Merge branch 'main' into srj/abstract-generator 06 May 2022, 00:54:29 UTC
47d8103 Add a `HalideError` base class to Python bindings (#6750) * Add a `HalideError` base class to Python bindings Per suggestion from @alexreinking, this remaps all exceptions thrown by the Halide Python bindings to be `halide.HalideError` (or a subclass thereof), rather than plain old `RuntimeError`. * Remove scalpel left in patient * Don't use a subclass for PyStub error handling 06 May 2022, 00:49:40 UTC
a198dc8 Update PyGenerator.cpp 05 May 2022, 18:17:15 UTC
3ec04a1 Merge branch 'srj/abstract-generator' into srj/pygen-deux 05 May 2022, 18:11:24 UTC
bd1da85 Merge branch 'main' into srj/abstract-generator 05 May 2022, 18:11:10 UTC
f1cff05 Update PyError.cpp 05 May 2022, 17:02:40 UTC
5d0e909 Update PyStubImpl.cpp 05 May 2022, 17:01:28 UTC
f74217a clang-tidy 05 May 2022, 16:51:52 UTC
6fbf203 Update hannk README link to hosted models page (#6749) The current one is being sunsetted 05 May 2022, 16:06:37 UTC
557690e Update WABT to 1.0.29 (#6748) 05 May 2022, 16:06:21 UTC
c8531a5 Silence "may be used uninitialized" in Buffer::for_each_element() (#6747) In at least one version of GCC (Debian 11.2.0-16+build1), an optimized build using `Buffer::for_each_element(int *pos)` will give (incorrect) compiler warnings/errors that "pos may be used uninitialized). From inspection of the code I feel pretty sure this is a false positive -- i.e., the optimizer is confused -- and since no other compiler we've encountered issues a similar warning (nor do we see actual misbehavior), I'm inclined not to worry -- but the warning does break some build configurations. Rather than try to fight with selectively disabling this warning, I'm going to propose inserting a memset() here to reassure the compiler that the memory really is initialized; while it's unnnecessary, it's likely to be insignificant compared to the cost of usual calls to for_each_element(). (BTW, this is not a new issue, I've seen it for quite a while as this GCC is the default on one of my Linux machines... it just finally annoyed me enough to want to make it shut up.) 05 May 2022, 01:17:40 UTC
36d0f7b Use custom Halide error classes 05 May 2022, 01:16:14 UTC
e29b323 yapf 04 May 2022, 23:30:46 UTC
9e8e911 Update builtin_helpers_src.py 04 May 2022, 23:28:16 UTC
44c9c39 Avoid another `nonlocal` 04 May 2022, 22:03:24 UTC
5e9eef9 Don't need `nonlocal` 04 May 2022, 21:59:43 UTC
4a4dcb1 Don't use $<tARGET_FILE> 04 May 2022, 21:59:24 UTC
82f4b1a include(MakeShellPath) 04 May 2022, 21:56:21 UTC
ec1ed75 Missed some fixes 04 May 2022, 19:04:12 UTC
5e4e07e Remove `get_` prefix from getters in AbstractGenerator 04 May 2022, 18:54:50 UTC
6768fe8 Fixes from review comments 04 May 2022, 18:14:08 UTC
88f3d63 Update PyGenerator.cpp 04 May 2022, 05:00:51 UTC
7a61953 Merge branch 'srj/abstract-generator' into srj/pygen-deux 04 May 2022, 01:49:58 UTC
913a414 Update PyStubImpl.cpp 04 May 2022, 01:49:46 UTC
e0d7280 Merge branch 'srj/abstract-generator' into srj/pygen-deux 04 May 2022, 01:18:33 UTC
2ccc48c Update PyStubImpl.cpp 04 May 2022, 01:17:59 UTC
e594898 clang-tidy 04 May 2022, 01:16:48 UTC
5f92fc3 fixes 04 May 2022, 01:16:27 UTC
7941861 Merge branch 'srj/abstract-generator' into srj/pygen-deux 04 May 2022, 01:04:01 UTC
70fcb71 Merge branch 'main' into srj/abstract-generator 04 May 2022, 00:59:56 UTC
1606039 Revise PyStub calling convention for GeneratorParams (#6742) This is a rethink of https://github.com/halide/Halide/pull/6661, trying to make it saner in anticipation of the ongoing Python Generator work. TL;DR: instead of mixing GeneratorParams in with the rest of the keywords, segregate them into an optional `generator_params` keyword argument, which is a plain Python dict. This neatly solves a couple of problems: - synthetic params with funky names aren't a problem anymore. - error reporting is simpler because before an unknown keyword could have been intended to be a GP or an Input. - GP values are now clear and distinct from Inputs, which is IMHO a good thing. This is technically a breaking change, but I doubt anyone will notice; this is mainly here to get a sane convention in place for use with Python Generators as well. Also, a drive-by change to Func::output_types() to fix the assertion error message. 04 May 2022, 00:16:26 UTC
bfae1d4 clang-format 04 May 2022, 00:11:15 UTC
70b442c Update PyGenerator.cpp 04 May 2022, 00:02:53 UTC
52f1054 Update builtin_helpers_src.py 04 May 2022, 00:02:15 UTC
62d455f Update builtin_helpers_src.py 04 May 2022, 00:01:46 UTC
fddbfe6 aliases + cleanup 03 May 2022, 18:50:02 UTC
0029d2b Merge branch 'srj/abstract-generator' into srj/pygen-deux 03 May 2022, 01:35:01 UTC
6d6ff1a Merge branch 'main' into srj/abstract-generator 03 May 2022, 01:34:50 UTC
2d8b5c8 fix cmake? 03 May 2022, 01:33:35 UTC
0913746 cleanup 02 May 2022, 23:10:54 UTC
4c365f4 call stuff 02 May 2022, 21:27:38 UTC
2721b3f Freeze things 02 May 2022, 20:36:37 UTC
92dfb61 Add __pycache__ to toplevel .gitignore file (#6743) 02 May 2022, 18:14:18 UTC
f376cbb Silence "unscheduled update stage" warnings in msan_generator.cpp (#6740) 30 April 2022, 17:20:46 UTC
e6260a8 Add forwarding for the recently-added Func::output_type() method (#6741) 30 April 2022, 17:20:22 UTC
f5af6f2 WIP 30 April 2022, 00:04:49 UTC
95f41aa Delete PyGenerator.cpp 29 April 2022, 18:39:04 UTC
a7ffad1 cleanup 29 April 2022, 18:24:44 UTC
f7846c0 ArgInfoDirection 29 April 2022, 00:08:25 UTC
ebe365a Merge branch 'main' into srj/abstract-generator 28 April 2022, 22:02:07 UTC
41b2d07 Fix regression from #6734 (#6739) That change inadvertently required the RHS of an update stage that used `+=` (or similar operators) to match the LHS type, which should be required (implicit casting of the RHS is expected). Restructured to remove this, but still ensure that auto-injection of a pure definition matches the required types (if any), and updated tests. 28 April 2022, 20:53:19 UTC
fc0f4ed Add missing #include <functional> in ThreadPool.h (#6738) * Add missing #include <function> in ThreadPool.h * Update ThreadPool.h 28 April 2022, 18:31:38 UTC
00f4b29 More typed-Func work (#6735) - Allow Func output_type(s)(), outputs(), dimensions(), and output_buffer(s)() to be called on undefined Funcs if the Func has required_type and required_dimensions specified. This allows for greater flexibility in defining pipelines in which you may want to set or examine constraints on a Func that hasn't been defined yet; previously this required restructuring code or other awkwardness. - Ensure that the Funcs that are defined for ImageParams and Generator fields define the types-and-dims when known. - Add some tests. 28 April 2022, 01:33:49 UTC
799c546 Augment Halide::Func to allow for constraining Type and Dimensionality (#6734) This enhances Func by allowing you to (optionally) constrain the type(s) of Exprs that the Func can contain, and/or the dimensionality of the Func. (Attempting to violate either of these will assert-fail.) There are a few goals here: - Enhanced code readability; in cases where a Func's values may not be obvious from the code flow, this can allow an in-code way of declaring it (rather than via comments) - Enhanced type enforcement; specifying constraints allows us to fail in type-mismatched compilations somewhat sooner, with somewhat better error messages. - Better symmetry for AOT/JIT code generation with ImageParam, in which the inputs (ImageParam) have a way to specify the required concrete type, but the outputs (Funcs) don't. If this is accepted, then subsequent changes will likely add uses where it makes sense (e.g., the Func associated with an ImageParam should always have both type and dimensionality specified since it will always be well-known). Note that this doesn't add any C++ template class for static declarations (e.g. `FuncT<float, 2>` -> `Func(Float(32), 2)`); these could be added later if desired. 27 April 2022, 20:48:27 UTC
8674346 Merge branch 'main' into srj/abstract-generator 27 April 2022, 18:43:03 UTC
86a4a59 Remove `rounding_halving_sub` and non-existent arm rhsub instructions (#6723) * remove arm (s | u)rhsub instructions * remove rounding_halving_sub intrinsic entirely 26 April 2022, 19:14:34 UTC
064f93b Merge branch 'main' into srj/abstract-generator 25 April 2022, 17:32:46 UTC
f5c77ce Deprecate variadic-template version of Realization ctor (#6695) * Deprecate variadic-template version of Realization ctor The variadic-template approach was useful before C++11 (!) added brace initialization, but preferring an explicit vector-of-Buffer is arguably better, and provides better symmetry with the Python bindings. Also, some drive-by tweaks to other Realization methods. * Update PyPipeline.cpp * trigger buildbots 25 April 2022, 17:00:10 UTC
706b9ca Merge branch 'main' into srj/abstract-generator 21 April 2022, 20:02:54 UTC
85b9f29 Grab-bag of minor Python fixes (#6725) 21 April 2022, 20:02:00 UTC
754018b Add Func::output_type() method (#6724) * Add Func::output_type() method * Add Python 21 April 2022, 19:58:49 UTC
a491f7f dead code 21 April 2022, 17:00:57 UTC
c48af8c Merge branch 'main' into srj/abstract-generator 21 April 2022, 16:59:51 UTC
aa384af `get_amd_processor()`: implement detection for the rest of supported AMD CPU's (#6711) I have *not* personally tested that these are detected correctly, Cross-reference between * https://github.com/llvm/llvm-project/blob/955cff803e081640e149fed0742f57ae1b84db7d/llvm/lib/Support/Host.cpp#L968-L1041 * https://github.com/llvm/llvm-project/blob/955cff803e081640e149fed0742f57ae1b84db7d/compiler-rt/lib/builtins/cpu_model.c#L520-L586 * https://github.com/gcc-mirror/gcc/blob/000c1b89d259fadb466e1f2e63c79da45fd17372/gcc/common/config/i386/cpuinfo.h#L111-L264 21 April 2022, 16:32:56 UTC
accc644 Remove legacy::FunctionPassManager usage in Codegen_PTX_Dev (#6722) LLVM devs indicate that none of the passes in this usage actually do anything and it can be safely removed. 21 April 2022, 03:01:15 UTC
248e8da Merge branch 'main' into srj/abstract-generator 20 April 2022, 17:41:49 UTC
3b3e89e Smarten type_of<> for fn ptrs; fix async_parallel for C backend (#6719) * Smarten type_of<> for fn ptrs; fix async_parallel for C backend (Fixes #2093) This basically just adds the right type annotations to make the parallel code produced by the C backend compile properly. This could have been fixed by inserted some brute-force void* casting into the C backend, but this felt a lot cleaner. The one thing here I'm a little unsure about is how I extended the Type code to be able to handle function-pointer types correctly; it works but doesn't feel very elegant. * Update Makefile * Update LowerParallelTasks.cpp * FunctionTypedef 20 April 2022, 17:01:39 UTC
a07d3e4 Closure functions for parallel tasks should be internal, not external (#6720) Minor optimization. 20 April 2022, 16:50:30 UTC
460c77e Update CodeGen_PTX_Dev to use new PassManager (#6718) * Update CodeGen_PTX_Dev to use new PassManager This was still using the LegacyPassManager for optimization, which will be going away at some point. (Code changes by @alinas; I'm just opening this PR on her behalf) * Fixes after review 20 April 2022, 00:25:35 UTC
65ba16e Combine string constants in combine_strings() (#6717) * Combine string constants in combine_strings() This is a pretty trivial optimization, but when printing (or enabling `debug`), it cuts the number of `halide_string_to_string()` calls we generate by ~half. * Update IROperator.cpp 19 April 2022, 21:53:00 UTC
01ca823 ARM vst mangling needs to be conditional on opaque ptrs (#6716) The fixes from last week regarding mangling of arm vst intrinsics needs to be made conditional on whether the pointer is opaque or not; this will change based on whether `-D CLANG_ENABLE_OPAQUE_POINTERS=ON|OFF` is defined when LLVM is built, but should be sniffed via this API, according to my LLVM contact. 19 April 2022, 20:04:15 UTC
4df3c5d Remove the last remaining call to getPointerElementType() (#6715) * Remove the last remaining call to getPointerElementType() LLVM is moving to opaque pointers, we must have missed this one in previous work * ARM vst mangling needs to be conditional on opaque ptrs The fixes from last week regarding mangling of arm vst intrinsics needs to be made conditional on whether the pointer is opaque or not; this will change based on whether `-D CLANG_ENABLE_OPAQUE_POINTERS=ON|OFF` is defined when LLVM is built, but should be sniffed via this API, according to my LLVM contact. * Revert "ARM vst mangling needs to be conditional on opaque ptrs" This reverts commit 9901314ff75dd0bf651b23d09c1d1f5f07d49ffd. 19 April 2022, 19:54:12 UTC
13a87b7 Merge branch 'main' into srj/abstract-generator 14 April 2022, 21:01:39 UTC
60a909f Fix type-mangling for vst on arm32 for LLVM15 (#6705) 14 April 2022, 16:49:38 UTC
77f7f5e Python: make Func implicitly convertible to Stage (#6702) (#6704) This allows for `compute_with` and `rfactor` to work more seamlessly in Python. Also: - Move two compute_with() variant bindings from PyFunc and PyStage to PyScheduleMethods, as they are identical between the two - drive-by removal of redundant `py::implicitly_convertible<ImageParam, Func>();` call 13 April 2022, 21:31:17 UTC
87c0cc9 llvm no longer wants a type suffix on vst intrinsics (#6701) * llvm no longer wants a type suffix on vst intrinsics * Fix silly mistake * Change 64-bit only Co-authored-by: Andrew Adams <anadams@adobe.com> 12 April 2022, 23:38:56 UTC
3d7b977 Drop support for Matlab extensions (#6696) * Drop support for Matlab extensions Anecdotally, this hasn't been used in ~years, and the original author (@dsharletg) had suggested dropping it a while back. I'm going to propose we go ahead and drop it for Halide 15 and see who complains. * Fixes for top-of-tree LLVM * Update force_include_types.cpp * trigger buildbots * Update CodeGen_LLVM.cpp 12 April 2022, 23:33:02 UTC
4da8932 Remove deprecated JIT handler setters (#6699) 12 April 2022, 04:45:12 UTC
009d86f Remove deprecated versions of Func::prefetch() (#6698) 12 April 2022, 04:45:00 UTC
back to top