yaxunl marked an inline comment as done. yaxunl added inline comments.
================ Comment at: clang/lib/Driver/Compilation.cpp:332 + if (!Next) { + std::this_thread::yield(); continue; ---------------- aganea wrote: > In addition to what @thakis said above, yielding here is maybe not a good > idea. This causes the process to spin, and remain in the OS' active process > list, which uselessly eats cpu cycles. This can become significant over the > course of several minutes of compilation. > > Here's a //tiny// example of what happens when threads are waiting for > something to happen: > (the top parts yields frequently; the bottom part does not yield - see D68820) > {F10592208} > > You would need here to go through a OS primitive that suspends the process > until at least one job in the pool completes. On Windows this can be achieved > through `WaitForMultipleObjects()` or I/O completion ports like provided by > @thakis. You can take a look at `Compilation::executeJobs()` in D52193 and > further down the line, `WaitMany()` which waits for at least one job/process > to complete. Sorry for the delay. If D52193 is commited, I will probably only need some minor change to support parallel compilation for HIP. Therefore I hope D52193 could get committed soon. I am wondering what is the current status of D52193 and what is blocking it. Is there any chance to get it commited soon? Thanks. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D69582/new/ https://reviews.llvm.org/D69582 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits