Fix cloning, compilation and linking errors for the non-docker version - #9
gprabowski wants to merge 3 commits into
Conversation
| [submodule "third_parties/fmt"] | ||
| path = third_parties/fmt | ||
| url = https://github.com/fmtlib/fmt.git | ||
| [submodule "third_parties/mp11"] |
There was a problem hiding this comment.
otherwise impossible to clone
| [submodule "third_parties/googletest"] | ||
| path = third_parties/googletest | ||
| url = https://github.com/google/googletest.git | ||
| [submodule "third_parties/fmt"] |
|
|
||
| find_package(CUDAToolkit 10.0 REQUIRED) | ||
| # As of now not using LIBCUDF throws | ||
| set(USE_LIBCUDF 1) |
There was a problem hiding this comment.
if not set to 1, the project throws compilation errors (ifdefs are leaky)
| IF(NOT LOCAL_LIB) | ||
| find_package(Boost 1.75) # version 1.75 is required to use boost::mp11::mp_pairwise_fold_q | ||
| ENDIF() | ||
| find_package(CUDAToolkit EXACT 11.8 REQUIRED) |
There was a problem hiding this comment.
currently the newest is 12 (so the previous would find 12, as it only set minimum), but RAPIDS are currently limited to 11.X
| include(GoogleTest) | ||
|
|
||
| #Add FMT library (as CUDA11.8 doesn't support gcc12) | ||
| add_subdirectory(third_parties/fmt) |
|
|
||
| target_include_directories(meta-cudf-parser-1 PUBLIC | ||
| "${PROJECT_SOURCE_DIR}/meta_cudf/opt1" | ||
| "$ENV{CONDA_PREFIX}/include" |
There was a problem hiding this comment.
universal instead of hardfixed
| add_executable(meta-json-parser-benchmark) | ||
|
|
||
| target_link_libraries(meta-json-parser-benchmark PRIVATE lib-meta-json-parser CLI11) | ||
| target_link_libraries(meta-json-parser-benchmark PRIVATE lib-meta-json-parser fmt::fmt CLI11) |
There was a problem hiding this comment.
otherwise throws linking errors
There was a problem hiding this comment.
During which part of build (I wonder which part requires fmt library)?
| target_include_directories(meta-cudf-parser-1 PUBLIC | ||
| /usr/local/include | ||
| /usr/local/include/libcudf/libcudacxx | ||
| $ENV{CONDA_PREFIX}/include |
There was a problem hiding this comment.
universal instead of hardfixed
| # instead of hardcoding paths to includes and to libraries, like below | ||
| target_include_directories(meta-cudf-parser-1 PUBLIC | ||
| /usr/local/include | ||
| /usr/local/include/libcudf/libcudacxx |
There was a problem hiding this comment.
couldn't find libcudacxx in any folder related to current libraries and deleting this doesn't change anything
There was a problem hiding this comment.
I remember it was necessary for something, perhaps for running via docker image, but might be no longer needed.
| ) | ||
| target_include_directories(meta-cudf-parser-1 AFTER PUBLIC | ||
| /opt/conda/envs/rapids/include | ||
| $ENV{CONDA_PREFIX}/include |
There was a problem hiding this comment.
universal instead of hardfixed
There was a problem hiding this comment.
also /opt/conda/envs/rapids doesn't exist in a default conda installation of rapids
| cudf | ||
| -L/usr/local/cuda/lib64 -L/usr/local/lib | ||
| -L/opt/conda/envs/rapids/lib | ||
| -L$ENV{CONDA_PREFIX}/lib |
There was a problem hiding this comment.
universal instead of hardfixed
There was a problem hiding this comment.
also /opt/conda/envs/rapids doesn't exist in a default conda installation of rapids
There was a problem hiding this comment.
RAPIDS docker images used to have some of necessary includes and libs in /opt/conda/envs/rapids/ - while Dockerfile does not set CONDA_PREFIX environment variable. That's why it is here: for sudo docker build . to work.
Adding the $ENV{CONDA_PREFIX}/lib part is good, but I'd wait with removing /opt/conda/envs/rapids/ (see split commits).
|
|
||
| target_include_directories(meta-json-parser-benchmark PUBLIC | ||
| /usr/local/include | ||
| /usr/local/include/libcudf/libcudacxx |
| target_include_directories(meta-json-parser-benchmark PUBLIC | ||
| /usr/local/include | ||
| /usr/local/include/libcudf/libcudacxx | ||
| $ENV{CONDA_PREFIX}/include |
| # it can contain outdated Boost library (which in Ubuntu 20.04 is Boost 1.72) | ||
| target_include_directories(meta-json-parser-benchmark AFTER PUBLIC | ||
| /opt/conda/envs/rapids/include | ||
| $ENV{CONDA_PREFIX}/include |
| cudf | ||
| -L/usr/local/cuda/lib64 -L/usr/local/lib | ||
| -L/opt/conda/envs/rapids/lib | ||
| -L$ENV{CONDA_PREFIX}/lib |
There was a problem hiding this comment.
universal instead of hardfixed
as above with respect to existence of /envs/rapids
| for (int col_idx = 0; col_idx < n_cols; col_idx++) { | ||
| printf("column(%d) name is \"%s\":\n", col_idx, | ||
| table_with_metadata.metadata.column_names[col_idx].c_str()); | ||
| table_with_metadata.metadata.schema_info[col_idx].name.c_str()); |
There was a problem hiding this comment.
cuDF in new (stable) RAPIDS released has changed its API and this is the new approach. schema info is a table of structs containing strings instead of table of strings
more info here
| #pragma once | ||
| #include <cuda_runtime_api.h> | ||
| #include <thrust/host_vector.h> | ||
| #include <thrust/system/cuda/experimental/pinned_allocator.h> |
There was a problem hiding this comment.
not used and CUDA 12 toolchain incompatible
|
|
||
| cudf::io::table_metadata metadata{column_names}; | ||
| cudf::io::table_metadata metadata; | ||
| std::for_each(begin(column_names), end(column_names), [&](auto& elem){metadata.schema_info.push_back({elem});}); |
|
a thing I noticed in development: |
|
Thanks. I am currently working on incorporating this pull request, splitting it into even smaller pieces. |
Currently the repository is impossible to clone or build in both docker and non-docker version.
Although not full, this is a list of changes that makes it work for the local non-docker version.
There's much more to be done, to make it universal, but this is the minimal set.
More changes will be added as the semester progresses.
steps to build, assuming conda rapids-23.04 environment has been installed (if not install from here)