Maratyszcza / pthreadpool

Portable (POSIX/Windows/Emscripten) thread pool for C/C++
BSD 2-Clause "Simplified" License
342 stars 132 forks source link

Termux compilation tips #48

Open Manamama opened 1 month ago

Manamama commented 1 month ago

I needed it for pytorch compilation. Spent half a day trying to compile this, as dependency. Tips for Termux users only:

  1. If you're compiling this code on Termux and encounter an error about the missing 'unistd.h' file, you might need to install the 'ndk-sysroot'. It has it natively, one of very few apt packages that does not get installed to /opt or .local/lib
  2. Remove this code security cruft first, as it gets stuck eith smth Google. Yes. Thus :
    alias cmakeinstall='rm CMakeCache.txt && echo "Removing silly Werror 🪲 directives en masse..." & time find . -type f -exec sed -i "s/-Werror//g" {} \; && export CFLAGS="-fuse-ld=lld  -pthread -g -march=armv8-a -mtune=cortex-a53 -Wall -Wextra"  &&  echo "Starting compilation 👩‍💻 proper... "&& cmake -DCMAKE_INSTALL_PREFIX=$PREFIX . && time make -j4 && make install' 

    is my newest one liner.

Ref:

~/downloads/pthreadpool $ uname -a            Linux localhost 4.14.186+ #1 SMP PREEMPT Thu Mar 17 16:28:22 CST 2022 aarch64 Android       ~/downloads/pthreadpool $

PS. You may test it with:

#include <stdio.h>                            #include <pthreadpool.h>                                                                    void task(void* arg, size_t i) {                  printf("Hello from task %zu\n", i);       }                                                                                           int main() {                                      pthreadpool_t pool = pthreadpool_create(4);                                                                                               pthreadpool_parallelize_1d(pool, (pthreadpool_task_1d_t)task, NULL, 10, 0);                                                               pthreadpool_destroy(pool);                    return 0;                                 }

with : gcc -o test4 test4.c -pthread -lpthreadpool : ~/.../pytorch/build $ ./test4 Hello from task 3 Hello from task 4 Hello from task 5 Hello from task 2 Hello from task 1 Hello from task 9 Hello from task 7 Hello from task 0 Hello from task 6 Hello from task 8 ~/.../pytorch/build $

...

Manamama commented 2 weeks ago

And this is needed: sed -i '3i set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-but-set-variable")' CMakeLists.txt

To covert this fatal error into warning only:

/data/data/com.termux/files/home/downloads/pthreadpool/googlebenchmark-source/src/complexity.cc:85:10: warning: variable 'sigma_gn' set but not used [-Wunused-but-set-variable]
   85 |   double sigma_gn = 0.0;