This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [PATCH] Integration of parallel standard algorithms for c++17
Hi!
If that's of any help to document the version dependencies:
On Fri, 22 Mar 2019 00:04:30 +0000, Jonathan Wakely <jwakely@redhat.com> wrote:
> I keep forgetting to add that docs for this stuff will be coming some
> time next week, describing the TBB dependency that's needed to use
> these parallel algos.
On an Ubuntu 12.10 x86_64 GNU/Linux system (yes, a bit old by now), I saw
all these test UNSUPPORTED.
I then installed 'libtbb-dev' (and the implied 'libtbb2'; both version
4.0+r233-1), and then saw all? tests FAIL because of:
[...]/libstdc++-v3/include/pstl/parallel_backend_tbb.h:25: fatal error: tbb/task_arena.h: No such file or directory
I then manually installed the Ubuntu trusty (14.04LTS) version
4.2~20130725-1.1ubuntu1 packages, and then saw all? tests FAIL because
of:
[...]/libstdc++-v3/include/pstl/parallel_backend_tbb.h:29: error: #error Intel(R) Threading Building Blocks 2018 is required; older versions are not supported.
So I suppose I need the most recent Ubuntu disco version 2018~U6-4
packages. Because of:
dpkg-deb: error: archive 'libtbb-dev_2018~U6-4_amd64.deb' contains not understood data member control.tar.xz, giving up
..., I manually had to convert to '*.gz' files the'.xz' files inside of
these '*.deb' archives, which yet still failed to install:
dpkg: dependency problems prevent configuration of libtbb2:amd64:
libtbb2:amd64 depends on libstdc++6 (>= 7); however:
Version of libstdc++6:amd64 on system is 4.7.2-2ubuntu1.
..., which isn't really a problem as I'll obviously be testing against a
new-enough GCC/libstdc++ ;-) -- so, installed these packages with
'--force-depends-version'.
With that, the tests then all PASS for the default multilib, but all?
FAIL for '-m32' testing:
[...]/ld: cannot find -ltbb
There is no 32-bit 'libtbb' available. I suppose the problem is that
'check_effective_target_tbb-backend' just does a 'preprocess' test
checking for existence of '<tbb/tbb.h>', but doesn't actually try to
link, whereas all? the test cases specify '-ltbb' via 'dg-options'.
That said, instead of specifying:
// { dg-options "-std=gnu++17 -ltbb" }
// { dg-do run { target c++17 } }
// { dg-require-effective-target tbb-backend }
... in all? these test case files, isn't there some DejaGnu directive
that checks whether support is available (else UNSUPPORTED), while also
adding the necessary compiler options (here: '-ltbb')?
Also, shouldn't 'check_effective_target_tbb-backend' (and also some of
the other checks in 'libstdc++-v3/testsuite/lib/libstdc++.exp'?) be using
'check_v3_target_prop_cached' to avoid checking the same things again and
again?
Grüße
Thomas