2017-01-16 52 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,謝謝!現在我懂了。 –