2017-01-16 11 views
1

Halide :: sum 중첩 된 인쇄 루프는 tutorial으로 작성된 최적 값과 동일하지 않습니다.Halide sum loops 중첩

이 코드는 제로 초기화 및 합계를 위해 별도의 루프를 제공합니다.

Halide::Func f("f"); 
    Halide::Var x("x"); 
    Halide::RDom r(0, 3); 

    f(x) = Halide::sum(r + x); 
    f.print_loop_nest(); 

    f.realize(10); 

출력 :

produce f: 
    for x: 
    produce sum: 
     for x: 
     sum(...) = ... 
     for x: 
     for r4: 
      sum(...) = ... 
    consume sum: 
     f(...) = ... 

이 루프 또는 성능에 영향을주지 않습니다 융합 할 수 있습니까? 감사!


업데이트 :이 같은 퓨즈 :

produce f: 
    for x: 
    produce sum: 
     for x: 
     sum(...) = ... 
     for r4: 
      sum(...) = ... 
    consume sum: 
     f(...) = ... 

답변

1

이 혼란되는 print_loop_nest의 경우입니다. x에 걸친 내부 루프는 크기가 1이므로 사라집니다. 컴파일 된 루프 네스트가 원하는 것입니다. x 위의 바깥 고리는 매우 단순한 것이므로 실제로 일어나는 일입니다.

produce f: 
    for x: 
    produce sum: 
     sum(...) = ... 
     for r4: 
     sum(...) = ... 
    consume sum: 
     f(...) = ... 
+0

Andrew, 감사합니다! 이제 알았어. –