From f11f6b4e4362686c8714651ed00ef7ff2164a039 Mon Sep 17 00:00:00 2001
From: Tianqi Chen <tqchen@users.noreply.github.com>
Date: Fri, 9 Mar 2018 11:39:58 -0800
Subject: [PATCH] prevent aggressive unrolling in vthread (#983)

---
 src/pass/inject_virtual_thread.cc | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/pass/inject_virtual_thread.cc b/src/pass/inject_virtual_thread.cc
index c0e7b4b3f..833513756 100644
--- a/src/pass/inject_virtual_thread.cc
+++ b/src/pass/inject_virtual_thread.cc
@@ -418,7 +418,8 @@ class VTInjector : public IRMutator {
     // reset the flags after processing.
     vt_loop_injected_ = false;
     visit_touched_var_ = false;
-    if (max_loop_depth_ == 0) {
+    // only unroll if number of vthreads are small
+    if (max_loop_depth_ == 0 && num_threads_ < 16) {
       // do unrolling if it is inside innermost content.
       Stmt blk = Substitute(stmt, {{var_, make_zero(var_.type())}});
       for (int i = 1; i < num_threads_; ++i) {
-- 
GitLab