Configurazione dell'ottimizzazione guidata dal profilo in Visual Studio

Il supporto dell'ottimizzazione guidata dal profilo è stato introdotto nella versione 22.2.71 di AGDE.

Individuazione delle impostazioni di PGO

Apri le impostazioni del progetto da Esplora soluzioni.

Il menu delle proprietà di Esplora soluzioni di Visual Studio per il progetto corrente.

Figura 1: la finestra Esplora soluzioni di Visual Studio.

Assicurati che la piattaforma sia impostata su una configurazione Android (ad esempio Android-arm64-v8a).

Nel riquadro a sinistra, seleziona Proprietà di configurazione > Generale. Cerca il gruppo di proprietà denominato PGO.

La finestra di dialogo Proprietà del progetto in cui sono visualizzate Proprietà generali e le impostazioni PGO evidenziate

Figura 2: la finestra di dialogo Proprietà progetto.

Attiva le build basate su PGO nel progetto

Aggiungi una nuova configurazione denominata Strumentale al tuo progetto. Si basa sulla configurazione che utilizzi durante lo sviluppo per i test, che dovrebbe essere la build ottimizzata tradizionale (puoi comunque attivare funzionalità di debug aggiuntive, purché conservi le impostazioni di ottimizzazione del compilatore).

Fai clic su Configuration Manager... nella finestra di dialogo della pagina della proprietà.

Nella parte superiore della finestra di dialogo Pagine delle proprietà, in cui vengono mostrati i menu a discesa Configurazione di soluzioni attive e Piattaforma e il pulsante Configuration Manager

Figura 3: la finestra di dialogo Configuration Manager.

Nella finestra di dialogo di Configuration Manager, seleziona il menu a discesa Configurazione della soluzione attiva e scegli <Nuovo...>.

La finestra di dialogo di Configuration Manager in cui è aperto il menu a discesa Configurazione soluzione attiva ed è evidenziata l&#39;opzione Nuova.

Figura 4: creazione di una configurazione di nuova build.

... e crea una nuova configurazione basata su PGO.

La finestra di dialogo Nuova configurazione della soluzione, che crea una nuova configurazione di build con strumentazione PGO
basata sulla configurazione di build della release esistente

Figura 5. La finestra di dialogo Nuova configurazione della soluzione.

Per attivare la creazione in modalità Strumentazione PGO in modo da poter generare un profilo per il tuo gioco, seleziona Strumentale dall'elenco di opzioni per l'impostazione Modalità di ottimizzazione guidata dal profilo.

La finestra di dialogo Proprietà progetto, aperta nelle impostazioni generali, in cui sono visualizzate le impostazioni PGO e la modalità di ottimizzazione guidata del profilo impostata su Strumentata.

Figura 6: la finestra di dialogo Proprietà progetto, in cui sono evidenziate le impostazioni PGO.

Per l'impostazione Profili di ottimizzazione guidata per il profilo, inserisci il percorso della cartella in cui scrivere il file dei dati non elaborati del profilo di output sul tuo dispositivo Android. In genere questo valore dovrebbe essere simile a /data/data/<package name>/cache/, dove <package name> è il nome completo del pacchetto dell'APK, ad esempio com.google.sample.tunnel.

Per informazioni più dettagliate sul funzionamento di questa funzionalità, consulta la documentazione di Clang.

Scrittura dei dati del profilo strumentati da PGO sul tuo dispositivo

I dati PGO vengono solitamente scritti sul dispositivo dal sistema di strumentazione PGO alla chiusura di un processo. Su Android le app non si chiudono ma vengono sempre chiuse. Ciò significa che la funzionalità predefinita "Scrivi su disco" non viene mai attivata e richiede all'app di scrivere manualmente i dati PGO.

La tua app deve chiamare esplicitamente __llvm_profile_write_file per scrivere i dati del profilo. Questo simbolo è disponibile solo quando si crea una build con strumentazione PGO. Per semplificare questa operazione, ti consigliamo di utilizzare il seguente pattern durante la dichiarazione di __llvm_profile_write_file.

#ifdef PGO_INSTRUMENT
extern "C" int __llvm_profile_write_file(void);
#else
extern "C" int __llvm_profile_write_file(void) { return 0; }
#endif

La chiamata a questa funzione scrive i dati del profilo nella cartella specificata in precedenza.

Esecuzione di un profilo

Per generare il profilo, devi eseguire l'APK creato con strumentazione PGO sul dispositivo di destinazione. Dopo aver utilizzato il codice in modo soddisfacente e aver attivato la chiamata alla funzione __llvm_profile_write_file, l'app scriverà i dati del profilo nello spazio di archiviazione.

A questo punto, copia i profili dal dispositivo per consentirne l'utilizzo da parte del compilatore.

Preparazione dei dati del profilo per l'utilizzo da parte del compilatore

Se utilizzato in modo isolato, lo strumento a riga di comando llvm-profdata fornito come parte di Clang/LLVM nell'NDK di Android viene utilizzato per preparare i file di dati del profilo da usare dal compilatore durante l'ottimizzazione guidata dal profilo di una build.

AGDE esegue automaticamente questo passaggio unendo tutti i file di dati del profilo che hai aggiunto al progetto e utilizzandoli quando l'impostazione Modalità di ottimizzazione guidata dal profilo nelle pagine delle proprietà del progetto è impostata su Ottimizzata.

Creazione del progetto con l'ottimizzazione guidata dal profilo attivata

Ora che hai acquisito i profili e li hai aggiunti al tuo progetto, il compilatore può utilizzare questi dati per perfezionare l'ottimizzazione della tua build.

Crea una nuova configurazione di progetto per la build ottimizzata per PGO in modo da creare in questa modalità solo quando è necessario.

La finestra di dialogo Nuova configurazione della soluzione che crea una configurazione basata sulla build di release, ma questa volta con PGO-Optimized come nuovo nome della configurazione di build.

Figura 7: creazione di una nuova configurazione di build ottimizzata per PGO.

Nelle pagine delle proprietà del progetto, imposta l'impostazione Modalità di ottimizzazione guidata sul profilo su Ottimizzata.

La finestra di dialogo Proprietà progetto, aperta nelle impostazioni generali, in cui sono visualizzate le impostazioni PGO e la modalità di ottimizzazione guidata del profilo impostata su Ottimizzata

Figura 8. Impostazione della modalità di ottimizzazione PGO su Ottimizzata.

Copia i file dal dispositivo e aggiungili al tuo progetto in Solution Explorer. Questi file di dati del profilo vengono selezionati dal compilatore la prossima volta che crei la configurazione ottimizzata per PGO e utilizzati per ottimizzare il modo in cui il compilatore ottimizza il tuo codice.

Puoi copiare i file di dati del profilo nel progetto dal dispositivo utilizzando ADB o Esplora dispositivi Android.

Utilizzo dell'ottimizzazione guidata dal profilo al di fuori di AGDE

Se utilizzi un sistema di compilazione non supportato da AGDE, potresti dover modificare direttamente la build. La documentazione di Clang descrive le modifiche necessarie: -fprofile-generate e -fprofile-use.

Se utilizzi un motore middleware per il tuo gioco, consulta la documentazione del motore per sapere come attivare PGO (se supportato).