xref: /aosp_15_r20/external/pytorch/c10/util/ParallelGuard.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1*da0073e9SAndroid Build Coastguard Worker #pragma once
2*da0073e9SAndroid Build Coastguard Worker 
3*da0073e9SAndroid Build Coastguard Worker #include <c10/macros/Macros.h>
4*da0073e9SAndroid Build Coastguard Worker 
5*da0073e9SAndroid Build Coastguard Worker namespace c10 {
6*da0073e9SAndroid Build Coastguard Worker 
7*da0073e9SAndroid Build Coastguard Worker // RAII thread local guard that tracks whether code is being executed in
8*da0073e9SAndroid Build Coastguard Worker // `at::parallel_for` or `at::parallel_reduce` loop function.
9*da0073e9SAndroid Build Coastguard Worker class C10_API ParallelGuard {
10*da0073e9SAndroid Build Coastguard Worker  public:
11*da0073e9SAndroid Build Coastguard Worker   static bool is_enabled();
12*da0073e9SAndroid Build Coastguard Worker 
13*da0073e9SAndroid Build Coastguard Worker   ParallelGuard(bool state);
14*da0073e9SAndroid Build Coastguard Worker   ~ParallelGuard();
15*da0073e9SAndroid Build Coastguard Worker 
16*da0073e9SAndroid Build Coastguard Worker  private:
17*da0073e9SAndroid Build Coastguard Worker   bool previous_state_;
18*da0073e9SAndroid Build Coastguard Worker };
19*da0073e9SAndroid Build Coastguard Worker 
20*da0073e9SAndroid Build Coastguard Worker } // namespace c10
21