Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix guided exec #3537

Merged
merged 5 commits into from Nov 10, 2018

Conversation

Projects
None yet
3 participants
@biddisco
Copy link
Contributor

commented Nov 8, 2018

These patches appear to fix a couple of problems that sneaked through the guided executor merge.

Committing this to see if all tests pass with the slight tweak to the executor interface.

biddisco added some commits Nov 8, 2018

Schedulehint was not being forwarded from executor customization
Fix execution:::post specialization to correctly overload the hint
passing version.
@@ -126,7 +126,8 @@ namespace hpx { namespace threads
HPX_FORCEINLINE
typename std::enable_if<
hpx::traits::is_threads_executor<Executor>::value &&
std::is_same<Hint, hpx::threads::thread_schedule_hint>::value
std::is_same<typename hpx::util::decay<Hint>::type,
hpx::threads::thread_schedule_hint>::value
>::type
post(Executor && exec, F && f, Ts &&... ts, Hint && hint)

This comment has been minimized.

Copy link
@hkaiser

hkaiser Nov 9, 2018

Member

How can there be an argument after a variadic one? I always assumed that the variadic list of arguments should be the last one.

This comment has been minimized.

Copy link
@biddisco

biddisco Nov 9, 2018

Author Contributor

Sorry. Turns out I don't know what I'm doing after all.
Good job those variadic args are not actually used here. I've switched the order round now.
(gcc didn't mind about the variadic in the middle it seems)

This comment has been minimized.

Copy link
@hkaiser

hkaiser Nov 9, 2018

Member

@biddisco may I suggest that you create a (completely separate) customization point for your executor that is enable_if'ed based on the guided_executor type? I think adding the additional condition on the scheduling hint may cause ambiguities.

This comment has been minimized.

Copy link
@biddisco

biddisco Nov 9, 2018

Author Contributor

That's a good idea. Didn't think of that. I'll have a look later.

This comment has been minimized.

Copy link
@biddisco

biddisco Nov 10, 2018

Author Contributor

A new customization point is probably too large a change to put into this release, but I will prepare one right away and have it ready for a patch release as soon as we need to address any problems that might crop up.

<< "async_execute : Hint : "
<< util::debug::print_type<H>() << "\n";
/* << "async_execute : Hint : "
<< util::debug::print_type<H>() << "\n"*/;

This comment has been minimized.

Copy link
@hkaiser

hkaiser Nov 9, 2018

Member

Please remove code that is not necessary.

This comment has been minimized.

Copy link
@biddisco

biddisco Nov 10, 2018

Author Contributor

done

@msimberg msimberg merged commit 49849da into master Nov 10, 2018

49 of 54 checks passed

pycicle daint-gcc-4.9.3-boost-1.58.0-c++11-Debug Test errors 1
Details
pycicle daint-gcc-7.3.0-cuda-9.2.148_3.19-6.0.7.1_2.1__g3d9acc8-boost-1.68.0-c++11-Release Build errors 12
Details
pycicle daint-gcc-7.3.0-cuda-9.2.148_3.19-6.0.7.1_2.1__g3d9acc8-boost-1.68.0-c++11-Release Test errors 2
Details
ci/circleci: tests.unit.parallel.segmented_algorithms Your tests are queued behind your running builds
Details
ci/circleci: tests.unit.threads Your tests are queued behind your running builds
Details
ci/circleci: checkout_code Your tests passed on CircleCI!
Details
ci/circleci: clang_tidy Your tests passed on CircleCI!
Details
ci/circleci: configure Your tests passed on CircleCI!
Details
ci/circleci: core Your tests passed on CircleCI!
Details
ci/circleci: docs Your tests passed on CircleCI!
Details
ci/circleci: examples Your tests passed on CircleCI!
Details
ci/circleci: inspect Your tests passed on CircleCI!
Details
ci/circleci: tests.examples Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.compat Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.components Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.compute Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.config Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.include Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.lcos Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.parallel Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.performance_counters Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.plugins Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.runtime Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.traits Your tests passed on CircleCI!
Details
ci/circleci: tests.headers.util Your tests passed on CircleCI!
Details
ci/circleci: tests.performance Your tests passed on CircleCI!
Details
ci/circleci: tests.regressions Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.actions Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.agas Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.build Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.component Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.computeapi Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.diagnostics Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.lcos Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.block Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.container_algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.datapar_algorithms Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parallel.executors Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.parcelset Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.performance_counter Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.resource Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.serialization Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.traits Your tests passed on CircleCI!
Details
ci/circleci: tests.unit.util Your tests passed on CircleCI!
Details
pycicle daint-clang-3.8-boost-1.58.0-c++11-Release Build errors 0
Details
pycicle daint-clang-3.8-boost-1.58.0-c++11-Release Config errors 0
Details
pycicle daint-clang-3.8-boost-1.58.0-c++11-Release Test errors 0
Details
pycicle daint-clang-7.0-boost-1.68.0-c++17-Release Build errors 0
Details
pycicle daint-clang-7.0-boost-1.68.0-c++17-Release Config errors 0
Details
pycicle daint-clang-7.0-boost-1.68.0-c++17-Release Test errors 0
Details
pycicle daint-gcc-4.9.3-boost-1.58.0-c++11-Debug Build errors 0
Details
pycicle daint-gcc-4.9.3-boost-1.58.0-c++11-Debug Config errors 0
Details
pycicle daint-gcc-7.3.0-cuda-9.2.148_3.19-6.0.7.1_2.1__g3d9acc8-boost-1.68.0-c++11-Release Config errors 0
Details

@msimberg msimberg deleted the fix_guided_exec branch Nov 10, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.