FourierConvolutionCUDALib
FourierConvolutionCUDALib copied to clipboard
WIP added benchmark case for FFT convolutions
don't merge yet, I am trying to use google/benchmark with this c++2003 library and am failing miserably
if anyone, knows how to link libbenchmark.a into a c++2003 binary and resolve the following linking error:
/sw/apps/gcc/5.4.0/bin/c++ -O3 -DNDEBUG -rdynamic CMakeFiles/bench_gpu_convolve.dir/bench_gpu_convolve_generated_bench_gpu_convolve.cu.o -o bench_gpu_convolve -L/sw/apps/boost/1.66.0/lib -L/home/steinbac/development/FourierConvolutionCUDALib/build/src -Wl,-rpath,/sw/apps/boost/1.66.0/lib:/home/steinbac/development/FourierConvolutionCUDALib/build/src:/sw/apps/cuda/8.0.61/lib64 /sw/apps/cuda/8.0.61/lib64/libcudart_static.a -lpthread -ldl -lrt /home/steinbac/software/benchmark/1.3.0/lib/libbenchmark.a ../src/libFourierConvolutionCUDALib.so -pthread -lstdc++ /sw/apps/cuda/8.0.61/lib64/libcufft.so /sw/apps/cuda/8.0.61/lib64/libcudart_static.a -lpthread -ldl -lrt -lcuda /sw/apps/cuda/8.0.61/lib64/libcufft.so
/home/steinbac/software/benchmark/1.3.0/lib/libbenchmark.a(benchmark.cc.o): In function `benchmark::RunSpecifiedBenchmarks(benchmark::BenchmarkReporter*, benchmark::BenchmarkReporter*)':
benchmark.cc:(.text+0x223c): undefined reference to `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())'
/home/steinbac/software/benchmark/1.3.0/lib/libbenchmark.a(benchmark.cc.o): In function `std::thread::_State_impl<std::_Bind_simple<void (*(benchmark::internal::Benchmark::Instance const*, unsigned long, int, benchmark::internal::ThreadManager*))(benchmark::internal::Benchmark::Instance const*, unsigned long, int, benchmark::internal::ThreadManager*)> >::~_State_impl()':
benchmark.cc:(.text._ZNSt6thread11_State_implISt12_Bind_simpleIFPFvPKN9benchmark8internal9Benchmark8InstanceEmiPNS3_13ThreadManagerEES7_miS9_EEED2Ev[_ZNSt6thread11_State_implISt12_Bind_simpleIFPFvPKN9benchmark8internal9Benchmark8InstanceEmiPNS3_13ThreadManagerEES7_miS9_EEED5Ev]+0x8): undefined reference to `std::thread::_State::~_State()'
/home/steinbac/software/benchmark/1.3.0/lib/libbenchmark.a(benchmark.cc.o): In function `std::thread::_State_impl<std::_Bind_simple<void (*(benchmark::internal::Benchmark::Instance const*, unsigned long, int, benchmark::internal::ThreadManager*))(benchmark::internal::Benchmark::Instance const*, unsigned long, int, benchmark::internal::ThreadManager*)> >::~_State_impl()':
benchmark.cc:(.text._ZNSt6thread11_State_implISt12_Bind_simpleIFPFvPKN9benchmark8internal9Benchmark8InstanceEmiPNS3_13ThreadManagerEES7_miS9_EEED0Ev[_ZNSt6thread11_State_implISt12_Bind_simpleIFPFvPKN9benchmark8internal9Benchmark8InstanceEmiPNS3_13ThreadManagerEES7_miS9_EEED5Ev]+0xc): undefined reference to `std::thread::_State::~_State()'
/home/steinbac/software/benchmark/1.3.0/lib/libbenchmark.a(benchmark.cc.o):(.rodata._ZTINSt6thread11_State_implISt12_Bind_simpleIFPFvPKN9benchmark8internal9Benchmark8InstanceEmiPNS3_13ThreadManagerEES7_miS9_EEEE[_ZTINSt6thread11_State_implISt12_Bind_simpleIFPFvPKN9benchmark8internal9Benchmark8InstanceEmiPNS3_13ThreadManagerEES7_miS9_EEEE]+0x10): undefined reference to `typeinfo for std::thread::_State'
please let me know.
Here is the current output:
$ ./tests/bench_gpu_convolve
inplace, 10x, (image 64**3, kernel 3**3) 2.456858s wall, 0.580000s user + 1.700000s system = 2.280000s CPU (92.8%)
I had to ditch libbenchmark as I was unable to resolve above mentioned linking problems under Linux.