From 8cb5526f8e9fe2ac4f474a32b247aea5937f0882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:19:12 +0800 Subject: [PATCH 01/16] Update CMakeLists.txt --- paddle/fluid/framework/ir/fusion_group/CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt b/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt index 570b081aae95ed..0926a3d3837109 100644 --- a/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt +++ b/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt @@ -3,20 +3,19 @@ cc_library( SRCS operation.cc code_generator.cc code_generator_helper.cc DEPS graph subgraph_detector) if(WITH_GPU OR WITH_ROCM) - cc_test( + paddle_test( test_code_generator SRCS code_generator_tester.cc - DEPS code_generator phi common lod_tensor graph_viz_pass) + DEPS common) endif() cc_library( fusion_group_pass SRCS fusion_group_pass.cc elementwise_group_detector.cc DEPS subgraph_detector fuse_pass_base code_generator phi common) -cc_test( +paddle_test( test_fusion_group_pass - SRCS fusion_group_pass_tester.cc - DEPS fusion_group_pass graph_viz_pass) + SRCS fusion_group_pass_tester.cc) if(WITH_TESTING AND TEST test_code_generator) set_tests_properties(test_code_generator PROPERTIES TIMEOUT 120) endif() From f7a8cbebfae90984ab0bcc3b4474b9d09bb5f5b5 Mon Sep 17 00:00:00 2001 From: Liyulingyue <852433440@qq.com> Date: Sat, 24 Feb 2024 07:44:44 +0800 Subject: [PATCH 02/16] mv dir --- .../fluid/framework/ir/fusion_group/CMakeLists.txt | 12 ------------ .../fluid/framework/ir/fusion_group/CMakeLists.txt | 8 ++++++++ .../ir/fusion_group/code_generator_tester.cc | 0 .../ir/fusion_group/fusion_group_pass_tester.cc | 0 4 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt rename {paddle => test/cpp}/fluid/framework/ir/fusion_group/code_generator_tester.cc (100%) rename {paddle => test/cpp}/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc (100%) diff --git a/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt b/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt index 0926a3d3837109..cd3981df85f8ba 100644 --- a/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt +++ b/paddle/fluid/framework/ir/fusion_group/CMakeLists.txt @@ -2,20 +2,8 @@ cc_library( code_generator SRCS operation.cc code_generator.cc code_generator_helper.cc DEPS graph subgraph_detector) -if(WITH_GPU OR WITH_ROCM) - paddle_test( - test_code_generator - SRCS code_generator_tester.cc - DEPS common) -endif() cc_library( fusion_group_pass SRCS fusion_group_pass.cc elementwise_group_detector.cc DEPS subgraph_detector fuse_pass_base code_generator phi common) -paddle_test( - test_fusion_group_pass - SRCS fusion_group_pass_tester.cc) -if(WITH_TESTING AND TEST test_code_generator) - set_tests_properties(test_code_generator PROPERTIES TIMEOUT 120) -endif() diff --git a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt new file mode 100644 index 00000000000000..2ab7be73d139d2 --- /dev/null +++ b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt @@ -0,0 +1,8 @@ +if(WITH_GPU OR WITH_ROCM) + paddle_test(test_code_generator SRCS code_generator_tester.cc DEPS common) +endif() +if(WITH_TESTING AND TEST test_code_generator) + set_tests_properties(test_code_generator PROPERTIES TIMEOUT 120) +endif() + +paddle_test(test_fusion_group_pass SRCS fusion_group_pass_tester.cc) diff --git a/paddle/fluid/framework/ir/fusion_group/code_generator_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/code_generator_tester.cc similarity index 100% rename from paddle/fluid/framework/ir/fusion_group/code_generator_tester.cc rename to test/cpp/fluid/framework/ir/fusion_group/code_generator_tester.cc diff --git a/paddle/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc similarity index 100% rename from paddle/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc rename to test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc From fd9de8cfb42fd95952d0bbb0460f3f837197122e Mon Sep 17 00:00:00 2001 From: Liyulingyue <852433440@qq.com> Date: Sat, 24 Feb 2024 07:47:20 +0800 Subject: [PATCH 03/16] mv dir --- test/cpp/fluid/framework/CMakeLists.txt | 2 ++ test/cpp/fluid/framework/ir/CMakeLists.txt | 1 + 2 files changed, 3 insertions(+) create mode 100644 test/cpp/fluid/framework/ir/CMakeLists.txt diff --git a/test/cpp/fluid/framework/CMakeLists.txt b/test/cpp/fluid/framework/CMakeLists.txt index 5e0e7404f6999d..8e1686b2429933 100644 --- a/test/cpp/fluid/framework/CMakeLists.txt +++ b/test/cpp/fluid/framework/CMakeLists.txt @@ -346,3 +346,5 @@ cc_test( workqueue_test SRCS new_executor/workqueue_test.cc DEPS standalone_executor) + +add_subdirectory(ir) diff --git a/test/cpp/fluid/framework/ir/CMakeLists.txt b/test/cpp/fluid/framework/ir/CMakeLists.txt new file mode 100644 index 00000000000000..5faf338168aac9 --- /dev/null +++ b/test/cpp/fluid/framework/ir/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(fusion_group) From f1146231334b97c7ac2b7f4e8ba780696f09a0f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Sat, 24 Feb 2024 10:50:58 +0800 Subject: [PATCH 04/16] Update fusion_group_pass_tester.cc --- .../framework/ir/fusion_group/fusion_group_pass_tester.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 46d69ef146209c..7543fee4e66e4e 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -153,6 +153,3 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace ir } // namespace framework } // namespace paddle - -USE_PASS(fusion_group_pass); -USE_PASS(graph_viz_pass); From ea1dc2557df48cc3fa4ae8a94c40bcb76604846c Mon Sep 17 00:00:00 2001 From: Liyulingyue <852433440@qq.com> Date: Sat, 24 Feb 2024 13:05:01 +0800 Subject: [PATCH 05/16] add TEST_API for var --- paddle/fluid/framework/ir/node.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paddle/fluid/framework/ir/node.h b/paddle/fluid/framework/ir/node.h index 7bff25fd098408..49044f60fd1c97 100644 --- a/paddle/fluid/framework/ir/node.h +++ b/paddle/fluid/framework/ir/node.h @@ -71,7 +71,7 @@ class Node { #if !defined(_WIN32) && (__cplusplus < 201703L) static constexpr char kControlDepVarName[] = "__control_var"; #else - static const char kControlDepVarName[]; + TEST_API static const char kControlDepVarName[]; #endif Type NodeType() const { return type_; } From e6d51106558f78de67b3e43dc888004532c9f765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Sat, 24 Feb 2024 19:37:54 +0800 Subject: [PATCH 06/16] Update fusion_group_pass_tester.cc --- .../fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 7543fee4e66e4e..52e3dd5ef6444a 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -153,3 +153,5 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace ir } // namespace framework } // namespace paddle + +USE_PASS(fusion_group_pass); From eb2f5b43f2e9ab5729a2bb6f86d9a23d22d192ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Sun, 25 Feb 2024 07:17:08 +0800 Subject: [PATCH 07/16] Update fusion_group_pass_tester.cc --- .../fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 52e3dd5ef6444a..7543fee4e66e4e 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -153,5 +153,3 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace ir } // namespace framework } // namespace paddle - -USE_PASS(fusion_group_pass); From 533514b8968a6d5c1ecd39dc9c4e2b7ec2fb3def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Wed, 28 Feb 2024 21:16:18 +0800 Subject: [PATCH 08/16] Update fusion_group_pass_tester.cc --- .../framework/ir/fusion_group/fusion_group_pass_tester.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 7543fee4e66e4e..46d69ef146209c 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -153,3 +153,6 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace ir } // namespace framework } // namespace paddle + +USE_PASS(fusion_group_pass); +USE_PASS(graph_viz_pass); From 3f258f6aa2cc99c0526ed7dd832b6420daa85e08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Wed, 28 Feb 2024 21:17:47 +0800 Subject: [PATCH 09/16] Update pass.h --- paddle/fluid/framework/ir/pass.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/paddle/fluid/framework/ir/pass.h b/paddle/fluid/framework/ir/pass.h index 304d12cf94ecf7..1c2e25f7aea1f4 100644 --- a/paddle/fluid/framework/ir/pass.h +++ b/paddle/fluid/framework/ir/pass.h @@ -356,12 +356,12 @@ struct PassRegistrar : public Registrar { &__pass_tmp_registrar_##pass_type##__ UNUSED = \ __pass_registrar_##pass_type##__ -#define USE_PASS(pass_type) \ - STATIC_ASSERT_PASS_GLOBAL_NAMESPACE( \ - __use_pass_itself_##pass_type, \ - "USE_PASS must be called in global namespace"); \ - extern int TouchPassRegistrar_##pass_type(); \ - static int use_pass_itself_##pass_type##_ UNUSED = \ +#define USE_PASS(pass_type) \ + STATIC_ASSERT_PASS_GLOBAL_NAMESPACE( \ + __use_pass_itself_##pass_type, \ + "USE_PASS must be called in global namespace"); \ + TEST_API extern int TouchPassRegistrar_##pass_type(); \ + static int use_pass_itself_##pass_type##_ UNUSED = \ TouchPassRegistrar_##pass_type() } // namespace ir From 68c4c99f7860932920d1626ccbb48243405497b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Thu, 29 Feb 2024 06:01:51 +0800 Subject: [PATCH 10/16] try to delete use_it_self --- .../framework/ir/fusion_group/fusion_group_pass_tester.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 46d69ef146209c..7543fee4e66e4e 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -153,6 +153,3 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace ir } // namespace framework } // namespace paddle - -USE_PASS(fusion_group_pass); -USE_PASS(graph_viz_pass); From 8c21f7718f10728cbd5c5cc9ed01a0ce2515c289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:55:43 +0800 Subject: [PATCH 11/16] Update fusion_group_pass_tester.cc --- .../fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 7543fee4e66e4e..52e3dd5ef6444a 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -153,3 +153,5 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace ir } // namespace framework } // namespace paddle + +USE_PASS(fusion_group_pass); From 925e499bcc4e9221eb83bc872c913950453d2b4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:56:40 +0800 Subject: [PATCH 12/16] Update CMakeLists.txt --- test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt index 2ab7be73d139d2..176ca94b47cb93 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt +++ b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt @@ -5,4 +5,7 @@ if(WITH_TESTING AND TEST test_code_generator) set_tests_properties(test_code_generator PROPERTIES TIMEOUT 120) endif() -paddle_test(test_fusion_group_pass SRCS fusion_group_pass_tester.cc) +nv_test( + test_fusion_group_pass + SRCS fusion_group_pass_tester.cc + DEPS fusion_group_pass graph_viz_pass) From 225497a593fef3e519ab7e8bb40ac9e894c3be87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Thu, 29 Feb 2024 12:57:35 +0800 Subject: [PATCH 13/16] Update fusion_group_pass_tester.cc --- .../fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc index 52e3dd5ef6444a..46d69ef146209c 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc +++ b/test/cpp/fluid/framework/ir/fusion_group/fusion_group_pass_tester.cc @@ -155,3 +155,4 @@ TEST(FusionGroupPass, elementwise_tree) { } // namespace paddle USE_PASS(fusion_group_pass); +USE_PASS(graph_viz_pass); From 9ffac12e455f9805d9dcbee504b75fb332e57929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Fri, 1 Mar 2024 19:15:59 +0800 Subject: [PATCH 14/16] Update CMakeLists.txt --- .../cpp/fluid/framework/ir/fusion_group/CMakeLists.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt index 176ca94b47cb93..80b91cdd06817a 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt +++ b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt @@ -5,7 +5,9 @@ if(WITH_TESTING AND TEST test_code_generator) set_tests_properties(test_code_generator PROPERTIES TIMEOUT 120) endif() -nv_test( - test_fusion_group_pass - SRCS fusion_group_pass_tester.cc - DEPS fusion_group_pass graph_viz_pass) +if(not win32) + nv_test( + test_fusion_group_pass + SRCS fusion_group_pass_tester.cc + DEPS fusion_group_pass graph_viz_pass) +endif() From 49b15398bbf1faae353e4c4e4d459282d7e5771e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=98=A5=E4=B9=94?= <83450930+Liyulingyue@users.noreply.github.com> Date: Sat, 2 Mar 2024 02:53:08 +0800 Subject: [PATCH 15/16] Apply suggestions from code review --- test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt index 80b91cdd06817a..9dabaa332467ad 100644 --- a/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt +++ b/test/cpp/fluid/framework/ir/fusion_group/CMakeLists.txt @@ -5,7 +5,7 @@ if(WITH_TESTING AND TEST test_code_generator) set_tests_properties(test_code_generator PROPERTIES TIMEOUT 120) endif() -if(not win32) +if(NOT WIN32) nv_test( test_fusion_group_pass SRCS fusion_group_pass_tester.cc From 5318ce1393e86ed3bd177b6c37566485c2f97600 Mon Sep 17 00:00:00 2001 From: Liyulingyue <852433440@qq.com> Date: Sat, 2 Mar 2024 08:52:14 +0800 Subject: [PATCH 16/16] add TEST_API --- .../fluid/framework/ir/fusion_group/code_generator.h | 12 +++++++----- paddle/fluid/framework/ir/fusion_group/operation.h | 4 ++-- paddle/phi/backends/device_code.h | 10 +++++----- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/paddle/fluid/framework/ir/fusion_group/code_generator.h b/paddle/fluid/framework/ir/fusion_group/code_generator.h index c702fd61ed3207..0cc366f107d86f 100644 --- a/paddle/fluid/framework/ir/fusion_group/code_generator.h +++ b/paddle/fluid/framework/ir/fusion_group/code_generator.h @@ -32,14 +32,16 @@ class SubGraph; class CodeGenerator { public: - CodeGenerator(); + TEST_API CodeGenerator(); - std::string Generate(std::string func_name, - const std::vector& expressions); + TEST_API std::string Generate( + std::string func_name, + const std::vector& expressions); - std::string Generate(SubGraph* subgraph); + TEST_API std::string Generate(SubGraph* subgraph); - std::vector ConvertToExpressions(SubGraph* subgraph); + TEST_API std::vector ConvertToExpressions( + SubGraph* subgraph); private: std::set DistilInputIds( diff --git a/paddle/fluid/framework/ir/fusion_group/operation.h b/paddle/fluid/framework/ir/fusion_group/operation.h index dd939cd3cbbf11..027a177c4eec2c 100644 --- a/paddle/fluid/framework/ir/fusion_group/operation.h +++ b/paddle/fluid/framework/ir/fusion_group/operation.h @@ -72,7 +72,7 @@ struct Operation { class OperationMap { public: - OperationMap(); + TEST_API OperationMap(); static OperationMap& Instance() { PADDLE_ENFORCE_NOT_NULL( @@ -119,7 +119,7 @@ class OperationMap { void InsertMultivariateElementwiseOperations(); private: - static OperationMap* map; + TEST_API static OperationMap* map; std::unordered_map operations_; DISABLE_COPY_AND_ASSIGN(OperationMap); }; diff --git a/paddle/phi/backends/device_code.h b/paddle/phi/backends/device_code.h index 8debb4dc9c45ee..9a787d8579817f 100644 --- a/paddle/phi/backends/device_code.h +++ b/paddle/phi/backends/device_code.h @@ -51,11 +51,11 @@ class DeviceCode { #if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP) class GPUDeviceCode : public DeviceCode { public: - explicit GPUDeviceCode(const Place& place, - const std::string& name, - const std::string& kernel); - bool Compile(bool include_path = false) override; - void Launch(const size_t n, std::vector* args) const override; + TEST_API explicit GPUDeviceCode(const Place& place, + const std::string& name, + const std::string& kernel); + TEST_API bool Compile(bool include_path = false) override; + TEST_API void Launch(const size_t n, std::vector* args) const override; void SetNumThreads(int num_threads) { num_threads_ = num_threads; } void SetWorkloadPerThread(int workload_per_thread) {