Skip to content

Commit 5e8a734

Browse files
committed
Adapting HPX CUDA modules to C++ modules
-flyby: remove support for HPX::auto_wrap_main for MSVC Signed-off-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>
1 parent 57c0b46 commit 5e8a734

97 files changed

Lines changed: 676 additions & 594 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1407,6 +1407,9 @@ if((HPX_WITH_NETWORKING AND HPX_WITH_PARCELPORT_MPI)
14071407
# hpx_add_compile_flag() below does not add the extra options to the top
14081408
# level directory
14091409
hpx_add_config_define(OMPI_IMPORTS)
1410+
if(HPX_WITH_CUDA)
1411+
hpx_add_config_cond_define(NOMINMAX)
1412+
endif()
14101413
endif()
14111414
endif()
14121415

cmake/templates/std_headers.hpp.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include <hpx/config/defines.hpp>
1313
#include <hpx/config/compiler_specific.hpp>
14+
#include <hpx/config/modules_enabled.hpp>
1415

1516
@cxx_standard_headers@
1617
#if defined(HPX_HAVE_STDEXEC)
@@ -65,3 +66,7 @@
6566

6667
#include <asio.hpp>
6768
#include <hwloc.h>
69+
70+
#if defined(HPX_HAVE_MODULE_THRUST)
71+
#include <hpx/thrust/thrust_headers.hpp>
72+
#endif

components/containers/partitioned_vector/include/hpx/components/containers/partitioned_vector/partitioned_vector_segmented_iterator.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
#include <hpx/config.hpp>
1717
#include <hpx/assert.hpp>
18-
#include #include < hpx / modules / algorithms.hpp>
18+
#include <hpx/modules/algorithms.hpp>
1919
#include <hpx/modules/async_base.hpp>
2020
#include <hpx/modules/iterator_support.hpp>
2121
#include <hpx/naming_base/id_type.hpp>

docs/sphinx/manual/creating_hpx_projects.rst

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,12 @@ implicitly using ``main()`` as the entry point. If you want the same wrapping
265265
behavior without including :hpx-header:`wrap/include,hpx/hpx_main.hpp`, link to
266266
the ``HPX::auto_wrap_main`` target instead. This enables the runtime
267267
initialization around ``main()`` unconditionally and is useful for codebases
268-
where adding the header to ``main.cpp`` is impractical.
268+
where adding the header to ``main.cpp`` is impractical
269+
270+
.. note::
271+
272+
The use of ``HPX::auto_wrap_main`` is not supported when using the
273+
native Windows MSVC toolchain.
269274

270275
If you want to use the facilities exposed by ``hpx::runtime_manager`` in binaries
271276
that were not linked as executables (e.g., in shared libraries), you will need

docs/sphinx/manual/starting_the_hpx_runtime.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ you cannot or do not want to include ``hpx/hpx_main.hpp`` in ``main.cpp``, you
5959
can instead link against ``HPX::auto_wrap_main``. That target enables the same
6060
runtime startup path without needing the header-triggered opt-in.
6161

62+
.. note::
63+
64+
The use of ``HPX::auto_wrap_main`` is not supported when using the
65+
native Windows MSVC toolchain.
6266

6367
.. note::
6468

libs/CMakeLists.txt

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -184,21 +184,30 @@ add_library(hpx_interface_wrap_main INTERFACE)
184184
target_link_libraries(
185185
hpx_interface_wrap_main INTERFACE $<${_is_executable}:HPXInternal::hpx_wrap>
186186
)
187-
add_library(hpx_interface_auto_wrap_main INTERFACE)
188-
target_link_libraries(
189-
hpx_interface_auto_wrap_main
190-
INTERFACE $<${_is_executable}:HPXInternal::hpx_auto_wrap>
191-
)
192187

193188
target_link_libraries(wrap_main INTERFACE hpx_interface_wrap_main)
194-
target_link_libraries(auto_wrap_main INTERFACE hpx_interface_auto_wrap_main)
195189
target_link_libraries(init INTERFACE HPXInternal::hpx_init)
196190
target_link_libraries(hpx INTERFACE hpx_interface)
197191

198-
# HPX::component is to be linked privately to all HPX components NOTE: The
199-
# _is_library guard only prevents simple mistakes of linking HPX::component to
200-
# executables. It does not prevent linking it to libraries that are not
201-
# components.
192+
set(hpx_targets hpx wrap_main init plugin component)
193+
set(hpx_internal_targets hpx_full hpx_interface hpx_interface_wrap_main)
194+
195+
if(NOT MSVC)
196+
add_library(hpx_interface_auto_wrap_main INTERFACE)
197+
target_link_libraries(
198+
hpx_interface_auto_wrap_main
199+
INTERFACE $<${_is_executable}:HPXInternal::hpx_auto_wrap>
200+
)
201+
target_link_libraries(auto_wrap_main INTERFACE hpx_interface_auto_wrap_main)
202+
set(hpx_targets ${hpx_targets} auto_wrap_main)
203+
set(hpx_internal_targets ${hpx_internal_targets} hpx_interface_auto_wrap_main)
204+
endif()
205+
206+
# HPX::component is to be linked privately to all HPX components
207+
#
208+
# NOTE: The _is_library guard only prevents simple mistakes of linking
209+
# HPX::component to executables. It does not prevent linking it to libraries
210+
# that are not components.
202211
add_library(component INTERFACE)
203212
target_compile_definitions(
204213
component
@@ -219,11 +228,6 @@ target_compile_definitions(
219228
"$<${_is_library}:HPX_PLUGIN_NAME_DEFAULT=hpx_$<TARGET_PROPERTY:NAME>>"
220229
)
221230

222-
set(hpx_targets hpx wrap_main auto_wrap_main init plugin component)
223-
set(hpx_internal_targets hpx_full hpx_interface hpx_interface_wrap_main
224-
hpx_interface_auto_wrap_main
225-
)
226-
227231
# cmake-format: off
228232
install(
229233
TARGETS ${hpx_targets}

libs/core/algorithms/include/hpx/parallel/algorithms/detail/sample_sort.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
///////////////////////////////////////////////////////////////////////////////
3131
namespace hpx::parallel::detail {
3232

33-
HPX_CXX_EXPORT static constexpr std::uint32_t sample_sort_limit_per_task = 1
33+
HPX_CXX_EXPORT inline constexpr std::uint32_t sample_sort_limit_per_task = 1
3434
<< 16;
3535

3636
/// \struct sample_sort

libs/core/algorithms/include/hpx/parallel/algorithms/exclusive_scan.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ namespace hpx::parallel {
322322
// Our own version of the sequential exclusive_scan.
323323
HPX_CXX_EXPORT template <typename InIter, typename Sent,
324324
typename OutIter, typename T, typename Op>
325-
static constexpr util::in_out_result<InIter, OutIter>
325+
constexpr util::in_out_result<InIter, OutIter>
326326
sequential_exclusive_scan(
327327
InIter first, Sent last, OutIter dest, T init, Op&& op)
328328
{
@@ -338,7 +338,7 @@ namespace hpx::parallel {
338338

339339
HPX_CXX_EXPORT template <typename InIter, typename OutIter, typename T,
340340
typename Op>
341-
static constexpr T sequential_exclusive_scan_n(
341+
constexpr T sequential_exclusive_scan_n(
342342
InIter first, std::size_t count, OutIter dest, T init, Op&& op)
343343
{
344344
T temp = init;

libs/core/algorithms/include/hpx/parallel/algorithms/inclusive_scan.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,7 @@ namespace hpx::parallel {
456456
// Our own version of the sequential inclusive_scan.
457457
HPX_CXX_EXPORT template <typename InIter, typename Sent,
458458
typename OutIter, typename T, typename Op>
459-
static constexpr util::in_out_result<InIter, OutIter>
459+
constexpr util::in_out_result<InIter, OutIter>
460460
sequential_inclusive_scan(
461461
InIter first, Sent last, OutIter dest, T init, Op&& op)
462462
{
@@ -470,7 +470,7 @@ namespace hpx::parallel {
470470

471471
HPX_CXX_EXPORT template <typename InIter, typename Sent,
472472
typename OutIter, typename Op>
473-
static constexpr util::in_out_result<InIter, OutIter>
473+
constexpr util::in_out_result<InIter, OutIter>
474474
sequential_inclusive_scan_noinit(
475475
InIter first, Sent last, OutIter dest, Op&& op)
476476
{
@@ -486,7 +486,7 @@ namespace hpx::parallel {
486486

487487
HPX_CXX_EXPORT template <typename InIter, typename OutIter, typename T,
488488
typename Op>
489-
static constexpr T sequential_inclusive_scan_n(
489+
constexpr T sequential_inclusive_scan_n(
490490
InIter first, std::size_t count, OutIter dest, T init, Op&& op)
491491
{
492492
for (/* */; count-- != 0; (void) ++first, ++dest)

libs/core/algorithms/include/hpx/parallel/algorithms/reduce_by_key.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ namespace hpx::parallel::detail {
303303
HPX_CXX_EXPORT template <typename ExPolicy, typename RanIter,
304304
typename RanIter2, typename FwdIter1, typename FwdIter2,
305305
typename Compare, typename Func>
306-
static util::in_out_result<FwdIter1, FwdIter2> reduce_by_key_impl(
306+
util::in_out_result<FwdIter1, FwdIter2> reduce_by_key_impl(
307307
ExPolicy&& policy, RanIter key_first, RanIter key_last,
308308
RanIter2 values_first, FwdIter1 keys_output, FwdIter2 values_output,
309309
Compare&& comp, Func&& func)

0 commit comments

Comments
 (0)