gallery_server_client_s190js/docs/face-knn-source/COMPILAZIONE_FACE_KNN.md
2026-10-26 11:00:14 +01:00

3 KiB

Face KNN OpenCL - Note di compilazione

Repository

Directory sorgente:

/home/nvme/dockerdata/prove/face-clustering-rk3588-knn-opencl-validated

Questo repository contiene i sorgenti del motore KNN utilizzato dai progetti s1xxjs/s190js.

Il binario distribuito è:

bin/face_knn

SHA256 del binario originale:

e74bd672eebaa0f10028e25c0f7051e981cd16c2eeb9c529f513a6c412c11033


File principali

Motore KNN

src/face_knn.cc

Gestisce:

  • parsing input
  • caricamento embeddings
  • scelta CPU/OpenCL
  • output risultati

Backend OpenCL

src/knn_opencl.cc

Implementazione KNN GPU.

Integrazione Mali G610

src/knn_opencl_backend.cc

Gestisce:

  • ricerca device OpenCL
  • compilazione kernel
  • allocazione buffer
  • esecuzione GPU

Kernel GPU

kernels/knn_float4_topk.cl

Kernel OpenCL eseguito sulla Mali G610.


Verifica binario

Verifica hash:

sha256sum bin/face_knn

Hash atteso:

e74bd672eebaa0f10028e25c0f7051e981cd16c2eeb9c529f513a6c412c11033


Librerie richieste

Il binario utilizza:

  • libOpenCL.so.1
  • libstdc++.so.6
  • libgcc_s.so.1
  • libc.so.6
  • libm.so.6

Verifica:

ldd bin/face_knn


Simboli principali

Verifica presenza delle funzioni:

nm -C bin/face_knn | grep search_opencl nm -C bin/face_knn | grep search_cpu

Devono comparire:

face_knn::search_opencl() face_knn::search_opencl_impl() face_knn::search_cpu()


Compilazione (da verificare)

La build originale non è presente nel Makefile attuale.

Comando ricostruito:

g++
-std=c++17
-O2
-Wall
-Wextra
-Wpedantic
-Iinclude
src/face_knn.cc
src/knn_opencl.cc
src/knn_opencl_backend.cc
-lOpenCL
-ldl
-lpthread
-o bin/face_knn

NOTA: Prima di utilizzarlo verificare eventuali dipendenze mancanti.


Evidenze raccolte

Il binario contiene riferimenti diretti a:

  • face_knn.cc
  • knn_opencl.cc
  • knn_opencl_backend.cc

Verifica:

strings bin/face_knn | grep -i "face_knn.cc\|knn_opencl"

Il binario esporta:

  • face_knn::search_opencl()
  • face_knn::search_opencl_impl()
  • face_knn::search_cpu()

Verifica:

nm -C bin/face_knn | grep search_


Utilizzo nei progetti NodeJS

Il binario è utilizzato da:

native/face-knn/bin/face_knn

richiamato tramite:

tools/faceKnnRuntime.js

nei progetti s141js → s190js.

Provenienza verificata

Il binario utilizzato nei progetti s141js → s190js:

native/face-knn/bin/face_knn

ha SHA256:

e74bd672eebaa0f10028e25c0f7051e981cd16c2eeb9c529f513a6c412c11033

Lo stesso hash è stato trovato nei repository:

  • face-recognition-rk3588-opencl
  • face-clustering-rk3588-knn-opencl
  • face-clustering-rk3588-knn-opencl-validated

Verifiche effettuate:

  • strings bin/face_knn
  • nm -C bin/face_knn
  • ldd bin/face_knn
  • sha256sum bin/face_knn

Risultato:

Il binario deriva dai sorgenti:

  • src/face_knn.cc
  • src/knn_opencl.cc
  • src/knn_opencl_backend.cc

e utilizza il kernel:

  • kernels/knn_float4_topk.cl

Target GPU:

  • ARM Mali-G610 (RK3588 / Orange Pi 5 Plus)

Data documentazione:

2026-10-26