From 8f239729e50441f32c959ec1a28455488446f0f8 Mon Sep 17 00:00:00 2001 From: Guilherme Lawless Date: Wed, 9 Oct 2019 17:19:13 +0100 Subject: [PATCH] Fix work_pool.opencl test hanging (#2332) --- nano/core_test/work_pool.cpp | 8 ++++---- nano/nano_node/entry.cpp | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/nano/core_test/work_pool.cpp b/nano/core_test/work_pool.cpp index d780c0956..f30bd39ca 100644 --- a/nano/core_test/work_pool.cpp +++ b/nano/core_test/work_pool.cpp @@ -83,14 +83,14 @@ TEST (work, opencl) ASSERT_FALSE (error); if (!environment.platforms.empty () && !environment.platforms.begin ()->devices.empty ()) { - auto opencl (nano::opencl_work::create (true, { 0, 0, 16 * 1024 }, logger)); + nano::opencl_config config (0, 0, 16 * 1024); + auto opencl (nano::opencl_work::create (true, config, logger)); if (opencl != nullptr) { // 0 threads, should add 1 for managing OpenCL - nano::work_pool pool (0, std::chrono::nanoseconds (0), opencl ? [&opencl](nano::root const & root_a, uint64_t difficulty_a, std::atomic & ticket_a) { + nano::work_pool pool (0, std::chrono::nanoseconds (0), [&opencl](nano::root const & root_a, uint64_t difficulty_a, std::atomic & ticket_a) { return opencl->generate_work (root_a, difficulty_a); - } - : std::function (nano::root const &, uint64_t, std::atomic & ticket_a)> (nullptr)); + }); ASSERT_NE (nullptr, pool.opencl); nano::root root; uint64_t difficulty (0xff00000000000000); diff --git a/nano/nano_node/entry.cpp b/nano/nano_node/entry.cpp index fdc8aae81..7f69c292d 100644 --- a/nano/nano_node/entry.cpp +++ b/nano/nano_node/entry.cpp @@ -450,7 +450,8 @@ int main (int argc, char * const * argv) if (!error) { nano::logger_mt logger; - auto opencl (nano::opencl_work::create (true, { platform, device, threads }, logger)); + nano::opencl_config config (platform, device, threads); + auto opencl (nano::opencl_work::create (true, config, logger)); nano::work_pool work_pool (std::numeric_limits::max (), std::chrono::nanoseconds (0), opencl ? [&opencl](nano::root const & root_a, uint64_t difficulty_a, std::atomic &) { return opencl->generate_work (root_a, difficulty_a); }