1616#include < atomic>
1717#include " glog/logging.h"
1818#include " gtest/gtest.h"
19+ #include " paddle/fluid/framework/new_executor/workqueue_utils.h"
1920
2021TEST (WorkQueue, TestSingleThreadedWorkQueue) {
2122 VLOG (1 ) << " In Test" ;
2223 using paddle::framework::WorkQueueOptions;
2324 using paddle::framework::WorkQueue;
2425 using paddle::framework::CreateSingleThreadedWorkQueue;
26+ using paddle::framework::EventsWaiter;
2527 std::atomic<bool > finished{false };
2628 std::atomic<unsigned > counter{0 };
2729 constexpr unsigned kLoopNum = 1000000 ;
2830 // CreateSingleThreadedWorkQueue
31+ EventsWaiter events_waiter;
2932 WorkQueueOptions options (/* num_threads*/ 1 , /* allow_spinning*/ true ,
30- /* track_task*/ true );
33+ /* track_task*/ true , events_waiter );
3134 auto work_queue = CreateSingleThreadedWorkQueue (options);
3235 // NumThreads
3336 EXPECT_EQ (work_queue->NumThreads (), 1u );
@@ -42,7 +45,7 @@ TEST(WorkQueue, TestSingleThreadedWorkQueue) {
4245 });
4346 // WaitQueueEmpty
4447 EXPECT_EQ (finished.load (), false );
45- work_queue-> WaitQueueEmpty ();
48+ events_waiter. WaitEvent ();
4649 EXPECT_EQ (finished.load (), true );
4750 EXPECT_EQ (counter.load (), kLoopNum );
4851}
@@ -52,13 +55,15 @@ TEST(WorkQueue, TestMultiThreadedWorkQueue) {
5255 using paddle::framework::WorkQueueOptions;
5356 using paddle::framework::WorkQueue;
5457 using paddle::framework::CreateMultiThreadedWorkQueue;
58+ using paddle::framework::EventsWaiter;
5559 std::atomic<bool > finished{false };
5660 std::atomic<unsigned > counter{0 };
5761 constexpr unsigned kExternalLoopNum = 100 ;
5862 constexpr unsigned kLoopNum = 1000000 ;
5963 // CreateMultiThreadedWorkQueue
64+ EventsWaiter events_waiter;
6065 WorkQueueOptions options (/* num_threads*/ 10 , /* allow_spinning*/ true ,
61- /* track_task*/ true );
66+ /* track_task*/ true , events_waiter );
6267 auto work_queue = CreateMultiThreadedWorkQueue (options);
6368 // NumThreads
6469 EXPECT_EQ (work_queue->NumThreads (), 10u );
@@ -75,7 +80,7 @@ TEST(WorkQueue, TestMultiThreadedWorkQueue) {
7580 }
7681 // WaitQueueEmpty
7782 EXPECT_EQ (finished.load (), false );
78- work_queue-> WaitQueueEmpty ();
83+ events_waiter. WaitEvent ();
7984 EXPECT_EQ (finished.load (), true );
8085 EXPECT_EQ (counter.load (), kLoopNum * kExternalLoopNum );
8186}
@@ -84,15 +89,17 @@ TEST(WorkQueue, TestWorkQueueGroup) {
8489 using paddle::framework::WorkQueueOptions;
8590 using paddle::framework::WorkQueueGroup;
8691 using paddle::framework::CreateWorkQueueGroup;
92+ using paddle::framework::EventsWaiter;
8793 std::atomic<bool > finished{false };
8894 std::atomic<unsigned > counter{0 };
8995 constexpr unsigned kExternalLoopNum = 100 ;
9096 constexpr unsigned kLoopNum = 1000000 ;
91- // CreateMultiThreadedWorkQueue
97+ // ThreadedWorkQueueGroup
98+ EventsWaiter events_waiter;
9299 WorkQueueOptions sq_options (/* num_threads*/ 1 , /* allow_spinning*/ true ,
93- /* track_task*/ true );
100+ /* track_task*/ true , events_waiter );
94101 WorkQueueOptions mq_options (/* num_threads*/ 10 , /* allow_spinning*/ true ,
95- /* track_task*/ true );
102+ /* track_task*/ true , events_waiter );
96103 auto queue_group = CreateWorkQueueGroup ({sq_options, mq_options});
97104 // NumThreads
98105 EXPECT_EQ (queue_group->QueueNumThreads (0 ), 1u );
@@ -113,6 +120,6 @@ TEST(WorkQueue, TestWorkQueueGroup) {
113120 }
114121 });
115122 // WaitQueueGroupEmpty()
116- queue_group-> WaitQueueGroupEmpty ();
123+ events_waiter. WaitEvent ();
117124 EXPECT_EQ (counter.load (), kLoopNum * kExternalLoopNum + kLoopNum );
118125}
0 commit comments