Opened 5 years ago
Last modified 5 years ago
#13049 new Bugs
nvcc CT Error: Boost 1.64.0 & CUDA 8.0
Reported by: | Owned by: | karsten | |
---|---|---|---|
Milestone: | To Be Determined | Component: | odeint |
Version: | Boost 1.64.0 | Severity: | Showstopper |
Keywords: | cuda nvcc odeint config cudafe noexcept C++11 | Cc: |
Description
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
Change History (2)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Reproduced and fixed in https://github.com/boostorg/config/commit/9b8de65f1dae960ecfde689a99c83f39ba60e3f9
Note:
See TracTickets
for help on using tickets.
I provided a fix on [github #152](https://github.com/boostorg/config/pull/152)