Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support CUDA #51

Open
rongou opened this issue Nov 7, 2020 · 6 comments
Open

Support CUDA #51

rongou opened this issue Nov 7, 2020 · 6 comments

Comments

@rongou
Copy link

rongou commented Nov 7, 2020

Not sure how much effort it would take to support compiling CUDA code. Writing a new model for nvcc and friends?

@chadbrewbaker
Copy link

Could you point to a git repo of a sample nvcc project?

@rongou
Copy link
Author

rongou commented Nov 12, 2020

The one I'm most interested in speeding up is https://github.com/rapidsai/cudf, but it's a fairly complex project. The cpp/cuda code is in the cpp directory.

Another example is https://github.com/NVIDIA/thrust.

@chadbrewbaker
Copy link

chadbrewbaker commented Nov 12, 2020

https://github.com/rapidsai/cudf/tree/branch-0.17/cpp Just a cmake build.

cd cpp; mkdir -p build; cd build; cmake ../ 
# Run gg on the Makefile

@rongou
Copy link
Author

rongou commented Nov 12, 2020

I tried, it doesn't work though.

@chadbrewbaker
Copy link

Could you give the errors here or link to a gist? I'll take a look. I'm porting gg now to AWSLinux2.

@rongou
Copy link
Author

rongou commented Nov 18, 2020

$ gg infer make -j$(nproc)
[  1%] Built target stringify
[  2%] Stringify headers for use in JIT compiled code
→ Loading the thunks...  done (3 ms).
[  2%] Built target stringify_run
Scanning dependencies of target cudf_base
[  3%] Building CXX object CMakeFiles/cudf_base.dir/src/binaryop/jit/code/traits.cpp.o
[  4%] Building CXX object CMakeFiles/cudf_base.dir/src/binaryop/jit/code/kernel.cpp.o
[  5%] Building CXX object CMakeFiles/cudf_base.dir/src/aggregation/aggregation.cpp.o
[  5%] Building CUDA object CMakeFiles/cudf_base.dir/src/aggregation/aggregation.cu.o
[  5%] Building CXX object CMakeFiles/cudf_base.dir/src/binaryop/binaryop.cpp.o
[  6%] Building CXX object CMakeFiles/cudf_base.dir/src/binaryop/jit/code/operation.cpp.o
[  6%] Building CXX object CMakeFiles/cudf_base.dir/src/aggregation/result_cache.cpp.o
[  6%] Building CUDA object CMakeFiles/cudf_base.dir/src/column/column.cu.o
[  6%] Building CUDA object CMakeFiles/cudf_base.dir/src/binaryop/compiled/binary_ops.cu.o
[  7%] Building CUDA object CMakeFiles/cudf_base.dir/src/column/column_device_view.cu.o
[  7%] Building CUDA object CMakeFiles/cudf_base.dir/src/bitmask/null_mask.cu.o
[  7%] Building CXX object CMakeFiles/cudf_base.dir/src/column/column_factories.cpp.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/binaryop/jit/code/kernel.cpp
├─ generating make dependencies file... done.
├─ preprocessed: TwpU37ygrqllBotAfN.NPcw9b6tljKEPDDLMiWMeA.2U000007ec
├─ compiled: TOT3YnlVj99B6bWjFOlI91.T62hgaOuCeh.eFLVY9aXA00000578
├─ assembled: TmJGubI9cI2n1x3O66L9AwOifFBr2Bzdr1VBSZgGOy.c0000055f
╰╼ output: CMakeFiles/cudf_base.dir/src/binaryop/jit/code/kernel.cpp.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/binaryop/jit/code/traits.cpp
├─ generating make dependencies file... done.
├─ preprocessed: TM6DrgN5CtesWmWUwVAJVskdF8DcNAqezPzrQAZVauL0000007ec
├─ compiled: TVWnXH4I9wsR9aJ2LiykcrP6QfwEpgtkKyDrn20jHeAk00000578
├─ assembled: TLUz7APJFvwOKIi8287_hkfGZwTrHYgq2PAfkrzhs6OI0000055f
╰╼ output: CMakeFiles/cudf_base.dir/src/binaryop/jit/code/traits.cpp.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/binaryop/jit/code/operation.cpp
├─ generating make dependencies file... done.
├─ preprocessed: TznUvOvwjQ6wnTgTVat7U.GJrOYiIeeZlZT7ezWeR.wM000007f8
├─ compiled: T3iZVI_.rYW1c7wJ9FCszVRrFtQWGh3BOsH4huQr6y0c00000578
├─ assembled: TK5STPFeV3Y09ej2iLi04Ksp7kNpLXfkebgFxe.rMYDs00000562
╰╼ output: CMakeFiles/cudf_base.dir/src/binaryop/jit/code/operation.cpp.o
[  8%] Building CXX object CMakeFiles/cudf_base.dir/src/column/column_view.cpp.o
[  8%] Building CUDA object CMakeFiles/cudf_base.dir/src/copying/concatenate.cu.o
[  8%] Building CUDA object CMakeFiles/cudf_base.dir/src/copying/contiguous_split.cu.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/aggregation/aggregation.cpp
├─ generating make dependencies file... done.
├─ preprocessed: T8m5Fbjp7IdFtenBZStdb9hhEv3wtoV6jwow0TZEjliw00012445
├─ compiled: TzbzPpqppN84F_ZQBfN.UxSUxwGKbWE1VxpNUKd1Lwos00000578
├─ assembled: TI3A4G6Eac8jHH18jArZnZ0Ts_Yzo6rhLJXNWqgjYzhg0000055e
╰╼ output: CMakeFiles/cudf_base.dir/src/aggregation/aggregation.cpp.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/aggregation/result_cache.cpp
├─ generating make dependencies file... done.
├─ preprocessed: Tfn0cPGEmsybonU7CCUFC_khO3Is3CwLZnhhxRvpNX8s000157d5
├─ compiled: TsWWwwTqBuxRHSKflN8.ZJmGRz8pMa.vc1ybPxYsJgOc00000578
├─ assembled: TtcDeQcZ5pWAe4_sFARigvB5imfCkgcXXN.10nCfBepc0000055f
╰╼ output: CMakeFiles/cudf_base.dir/src/aggregation/result_cache.cpp.o
[  9%] Building CXX object CMakeFiles/cudf_base.dir/src/copying/copy.cpp.o
[  9%] Building CUDA object CMakeFiles/cudf_base.dir/src/copying/copy.cu.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/column/column_factories.cpp
├─ generating make dependencies file... done.
├─ preprocessed: T_0vkU.XO0Cnq3LfawvjQ13xM9k66v21wZFYxnyxNU4k0001a37b
├─ compiled: TKWGQ4e2GLrj0FGHmwRR9VO3v.IV6ExefN6iLjzvpres00000578
├─ assembled: TlQEZmFekdP8FMG2_4GvLqlcQmDFKEKx2mh0TrlmEZjQ0000055e
╰╼ output: CMakeFiles/cudf_base.dir/src/column/column_factories.cpp.o
[ 10%] Building CUDA object CMakeFiles/cudf_base.dir/src/copying/copy_range.cu.o
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/column/column_view.cpp
├─ generating make dependencies file... done.
├─ preprocessed: TK9pH5MbIpeEEEDAH22dSH5NG8S7yOkkNR96lrm5FC8I0001553f
├─ compiled: TjB.GFhiBDGfksdfXDV2iaQnH0EBs0LRK8QckWWRpux800000578
├─ assembled: TJvZnLAA9m8mwIDd9C0U7kl6yabo1__N6in.u39WZw9Q00000559
╰╼ output: CMakeFiles/cudf_base.dir/src/column/column_view.cpp.o
[ 10%] Building CUDA object CMakeFiles/cudf_base.dir/src/copying/gather.cu.o
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/binaryop/compiled/binary_ops.cu
├─ generating make dependencies file... done.
├─ preprocessed: TISA4G.yeWX9TFIEpq8DluSy3HnjCBJF9mo87gWWKK4Y0001fa57
╰╼ output: /tmp/tmpxft_00048e67_00000000-7_binary_ops.cpp1.ii
/tmp/tmpxft_00048e67_00000000-7_binary_ops.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048e67_00000000-7_binary_ops.cpp1.ii(2): error: this declaration has no storage class or type specifier

/tmp/tmpxft_00048e67_00000000-7_binary_ops.cpp1.ii(2): error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/binaryop/compiled/binary_ops.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:134: CMakeFiles/cudf_base.dir/src/binaryop/compiled/binary_ops.cu.o] Error 1
make[2]: *** Waiting for unfinished jobs....
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/column/column.cu
├─ generating make dependencies file... done.
├─ preprocessed: TMIb0TyUgcXjt7Jvb2lM.J4AGHJeLOGBi3Yx7_pJdecA000201ab
╰╼ output: /tmp/tmpxft_00048e7e_00000000-7_column.cpp1.ii
/tmp/tmpxft_00048e7e_00000000-7_column.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048e7e_00000000-7_column.cpp1.ii(2): error: this declaration has no storage class or type specifier

/tmp/tmpxft_00048e7e_00000000-7_column.cpp1.ii(2): error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/column/column.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:199: CMakeFiles/cudf_base.dir/src/column/column.cu.o] Error 1
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/column/column_device_view.cu
├─ generating make dependencies file... done.
├─ preprocessed: Tsc.5zPM4x8iQZNYNH0rkAg_EPAW9TABgLP0FLQFtOWo0001f709
╰╼ output: /tmp/tmpxft_00048e60_00000000-7_column_device_view.cpp1.ii
/tmp/tmpxft_00048e60_00000000-7_column_device_view.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048e60_00000000-7_column_device_view.cpp1.ii(2): warning: a user-provided literal suffix must begin with "_"

/tmp/tmpxft_00048e60_00000000-7_column_device_view.cpp1.ii(2): error: this declaration has no storage class or type specifier

/tmp/tmpxft_00048e60_00000000-7_column_device_view.cpp1.ii(2): error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/column/column_device_view.cu".
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/aggregation/aggregation.cu
├─ generating make dependencies file... done.
├─ preprocessed: TowGqrCEfpkqKw8xcoxeYJctohSxVjh2lefMgpC7KWdQ0001fb25
╰╼ output: /tmp/tmpxft_00048e69_00000000-7_aggregation.cpp1.ii
/tmp/tmpxft_00048e69_00000000-7_aggregation.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048e69_00000000-7_aggregation.cpp1.ii(2): error: this declaration has no storage class or type specifier

At end of source: error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/aggregation/aggregation.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:212: CMakeFiles/cudf_base.dir/src/column/column_device_view.cu.o] Error 1
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:95: CMakeFiles/cudf_base.dir/src/aggregation/aggregation.cu.o] Error 1
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/binaryop/binaryop.cpp
├─ generating make dependencies file... done.
├─ preprocessed: TUXOI9qVHbfEOB5H8ZBHRX5Hzsl8m.u1lpTJyfOLojeU00023e6f
├─ compiled: TNu6rADs67GSxHvd_ILHwVU4uN.11v.zuaRsDSYSuDXM00000578
├─ assembled: TwqAz0MwobvCvpzNhI.OWS9PbAiq57ZEXvYCHdghKkxk00000558
╰╼ output: CMakeFiles/cudf_base.dir/src/binaryop/binaryop.cpp.o
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/bitmask/null_mask.cu
├─ generating make dependencies file... done.
├─ preprocessed: TZP4SI0MW4GzgBlhEs0doF1KgKOteExBMSW2ziebhEAk000210f5
╰╼ output: /tmp/tmpxft_00048e8c_00000000-7_null_mask.cpp1.ii
/tmp/tmpxft_00048e8c_00000000-7_null_mask.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048e8c_00000000-7_null_mask.cpp1.ii(2): error: this declaration has no storage class or type specifier

At end of source: error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/bitmask/null_mask.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:186: CMakeFiles/cudf_base.dir/src/bitmask/null_mask.cu.o] Error 1
╭╼ generating model for g++
├╼ input: /home/rou/src/cudf/cpp/src/copying/copy.cpp
├─ generating make dependencies file... done.
├─ preprocessed: TuIZJlrrRxHrRs7O7kg4ujEhNf6k5GCu1Y61RJ6jL6600001a131
├─ compiled: TOIKBbrjSJofVggfPXjgt3syuxC6pLjcSRR2fbadhyjI00000578
├─ assembled: TDPo.5cV149qDRXa4Tm0bIckXI1vmWPHH0VOZ4VN9eqw00000553
╰╼ output: CMakeFiles/cudf_base.dir/src/copying/copy.cpp.o
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/copying/concatenate.cu
├─ generating make dependencies file... done.
├─ preprocessed: T.DfvRv3YmfevK8mMp6YXWqWsAK5P2yTjioZOEBM1i0Q00021a75
╰╼ output: /tmp/tmpxft_00048ecd_00000000-7_concatenate.cpp1.ii
/tmp/tmpxft_00048ecd_00000000-7_concatenate.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048ecd_00000000-7_concatenate.cpp1.ii(2): error: this declaration has no storage class or type specifier

/tmp/tmpxft_00048ecd_00000000-7_concatenate.cpp1.ii(2): error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/copying/concatenate.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:251: CMakeFiles/cudf_base.dir/src/copying/concatenate.cu.o] Error 1
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/copying/contiguous_split.cu
├─ generating make dependencies file... done.
├─ preprocessed: TpulysKgDw1JgvllYOka2.NRHdx1KBdmDve5z8JeZxNA00020e6c
╰╼ output: /tmp/tmpxft_00048ec8_00000000-7_contiguous_split.cpp1.ii
/tmp/tmpxft_00048ec8_00000000-7_contiguous_split.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048ec8_00000000-7_contiguous_split.cpp1.ii(2): error: this declaration has no storage class or type specifier

/tmp/tmpxft_00048ec8_00000000-7_contiguous_split.cpp1.ii(2): error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/copying/contiguous_split.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:264: CMakeFiles/cudf_base.dir/src/copying/contiguous_split.cu.o] Error 1
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/copying/copy_range.cu
├─ generating make dependencies file... done.
├─ preprocessed: TtxYL84qNIgEuGSEDSY7AZZZ1gIbUq0VXAo6BYRmmQAg000212bb
╰╼ output: /tmp/tmpxft_00048eef_00000000-7_copy_range.cpp1.ii
/tmp/tmpxft_00048eef_00000000-7_copy_range.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048eef_00000000-7_copy_range.cpp1.ii(2): error: this declaration has no storage class or type specifier

At end of source: error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/copying/copy_range.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:303: CMakeFiles/cudf_base.dir/src/copying/copy_range.cu.o] Error 1
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/copying/copy.cu
├─ generating make dependencies file... done.
├─ preprocessed: TBzSBD6l._PFvuCK41cM3Q7BmxXAeMXKquAdPVTUvahQ00021191
╰╼ output: /tmp/tmpxft_00048efd_00000000-7_copy.cpp1.ii
/tmp/tmpxft_00048efd_00000000-7_copy.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048efd_00000000-7_copy.cpp1.ii(2): error: this declaration has no storage class or type specifier

/tmp/tmpxft_00048efd_00000000-7_copy.cpp1.ii(2): error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/copying/copy.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:290: CMakeFiles/cudf_base.dir/src/copying/copy.cu.o] Error 1
╭╼ generating model for gcc
╰╼ output is stdout, executing gcc...
╭╼ generating model for gcc
├╼ input: /home/rou/src/cudf/cpp/src/copying/gather.cu
├─ generating make dependencies file... done.
├─ preprocessed: TAUKPtpRC1FaVrOHwiwa_iGjXY1eJbU1xmO9vdYh41iQ00021db1
╰╼ output: /tmp/tmpxft_00048f02_00000000-7_gather.cpp1.ii
/tmp/tmpxft_00048f02_00000000-7_gather.cpp1.ii(1): error: unrecognized preprocessing directive

/tmp/tmpxft_00048f02_00000000-7_gather.cpp1.ii(2): error: this declaration has no storage class or type specifier

At end of source: error: expected a ";"

3 errors detected in the compilation of "/home/rou/src/cudf/cpp/src/copying/gather.cu".
make[2]: *** [CMakeFiles/cudf_base.dir/build.make:316: CMakeFiles/cudf_base.dir/src/copying/gather.cu.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:469: CMakeFiles/cudf_base.dir/all] Error 2
make: *** [Makefile:149: all] Error 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants