Subject: [Boost-bugs] [Boost C++ Libraries] #13049: nvcc CT Error: Boost 1.64.0 & CUDA 8.0
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-05-30 11:58:21
#13049: nvcc CT Error: Boost 1.64.0 & CUDA 8.0
-------------------------------------------------+-------------------------
Reporter: r.widera@⦠| Owner: karsten
Type: Bugs | Status: new
Milestone: To Be Determined | Component: odeint
Version: Boost 1.64.0 | Severity: Showstopper
Keywords: cuda nvcc odeint config cudafe |
noexcept C++11 |
-------------------------------------------------+-------------------------
Compiling a host program which uses boost odeint integrate with nvcc from
CUDA8.0 is not possible.
The issue has been reported to Nvidia and will be fixed in CUDA 9.
== Error ==
nvcc is crashing with an internal cudafe error
{{{
/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp(66): internal
error: assertion failed at:
"/dvs/p4/build/sw/rel/gpu_drv/r361/r361_00/drivers/compiler/edg/EDG_4.10/src/types.c",
line 7537
1 catastrophic error detected in the compilation of
"/tmp/tmpxft_0000369f_00000000-9_main.cpp1.ii".
}}}
== Example ==
{{{
#include <boost/array.hpp>
// this include is needed to compile with cuda 7.5
// boost bug: https://svn.boost.org/trac/boost/ticket/12516
// see fix
https://github.com/boostorg/serialization/commit/1d86261581230e2dc5d617a9b16287d326f3e229
#include <boost/serialization/array_wrapper.hpp>
#include <boost/numeric/odeint/integrate/integrate.hpp>
#include <iostream>
typedef double float_64;
namespace foo{
struct Probability
{
Probability() {}
template<typename T_State>
void operator()(const T_State &, T_State &dpdtheta, const float_64
theta) const
{
const float_64 theta2 = theta*theta;
dpdtheta[0] = theta2;
}
};
}
int main()
{
namespace odeint = boost::numeric::odeint;
typedef boost::array<float_64, 1> state_type;
state_type integral_result = {0.0};
const float_64 lowerLimit = 0.0;
const float_64 upperLimit = 0.1;
const float_64 stepwidth = (2000 - 10) / float_64(1000.0);
foo::Probability integrand;
odeint::integrate(integrand, integral_result, lowerLimit, upperLimit,
stepwidth);
std::cout<<integral_result[0]<<std::endl;
return 0;
}
}}}
=== Compile ===
{{{
nvcc -std=c++11 main.cu -I$BOOST_ROOT/boost_1_64_0/include
-L$BOOST_ROOT/boost_1_64_0/lib
}}}
I will provide a pull request in the next hours adding
`-DBOOST_NO_CXX11_NOEXCEPT` to boost/config for nvcc CUDA 8.0
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/13049> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-05-30 12:02:20 UTC