-
Notifications
You must be signed in to change notification settings - Fork 217
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
CUDA 9.2: Boost PropTree Error in ResourceLog #2714
Comments
(unconfirmed) -> (confirmed) |
I wonder if later releases of boost, such as 1.67.0, have the same problem still. If we are lucky we just need a later version. |
If we define an own namespace boost_swap_impl
{
BOOST_GPU_ENABLED
void swap(std::string& s1, std::string& s2)
{
#ifndef __CUDA_ARCH__
std::swap(left,right);
#endif
}
} |
Sounds good, can you also provide an upstream fix for Boost.Core https://github.com/boostorg/core/blob/boost-1.68.0/include/boost/core/swap.hpp#L31-L37 please ? |
Trying to create a reproducer with NVCC 9.2: docker pull nvidia/cuda:9.2-devel-ubuntu18.04
docker run -it nvidia/cuda:9.2-devel-ubuntu18.04
# in docker now
apt-get update
# boost 1.65.1, cmake 3.10.2, GNU 7.3.0
apt-get install -y git ca-certificates curl libboost-all-dev rsync cmake
cd /usr/local
git clone --branch release-0.4.0 https://github.com/ComputationalRadiationPhysics/picongpu.git
picongpu/bin/pic-create picongpu/share/picongpu/examples/LaserWakefield lwfa-dev
cd lwfa-dev
../picongpu/bin/pic-build -b cuda:30 This does not fail for me! |
I did try gcc-7.3.0. However, the gcc compiler installation fails in spack. It gives error at some stage that isl is not found, whereas isl is already installed in the spack. A repeat install of gcc in spack shows that isl is installed. However, when it reaches to the step of gcc, it fails giving this error. I tried with gcc-8.1.0 and again it gives same error. |
Can you show me the error when installing GCC 7.3 please? |
I did not save the error. I will do it again and post it here. |
fix ComputationalRadiationPhysics#2714 Boost is shipping there swap implementation with support for the device side if `BOOST_GPU_ENABLED` is `__host__ __device__` but is calling a pure host function `std::swap` within the device code. Even if swap is not called on the device this implementation can pull host only code inside the device compile path of CUDA. - provide a device side empty implementation for swap if the arguments are `std:.string`
fix ComputationalRadiationPhysics#2714 Boost is shipping there swap implementation with support for the device side if `BOOST_GPU_ENABLED` is `__host__ __device__` but is calling a pure host function `std::swap` within the device code. Even if swap is not called on the device this implementation can pull host only code inside the device compile path of CUDA. - provide a device side empty implementation for swap if the arguments are `std:.string`
fix ComputationalRadiationPhysics#2714 Boost is shipping there swap implementation with support for the device side if `BOOST_GPU_ENABLED` is `__host__ __device__` but is calling a pure host function `std::swap` within the device code. Even if swap is not called on the device this implementation can pull host only code inside the device compile path of CUDA. - provide a device side empty implementation for swap if the arguments are `std:.string`
should be fixed with #2721 |
fix ComputationalRadiationPhysics#2714 Boost is shipping there swap implementation with support for the device side if `BOOST_GPU_ENABLED` is `__host__ __device__` but is calling a pure host function `std::swap` within the device code. Even if swap is not called on the device this implementation can pull host only code inside the device compile path of CUDA. - provide a device side empty implementation for swap if the arguments are `std:.string`
fix ComputationalRadiationPhysics#2714 Boost is shipping there swap implementation with support for the device side if `BOOST_GPU_ENABLED` is `__host__ __device__` but is calling a pure host function `std::swap` within the device code. Even if swap is not called on the device this implementation can pull host only code inside the device compile path of CUDA. - provide a device side empty implementation for swap if the arguments are `std:.string`
fix ComputationalRadiationPhysics#2714 Boost is shipping there swap implementation with support for the device side if `BOOST_GPU_ENABLED` is `__host__ __device__` but is calling a pure host function `std::swap` within the device code. Even if swap is not called on the device this implementation can pull host only code inside the device compile path of CUDA. - provide a device side empty implementation for swap if the arguments are `std:.string`
In the combination of
@ajitup73 in #2704 sees the following compile error in our
ResourceLog
plugin:Have we seen this before? It looks to me, that somehow a
std::string
signature slips into device code. Maybe viadefault
ctors in boost functionality for property trees inside the otherwise host-onlynotify
?Full outputs:
The text was updated successfully, but these errors were encountered: