antonmks / Alenka

GPU database engine
Other
1.17k stars 120 forks source link

Compile fail with Thrust 1.5 #6

Closed georgezhlw closed 11 years ago

georgezhlw commented 11 years ago

get the following error when compile on Mac OS X:

Alenka]$ make /usr/local/cuda/bin/nvcc -O3 -arch=sm_20 -m64 -I/usr/local/boost_1_53_0 -c bison.cu fl.l(34): warning: statement is unreachable

fl.l(35): warning: statement is unreachable .. lex.yy.c(804): warning: label "find_rule" was declared but never referenced

lex.yy.c(1558): warning: statement is unreachable

bison.y(824): error: no instance of function template "thrust::stable_partition" matches the argument list argument types are: (thrust::detail::normal_iterator<thrust::device_ptr>, thrust::detail::normal_iterator<thrust::device_ptr>, thrust::device_ptr<__nv_bool>, thrust::identity)

bison.y(825): error: no instance of function template "thrust::stable_partition" matches the argument list argument types are: (thrust::detail::normal_iterator<thrust::device_ptr>, thrust::detail::normal_iterator<thrust::device_ptr>, thrust::device_ptr<__nv_bool>, thrust::identity)

2 errors detected in the compilation of "/tmp/tmpxft_000004f6_00000000-6_bison.cpp1.ii". make: *\ [bison.o] Error 2

I am using CUDA5.0 bundled thrust library: $ grep 100503 /usr/local/cuda/include/thrust/version.h

define THRUST_VERSION 100503

regards, George

antonmks commented 11 years ago

Hello George ! To compile Alenka you need to download and install Thrust 1.7. You also need to download and build CUDPP - it is used for join operations (code.google.com/p/cudpp/)

Regards, Anton

georgezhlw commented 11 years ago

Thanks Anton, that works. But I need remove cucpp.o from Makefile and add -lcudpp link flag.

antonmks commented 11 years ago

Thanks, I updated the Makefile.

sam1988 commented 11 years ago

i also meet this error and i download the thrust 1.7 https://github.com/thrust/thrust and try to install it ,but still didn't work how to install thrust 1.7 correctly?

tried to extract the thrust zipfile to alenka directory but still error or put the thrust fold to repalce the thrust fold in the directory of C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include still error

antonmks commented 11 years ago

Simply go to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include\ and rename thrust to thrust.old and unzip the new version of thrust there.

sam1988 commented 11 years ago

installed,but some error happen when loading

E:\Alenka-master>alenka.exe load_customer.sql Process count = 6200000 LOAD: C customer.tbl 3 | STORE: C customer LOADING customer.tbl |

and then occur a dialog box that: alenka has been stopped working

i tracked it and seems error happen in calling pfor_compress line 468: thrust::device_ptr s((int_type*)source);

antonmks commented 11 years ago

Do you actually have customer.tbl file with data in alenka's directory ?

sam1988 commented 11 years ago

i do use dbgen to generate 1G file and put them in alenka's directory, since the output includes:"LOADING customer.tbl |" so i think it can be read ,and error happens when calling thrust::device_ptr s((int_type*)source); is my thrust didn't install correctly? i do installed it by the way you told me

antonmks commented 11 years ago

Well, if you compiled Alenka successfully there shouldn't be a problem. Which version of CUDA do you have ? Which GPU do you use and how much memory it has ?

sam1988 commented 11 years ago

nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2012 NVIDIA Corporation Built on Tue_Sep_25_09:18:50_PDT_2012 Cuda compilation tools, release 5.0, V0.2.1221

GPU: geforce 9600 gso memory is about 200M

antonmks commented 11 years ago

Where are you guys get these cards, this thing must be 10 years old. Ok, so your card doesn't support -arch=sm_20. Your the only option is to compile it with -arch=sm_13. Oh, and the joins are not gonna work too because CUDPP requires Fermi architecture for atomic operations or something like that. Which means that you need GTX 400 or better.

sam1988 commented 11 years ago

i changed my device to gtx580 and it works.... execute q1 and the data is 1G here is output ,i think it works.....

E:\Alenka-master>alenka.exe q1.sql Process count = 6200000 BINARY LOAD: A lineitem FILTER B A 1218834432 MAP CHECK R filter is finished 5916591 1127477248 filter time 0.427 1205727232 SELECT D B cycle 0 select mem 1157623808 final select 4 select time 0.189 STORE: D mytest.txt | SQL scan parse worked cycle time 0.687

antonmks commented 11 years ago

Looks fine, might wanna check the results in mytest.txt

sam1988 commented 11 years ago

how to debugging the project on windows if i want to view some variables' status?

antonmks commented 11 years ago

printf or cout, it's your choice.

miltonyukio commented 11 years ago

hi im having a hard time compiling alenka for latest ubuntu with no success so far, can you send a linux binary to my email? miltonyukio2@gmail.com thanks

miltonyukio commented 11 years ago

when compiling cudpp_src_2.0 it generates libcudpp.so but the make file asks for a -libcudpp am i doing something wrong?

miltonyukio commented 11 years ago

Im compiling cudpp_src_2.0 as a static library , should i compile as share ( dynamic ) ?

miltonyukio commented 11 years ago

i think i made some progress , but now im getting the error: /usr/bin/ld: cannot find -libcudpp_hash64 it loads -lcuda but when i try to find it with find / =name 'lcuda*' it shows me nothing i have put libcudpp_hash64.a in all places but nothing works. maybe my computer hd or memory have some liking problems?

sam1988 commented 11 years ago

should complie cudpp in this way: http://henry2005.jimdo.com/2011/08/29/compile-cudpp-2-0/ and get two libraries created ,and put it the alenka directory the two libraries are cudpp64d.lib and cudpp_hash64d.lib

miltonyukio commented 11 years ago

thanks your instructions are alright but they are for windows. .lib are libs for windows. for linux they are .so or .a
anyway i`ll keep trying a little more.

antonmks commented 11 years ago

It should be the same on Linux and Windows, as long as you have libraries libcudpp_hash64.a and libcudpp64.a it should link them. Make sure that you generate 64bit release version of CUDPP. What is the exact error that you are getting ?

miltonyukio commented 11 years ago

when I send the command: objdump -f libcudpp.a | grep ^architecture it shows: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011: architecture: i386:x86-64, flags 0x00000011:

I have put libcudpp.a and libcudpp_hash.a in all possible directories name it: /lib
/Alenka-master /cudpp_src_2.0 /Alenka-master/lib

miltonyukio commented 11 years ago

It seems I made a improvement again. Linux is so full of tiny rules that if you dont follow all of them the whole thing just doesnt work. In windows you can rename the lib files to the ones you have described in makefile in linux you have to make soft links to the libs using command ln. But now I get some new errors: In file included from /usr/local/cuda-5.0/bin/crt/link.stub:79:0: /tmp/tmpxft_000011c7_00000000-1_alenka_dlink.reg.c:2:1: error: redefinition of ‘const unsigned char def_module_id_str__NV_MODULE_ID []’

and a lot of similar errors more.

antonmks commented 11 years ago

I haven't seen these errors before. Probably has something to do with the libraries.I compiled CUDPP on Linux using CMake, seems like it worked well. I'm not sure what else to advise you, just try to compile the libraries so you get 2 files : libcudpp64.a and libcudpp_hash64.a

On Sat, Apr 27, 2013 at 3:17 PM, miltonyukio notifications@github.comwrote:

It seems I made a improvement again. Linux is so full of tiny rules that if you dont follow all of them the whole thing just doesnt work. In windows you can rename the lib files to the ones you have described in makefile in linux you have to make soft links to the libs using command ln. But now I get some new errors: In file included from /usr/local/cuda-5.0/bin/crt/link.stub:79:0: /tmp/tmpxft_000011c7_00000000-1_alenka_dlink.reg.c:2:1: error: redefinition of ‘const unsigned char def_module_id_str__NV_MODULE_ID []’

and a lot of similar errors more.

— Reply to this email directly or view it on GitHubhttps://github.com/antonmks/Alenka/issues/6#issuecomment-17115205 .

miltonyukio commented 11 years ago

what linux distribution did you use when compiling ?