FourierConvolutionCUDALib icon indicating copy to clipboard operation
FourierConvolutionCUDALib copied to clipboard

WIP added benchmark case for FFT convolutions

Open psteinb opened this issue 6 years ago • 1 comments

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.

psteinb avatar Apr 13 '18 16:04 psteinb

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.

psteinb avatar Apr 13 '18 16:04 psteinb