h2oai / h2o4gpu

H2Oai GPU Edition
Apache License 2.0
460 stars 95 forks source link

error: ‘PyUnicode_AsUTF8’ was not declared in this scope #658

Closed nasica88 closed 6 years ago

nasica88 commented 6 years ago

Environment (for bugs)

Description

I am trying to build h2o4gpu on Redhat 7.5 ppc64le with Anaconda3. It keeps failing with the following error. Can anyone suggest a solution, please ?

[bsyu@ING h2o4gpu]$ make fullinstall ... make[3]: Entering directory /home/bsyu/h2o4gpu/build' [ 91%] Building CXX object CMakeFiles/gpuh2o4gpu.dir/src/common/logger.cpp.o [ 91%] Building CXX object CMakeFiles/gpuh2o4gpu.dir/src/common/elastic_net_ptr.cpp.o [ 91%] Building CXX object CMakeFiles/gpuh2o4gpu.dir/src/common/utils.cpp.o [ 94%] Linking CXX static library libgpuh2o4gpu.a make[3]: Leaving directory/home/bsyu/h2o4gpu/build' [ 94%] Built target gpuh2o4gpu make[3]: Entering directory /home/bsyu/h2o4gpu/build' Scanning dependencies of target _ch2o4gpu_gpu make[3]: Leaving directory/home/bsyu/h2o4gpu/build' make[3]: Entering directory /home/bsyu/h2o4gpu/build' [ 97%] Building CXX object CMakeFiles/_ch2o4gpu_gpu.dir/CMakeFiles/_ch2o4gpu_gpu.dir/ch2o4gpu_gpuPYTHON_wrap.cxx.o /home/bsyu/h2o4gpu/build/CMakeFiles/_ch2o4gpu_gpu.dir/ch2o4gpu_gpuPYTHON_wrap.cxx: In function ‘PyObject* _wrap_get_gpu_info_c(PyObject*, PyObject*)’: /home/bsyu/h2o4gpu/build/CMakeFiles/_ch2o4gpu_gpu.dir/ch2o4gpu_gpuPYTHON_wrap.cxx:11225:58: **error: ‘PyUnicode_AsUTF8’ was not declared in this scope** arg6[i] = PyUnicode_AsUTF8(PyList_GetItem(obj4,i)); ^ make[3]: *** [CMakeFiles/_ch2o4gpu_gpu.dir/CMakeFiles/_ch2o4gpu_gpu.dir/ch2o4gpu_gpuPYTHON_wrap.cxx.o] Error 1 make[3]: Leaving directory/home/bsyu/h2o4gpu/build' make[2]: [CMakeFiles/_ch2o4gpu_gpu.dir/all] Error 2 make[2]: Leaving directory `/home/bsyu/h2o4gpu/build' make[1]: [all] Error 2 make[1]: Leaving directory `/home/bsyu/h2o4gpu/build' make: *** [cpp] Error 2

nasica88 commented 6 years ago

I could finally solve this trouble by using gcc 7.2. which I had to build from source.

I also had to insert the following line these two files.

[bsyu@ING h2o4gpu]$ vi ./src/cpu/h2o4gpuglm.cpp ./src/gpu/h2o4gpuglm.cu ...

include # added

[bsyu@ING h2o4gpu]$ make fullinstall CC=/usr/local/gcc72/bin/gcc CXX=/usr/local/gcc72/bin/g++ ... Successfully installed h2o4gpu-0.2.0.9999+local.1dad27d.dirty make[1]: Leaving directory `/home/bsyu/h2o4gpu/src/interface_py' mkdir -p src/interface_py/dist/ppc64le-centos7-cuda9.2/ && mv src/interface_py/dist/*.whl src/interface_py/dist/ppc64le-centos7-cuda9.2/

[bsyu@ING h2o4gpu]$ find . -name "h2o4gpu-0.2.0*" ./src/interface_py/dist/h2o4gpu-0.2.0.9999+local.1dad27d.dirty.tar.gz ./src/interface_py/dist/ppc64le-centos7-cuda9.2/h2o4gpu-0.2.0.9999+local.1dad27d.dirty-cp36-cp36m-linux_ppc64le.whl

pseudotensor commented 6 years ago

@mateusz can you see if this can be incorporated into main build? I guess caused by centos build?

mdymczyk commented 6 years ago

Not sure how only upgrading gcc/g++ helped here - **error: ‘PyUnicode_AsUTF8’ was not declared in this scope** means that the project was being built against Python C libraries older than version 3.3, which are independent from gcc/g++.

As for compilation issues under newer GCC/G++ we can make a different issue for this - from what I remember for different compiler version (at least 6) we'd have to make also some other changes.

nasica88 commented 6 years ago

@mdymczyk I omitted commenting that I had upgraded python version to 3.6.5 which was built on gcc 7.2. Then I had the familiar error of 'undefined symbol: _gfortran_stop_numeric_f08'. I installed gcc7.2 to resolve this new trouble. My apology for the confusion.