rajkundu / libmp-example

Use Mediapipe with CMake: Example LibMP Usage Application
Apache License 2.0
20 stars 3 forks source link

Error when using GPU #1

Open deathcrow opened 1 year ago

deathcrow commented 1 year ago

Hi, I just try to use your demo to run mediapipe holistic.

First, I modify the graph to "holistic_tracking_cpu.pbtxt", modify InputStream, OutputStream, get_landmarks function, and it worked.

Second, because cpu speed is too slow, I want to use gpu instead. I modify the graph to "holistic_tracking_gpu.pbtxt", it not worked, then I use MEDIAPIPE_DISABLE_GPU=0 to compile libmp.so, compile went wrong

ERROR: /workspace/mediapipe/mediapipe/calculators/tflite/BUILD:273:11: Compiling mediapipe/calculators/tflite/tflite_converter_calculator.cc failed: (Exit 1): gcc failed: error executing command /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections ... (remaining 179 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
In file included from /usr/include/EGL/eglplatform.h:134,
                 from /usr/include/EGL/egl.h:39,
                 from external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/portable_gl31.h:21,
                 from external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:27,
                 from ./mediapipe/util/tflite/config.h:39,
                 from mediapipe/calculators/tflite/tflite_converter_calculator.cc:24:
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:63:9: error: expected unqualified-id before 'int'
   absl::Status Read(absl::Span<T> data) const;
         ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:67:9: error: expected unqualified-id before 'int'
   absl::Status Write(absl::Span<const T> data);
         ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:72:9: error: expected unqualified-id before 'int'
   absl::Status MappedRead(
         ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:78:9: error: expected unqualified-id before 'int'
   absl::Status MappedWrite(
         ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:81:9: error: expected unqualified-id before 'int'
   absl::Status MakeView(size_t offset, size_t bytes_size, GlBuffer* gl_buffer);
         ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:87:9: error: expected unqualified-id before 'int'
   absl::Status BindToIndex(uint32_t index) const;
         ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:116:7: error: expected unqualified-id before 'int'
 absl::Status CopyBuffer(const GlBuffer& read_buffer,
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:119:7: error: expected unqualified-id before 'int'
 absl::Status GetSSBOSize(GLuint id, int64_t* size_bytes);
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:127:7: error: expected unqualified-id before 'int'
 absl::Status CreateReadWriteShaderStorageBuffer(uint32_t num_elements,
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:133:7: error: expected unqualified-id before 'int'
 absl::Status CreateReadOnlyShaderStorageBuffer(absl::Span<const T> data,
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:138:7: error: expected unqualified-id before 'int'
 absl::Status AppendFromBuffer(const GlBuffer& buffer, std::vector<T>* data) {
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:172:7: error: expected unqualified-id before 'int'
 absl::Status CreatePersistentBuffer(size_t size, GlPersistentBuffer* gl_buffer);
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:246:7: error: expected unqualified-id before 'int'
 absl::Status CreateReadWriteShaderStorageBuffer(uint32_t num_elements,
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:260:7: error: expected unqualified-id before 'int'
 absl::Status CreateReadOnlyShaderStorageBuffer(absl::Span<const T> data,
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:273:7: error: expected unqualified-id before 'int'
 absl::Status GlBuffer::Read(absl::Span<T> data) const {
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:286:7: error: expected unqualified-id before 'int'
 absl::Status GlBuffer::Write(absl::Span<const T> data) {
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:297:7: error: expected unqualified-id before 'int'
 absl::Status GlBuffer::MappedRead(
       ^~~~~~
external/org_tensorflow/tensorflow/lite/delegates/gpu/gl/gl_buffer.h:313:7: error: expected unqualified-id before 'int'
 absl::Status GlBuffer::MappedWrite(
       ^~~~~~
mediapipe/calculators/tflite/tflite_converter_calculator.cc:74:26: error: 'tflite::gpu::gl::CreateReadWriteShaderStorageBuffer' has not been declared
 using ::tflite::gpu::gl::CreateReadWriteShaderStorageBuffer;

Last, I use this script to compile libmp.so

bazel build -c opt --copt -DMESA_EGL_NO_X11_HEADERS --copt -DEGL_NO_X11 --define MEDIAPIPE_DISABLE_GPU=0 mediapipe/examples/desktop/libmp:libmp.so

compile worked.

But when I run libmp_example, this error happened

WARNING: Logging before InitGoogleLogging() is written to STDERR 
I20230111 18:46:09.639328 74859 libmp_impl.cpp:31] Successfully initialized LibMP graph   
I20230111 18:46:09.641311 74859 libmp_impl.cpp:47] Failed to start calculator graph 
Input video ../1.mp4 
I20230111 18:46:09.982609 74859 libmp_impl.cpp:73] Failed to add packet to input stream. Call m_graph.WaitUntilDone() to see error (or destroy LibMP object) 
Process() failed!  
I20230111 18:46:10.000988 74859 libmp_impl.cpp:15] Shutting down.  
I20230111 18:46:10.001063 74859 libmp_impl.cpp:23] Error in CloseInputStream(): INTERNAL: 

Because no more log for this error, I can't figure out how to fix it, it seem that happen when initializing the mediapipe calculator, Have u met this error before?

rajkundu commented 1 year ago

Hi, @deathcrow - thank you for using LibMP! Unfortunately, I have only used the CPU and haven't tried using the GPU myself.

From this page, it looks like MediaPipe only supports GPU inference on Linux desktops. What system are you using?