私のディストリビューションのデフォルトコンパイラであるGCC 6.2.1を使用していくつかのCUDAコードを構築しようとしています(注:CUDAで公式にサポートされているGCCバージョンではないため、これを実験的と呼ぶことができます)。これは、GCC 4.9.3 および CUDA バージョン 7.5 と 8.0 の両方で正常にビルドされるコードです。
さて、次の(それに近い)最小限の例を作成すると:
#include <tuple>
int main() { return 0; }
コマンドラインで
nvcc -std=c++11 -Wno-deprecated-gpu-targets -o main main.cu
次のエラーが表示されます。
/usr/local/cuda/bin/../targets/x86_64-linux/include/math_functions.h(8897): error: cannot overload functions distinguished by return type alone
/usr/local/cuda/bin/../targets/x86_64-linux/include/math_functions.h(8901): error: cannot overload functions distinguished by return type alone
2 errors detected in the compilation of "/tmp/tmpxft_000071fe_00000000-9_b.cpp1.ii".
何故ですか?これを修正/回避するにはどうすればよいですか?