Come determinare se il motore NEON esiste sul processore ARM dato? Qualunque stato/registro flag può essere interrogato per tale scopo?Come verificare l'esistenza di NEON a braccio?
risposta
Credo che lo unixsmurf's answer sia circa buono come si otterrà se si utilizza un sistema operativo con kernel privilegiato. Per il rilevamento di funzioni generiche, sembra che ARM abbia richiesto di ottenere questo dal sistema operativo, e quindi è necessario utilizzare un'API del sistema operativo per ottenerlo.
- Su Android NDK utilizzare
#include <cpu-features.h>
con(android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM) && (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON)
. Nota questo è per ARM a 32 bit. ARM 64 bit ha bandiere diverse ma l'idea è la stessa. Vedi lo sources/docs. - Su Linux, se disponibile, utilizzare
#include <sys/auxv.h>
e#include <asm/hwcap.h>
congetauxval(AT_HWCAP) & HWCAP_NEON
. - In iOS, non sono sicuro che ci sia una chiamata dinamica, la metodologia sembra essere quella di costruire l'app per il targeting NEON, quindi assicurati che l'app sia contrassegnata per richiedere NEON in modo che venga installata solo sui dispositivi che la supportano . Ovviamente dovresti usare il flag preprocessore predefinito
__ARM_NEON__
per assicurarti che tutto sia in ordine al momento della compilazione. - Su qualunque Microsoft fa o se si utilizza alcuni altri RTOS ... non so ...
realtà vedrete un sacco di implementazioni di Android che ha appena parse/proc/cpuinfo in per implementare android_getCpuFeatures() .... Heh. Ma sembra che stia migliorando e le versioni più recenti usano il metodo getauxval.
Tutti gli hardware iOS supportati da iOS 5 e successivi hanno NEON; si può semplicemente supporre che NEON sia presente, non è necessario alcun controllo (ma si potrebbe verificare dinamicamente usando 'sysctl' se lo si desidera realmente). –
Su Android NDK verificare se (android_getCpuFamily() == ANDROID_CPU_FAMILY_ARM && (android_getCpuFeatures() e ANDROID_CPU_ARM_FEATURE_NEON)! = 0) – VMMF
Grazie, sì, ho aggiornato .... ovviamente più complicato ora con ARM64 ecc –
- 1. ARM NEON fallimento vettorializzazione
- 2. Smontaggio braccio
- 3. Come passare da Eclipse Mars a Eclipse Neon?
- 4. Croce compilazione per il braccio
- 5. boost :: program_options si blocca sul braccio "a volte"
- 6. ARM NEON SIMD versione 2
- 7. Installazione di WindowBuilder su Eclipse Neon
- 8. Ridimensiona un'immagine a 8 bit da 2 con ARM NEON
- 9. Rotazione a 128 bit usando ARM Neon intrinsec
- 10. ARM NEON: confronto dei valori a 128 bit
- 11. Come funziona lo smontaggio delle istruzioni del braccio 'BL'?
- 12. Assieme braccio - Funzione di chiamata con più di 4 argomenti
- 13. SSE _mm_movemask_epi8 metodo equivalente per ARM NEON
- 14. Android ARMv6/v7 e VFP/NEON
- 15. Modello processore rilevamento iPhone/supporto NEON
- 16. costante fuori campo con intrinseche NEON
- 17. ARM e NEON possono funzionare in parallelo?
- 18. Braccio di montaggio - più ordine push/pop e SP
- 19. braccio-nessuno-EABI-gcc 4.8 errore di segmentazione (ChibiOS-RT)
- 20. Come arrivare N righe a partire dal braccio della M dalla tabella ordinata in T-SQL
- 21. Sommando 3 corsie in un NEON float32x4_t
- 22. Glowing (neon) in vigore nel gnuplot
- 23. ARM Cortex-A8: Come utilizzare sia NEON che vfpv3
- 24. problemi di compilazione oggetto usando il braccio-linux-androideabi-gcc
- 25. veloce seno/coseno per ARMv7 + NEON: alla ricerca di tester ...
- 26. C'è un nuovo clone di reliquia per braccio (Raspberry PI)?
- 27. , verificare a livello di programmazione
- 28. Come inizializzare const float32x4x4_t (ARM NEON intrinsic, GCC)?
- 29. NEON vs Intel SSE - equivalenza di alcune operazioni
- 30. algoritmo di divisione a 64 bit/32 bit più veloce per ARM/NEON?
ci sono un sacco di registri coprocessore che sono lì per quello scopo per darti i dettagli cruenti su cosa è supportato in quel core e cosa non lo è. ottenere il TRM per quello o un nucleo simile per vedere dove vivono questi registri. –
Credo che i processori ARM siano progettati per l'uso queste informazioni e quei registri sono in realtà privilegiati; Sotto Linux, quindi, devi guardare '/ proc/cpuinfo' per cercare il flag NEON o Advanced SIMD. Per il codice privilegiato, consultare il Manuale di riferimento Architettura ARMv7, Sezione _B3.12.19 c1, Registro di controllo accessi coprocessore (CPACR) _; Il bit 31 di quel registro è quello che vuoi. –
Il bit 31 di CPACR disattiva le istruzioni NEON quando si imposta su 1, il che non sembra un modo diretto per rilevare il motore NEON. – Thomson