by

Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 16:59
    steven-johnson synchronize #5176
  • 16:59

    steven-johnson on srj-hvx-codegen

    Remove unnecessary call to hali… (compare)

  • 16:59
    steven-johnson synchronize #5176
  • 16:59

    steven-johnson on srj-hvx-codegen

    Delete vlut.cpp (compare)

  • 16:58
    steven-johnson commented #5176
  • 16:58
    steven-johnson synchronize #5176
  • 16:58

    steven-johnson on srj-hvx-codegen

    Update CMakeLists.txt (compare)

  • 16:45
    slomp commented #5156
  • 16:11
    steven-johnson commented #5176
  • 09:27
    alexreinking synchronize #5170
  • 09:27

    alexreinking on crosscompile

    Use ExternalProject for build t… (compare)

  • 08:08
    alexreinking synchronize #5170
  • 08:07

    alexreinking on crosscompile

    Use ExternalProject for build t… (compare)

  • 08:04
    alexreinking synchronize #5170
  • 08:04

    alexreinking on crosscompile

    fix permissions on makelib.sh (… (compare)

  • 03:05
    alexreinking synchronize #5170
  • 03:05

    alexreinking on crosscompile

    Move tools back after src (compare)

  • 03:03
    alexreinking review_requested #5170
  • 03:03
    alexreinking review_requested #5170
  • 03:03
    alexreinking assigned #5170
benzwt
@benzwt
@zvookin halide_runtime is missing something ...
Zalman Stern
@zvookin
Not terribly surprised...
Probably fixable, though a fair bit won’t work with no OS runtime. Generally one needs some runtime support.
benzwt
@benzwt
@zvookin, please give me some direction to try
@zvookin : according to this issue halide/Halide#4957 , halide should work no bare metal arm platform
@zvookin s/no/on
Zalman Stern
@zvookin
I’d start with a very simple schedule and then try to figure out what is undefined
My guess is it isn’t tested and no one has tried it in a while so some dependency got added inadvertently
The main use case was HVX, not ARM, though that doesn’t make much difference
chithize
@chithize
I defined such simple code , and get undefined func. too
Input<Buffer<uint8_t>> input{"input", 1};
Output<Buffer<uint8_t>> out{"out", 1};
Input<Buffer<int>> len{"len",0};
out.bound(x,0,len);Func f("f");
 f(x)=input(x)+1;out(x)=f(x);
   //f.compute_root().vectorize(x,32,ShiftInwards);
   out.compute_root().vectorize(x,32,TailStrategy::ShiftInwards);
Error:
Can't access output buffer of undefined Func
someone can tell me which is wrong?
benzwt
@benzwt
@chithize out is not is func
chithize
@chithize
what is the correct code for the upper?
benzwt
@benzwt
@chithize try clamp
chithize
@chithize
the problem is that clamp would transmit some scalar op, which would slow down the vector assignment, right?
Volodymyr Kysenko
@vksnk
@chithize you can just add simple stub functions for halide_error_*, for example
int halide_error_bad_type(void *user_context, const char *func_name,
                          uint8_t code_given, uint8_t correct_code,
                          uint8_t bits_given, uint8_t correct_bits,
                          uint16_t lanes_given, uint16_t correct_lanes) {
  return /*halide_error_code_bad_type*/ -3;
}
or whatever is missing in your case
Andrew Adams
@abadams
noos means the user is responsible for defining all those functions
Halide can't define a halide_error for you if it doesn't know how to print or abort
thalesvp
@thalesvp
If I want to use padding before a convolution operation to get equal input/output sizes, is it correct to clamp the input and then realize the Func with the input dimensions?
Alex Reinking
@alexreinking
On Friday, we enabled the Discussions tab on the main repo for support questions. I have started moving some issues over there. I discovered that the transition feature does NOT preserve the original post dates and so if we want to take some time to do this in bulk, we should start from the oldest issues and work our way forward to the newest.
Issues should be reserved for bugs (from everyone), and feature requests/task items (from contributors). Usage, build, or coding support issues should be moved proactively to Discussions
chithize
@chithize

@vksnk

@chithize you can just add simple stub functions for halide_error_*, for example

int halide_error_bad_type(void *user_context, const char *func_name,
                          uint8_t code_given, uint8_t correct_code,
                          uint8_t bits_given, uint8_t correct_bits,
                          uint16_t lanes_given, uint16_t correct_lanes) {
  return /*halide_error_code_bad_type*/ -3;
}

thank for your reply, but what's your answer to?

HI , such schedule as : dst.vectorize(x, 32, TailStrategy::GuardWithIf) , For arm sve, AVX, hexagon or other DSP vectorcore, for residual epilogue, it should can use vector op with mask, from the generated stmt file, at least for SVE, or INTEL AVX, I didn't see mask vector op used, any way to hint halide to do this way?
Volodymyr Kysenko
@vksnk
@chithize ah, sorry I meant to reply to @benzwt
Volodymyr Kysenko
@vksnk
@chithize yes, at least for hexagon (probably, for other targets as well), it will optimize during code generation by recognizing loads around borders and replacing them with dense load and look-up/shuffle, see https://github.com/halide/Halide/blob/master/src/CodeGen_Hexagon.cpp#L451 and implementation https://github.com/halide/Halide/blob/master/src/HexagonOptimize.cpp#L1687
chithize
@chithize
@vksnk is there some test case for it?
Volodymyr Kysenko
@vksnk
@chithize good question, I don't know if there is a specific test which checks that this call was actually generated (tried to look up in the repo, but couldn't find anything). If you have some hexagon pipeline and want to see if this pattern was recognized, you can print statement after optimize_hexagon_shuffles and look for the call to "dynamic_shuffle"
or maybe generate assembly and look there for vlut (I am not sure about this one, though)
Jonathan Ragan-Kelley
@jrk
Would people like to enable “categories” for the new GitHub Discussions? They’re currently hard-coded and would look like the sidebar here: https://github.com/vercel/next.js/discussions
Alex Reinking
@alexreinking
Yes
Dillon Sharlet
@dsharletg
@chithize @vksnk we do have tests that particular shuffles/clamps generate vlut: https://github.com/halide/Halide/blob/master/test/correctness/simd_op_check_hvx.cpp#L296-L305 but I don't think we have a test that they are generated specifically for boundary condition use cases.
Jonathan Ragan-Kelley
@jrk
I assume that was @alexreinking voting yes on categories for Discussions—@zvookin, @abadams, @steven-johnson, @shoaibkamil?
Steven Johnson
@steven-johnson
I don't recall seeing a vote being proposed?
Jonathan Ragan-Kelley
@jrk
Andrew Adams
@abadams
The categories don't look super-useful right now, but there also seems to be no downside, so sure why not
Jonathan Ragan-Kelley
@jrk
Not formal vote, but asking if there's an obvious consensus.
Alex Reinking
@alexreinking
I was voting "yes", yes
Jonathan Ragan-Kelley
@jrk
(I agree with @abadams :)
Alex Reinking
@alexreinking
I particularly like separating "help" from "ideas"
the other categories are less meaningful
Jonathan Ragan-Kelley
@jrk
Indeed, I think they expect to have customizable categories in the future, the hard coded thing is just an in-development beta feature. (That was the implication of their email asking if we wanted in.) I'll ask to enable.
Steven Johnson
@steven-johnson
ahh ok
sure, +1
Steven Pease
@sepease_luminostics_gitlab

I'm getting this error trying to build halide from the nix repo for OS X (considered unsupported):
/tmp/nix-build-halide-2019.08.27.drv-0/source/src/runtime/qurt_init_fini.cpp:26:24: error: argument to 'section' attribute is not valid for this target: mach-o section specifier requires a segment and section separated by a comma __attribute__((section(".init.halide")))

It's looked to me like the nix file is doing a pretty vanilla build (eg https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/compilers/halide/default.nix). Does anyone know how to fix this error or where it's going wrong? Thanks.

Shoaib Kamil
@shoaibkamil
Sure, categories sound good to me
Infinoid
@Infinoid
Anyone else seeing performance_fast_sine_cosine failures?
450: Test timeout computed to be: 10000000
450: sin: 7.829491 ns per pixel
450: fast_sine: 11.569842 ns per pixel
450: cosine: 7.759825 ns per pixel
450: fast_cosine: 11.276700 ns per pixel
450: fast_sin is not 1.5x faster than sin
1/1 Test #450: performance_fast_sine_cosine .....***Failed  Required regular expression not found. Regex=[Success!
]  2.70 sec