View a markdown version of this page

Lavori in array - AWS Batch

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Lavori in array

Un processo in array è un processo che condivide parametri comuni, come ad esempio la definizione del processo, le vCPU e la memoria. Funziona come una raccolta di processi di base correlati ma separati che possono essere distribuiti su più host e possono essere eseguiti contemporaneamente. I lavori di matrice sono il modo più efficiente per eseguire lavori estremamente paralleli come simulazioni Monte Carlo, sweep parametrici o lavori di rendering di grandi dimensioni.

AWS Batch i lavori di matrice vengono inviati proprio come i normali lavori. Tuttavia, devi specificare la dimensione dell'array (tra 2 e 10.000) per definire la quantità di processi figlio da eseguire nell'array. Se invii un processo con una dimensione dell'array di 1.000, un singolo processo viene eseguito e genera 1.000 processi figlio. Il processo in array è un riferimento o un puntatore per gestire tutti i processi figlio. In questo modo, puoi inviare carichi di lavoro di grandi dimensioni con una singola query. Il timeout specificato nel attemptDurationSeconds parametro si applica a ogni job secondario. Il job dell'array principale non ha un timeout.

Quando invii un job di array, al job di array principale viene assegnato un ID di AWS Batch lavoro normale. Ogni job secondario ha lo stesso ID di base. Tuttavia, l'indice dell'array per il job figlio viene aggiunto alla fine dell'ID principale, ad esempio example_job_ID:0 per il primo job figlio dell'array.

Il job dell'array principale può immettere uno SUCCEEDED stato SUBMITTEDPENDING,FAILED, o. Un job padre dell'array viene aggiornato PENDING quando viene aggiornato un job figlio aRUNNABLE. Per ulteriori informazioni sulle dipendenze tra i lavori, vedereDipendenze tra le mansioni.

In fase di runtime, la variabile di ambiente AWS_BATCH_JOB_ARRAY_INDEX è impostata sul numero di indice dell'array del processo corrispondente del container. L'indice dei processi della prima matrice è numerato 0 e i tentativi successivi sono in ordine crescente (ad esempio, 1, 2 e 3). È possibile utilizzare questo valore di indice per controllare il modo in cui vengono indicati i diversi elementi figlio dei processi in array. Per ulteriori informazioni, consulta Utilizzate l'array job index per controllare la differenziazione dei job.

Per le dipendenze di processi in array, puoi specificare un tipo di dipendenza, ad esempio SEQUENTIAL o N_TO_N. Puoi specificare una dipendenza di tipo SEQUENTIAL (senza specificare un ID del processo) in modo che ogni processo figlio nell'array venga completato in maniera sequenziale a partire dall'indice 0. Ad esempio, se invii un processo in array con una dimensione dell'array di 100 e specifichi una dipendenza di tipo SEQUENTIAL, 100 processi figlio vengono generati in sequenza, il primo dei quali deve avere esito positivo prima che il successivo processo figlio possa iniziare. L'illustrazione di seguito mostra il processo A, un processo in array con una dimensione dell'array di 10. Ciascun processo nell'indice dei figli del processo A dipende dal processo figlio precedente. Il processo non A:1 può iniziare fino al termine del processo A:0 .

Dipendenza sequenziale tra i job in un array in cui ogni job secondario A:0 A:9 viene eseguito in ordine.

Puoi anche specificare una dipendenza tipo N_TO_N con un ID processo per processi dell’array. In questo modo, prima di iniziare, ciascun figlio nell'indice di questo processo deve attendere il completamento del figlio nell'indice corrispondente di ciascuna dipendenza. La figura seguente mostra il Job A e il Job B, due lavori di matrice con una dimensione di array di 10.000 ciascuno. Ogni job nel child index del Job B dipende dall'indice corrispondente nel Job A. Il job non B:1 può iniziare finché non A:1 finisce il job.

Se si annulla o si termina un job dell'array principale, tutti i job secondari vengono annullati o terminati con esso. È possibile annullare o terminare singoli lavori secondari (con conseguente passaggio a uno FAILED status) senza influire sugli altri lavori secondari. Tuttavia, se un job di array secondario fallisce (da solo o annullando o terminando manualmente il job), anche il job principale ha esito negativo. In questo scenario, il processo principale passa al completamento di tutti FAILED i lavori secondari.

Per ulteriori informazioni sulla ricerca e il filtraggio dei lavori in un array, vedere. Cercare in processi in una coda dei processi