Assassin's Creed migliore per intelligenza artificiale su XBox 360?

Assassin's Creed migliore per intelligenza artificiale su XBox 360?

Una dichiarazione di Jade Raymond riportata da IGN potrebbe far pensare ad una migliore ottimizzazione del nuovo titolo di Ubisoft Montreal per XBox 360.

di pubblicata il , alle 09:07 nel canale Videogames
UbisoftXboxAssassin's CreedMicrosoft
 
51 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
DevilsAdvocate02 Ottobre 2006, 13:14 #31
Originariamente inviato da: coschizza]con le ADSL che troviamo in giro penso che neanche la ps3 potrà
ehm, anche se il monitor fosse in HD 1080p (1900x1080) i flussi
sarebbero ovviamente riscalati in risoluzione per non occupare
tutto lo schermo (ecco perche' serve l'SPE). Inoltre 2-3 anni fa
qualcosa sopra ai 640 kbps delle ADSL "classiche" era impensabile, oggi
le ADSL economiche sono a 1,2 Mb, quelle normali a 4/8Mb e volendo ce
ne sono di piu' veloci.
Con lo standard ADSL2 invece stiamo a 2/4 Mbps per quelle lente
e 12 su un massimo di 22 per quelle veloci....

[quote]per quello che riguarda la gestione delle chat e dell'audio non ho sottomano dati per la ps3 ma ho quelli della xbox 360 che come saprai non ha un processore audio inclusa (come la ps3 delresto) e quindi la MS ha stimato in 20-25% l'occupazione massima di 1 delle cpu (piu precisamente 1 dei 2 thread hadware disponibili per cpu), questo per gestire via software il mixer audio.

Esattamente quello che penso io, un'elaborazione dati attorno al 5% del
tempo di una SPE, visto che qui i salti sono circa zero.
(ricordiamoci che un Cell con 8 SPE gestisce 48 flussi mpeg2 risoluzione
DVD,cioe' 8 per ogni SPE, mentre una cpu general purpose senza
accelerazione della scheda grafica, occupava ben piu' del 30% del
tempo macchina su cpu a 2 ghz. (8 flussi = 240% del tempo macchina),
oggi non lo vediamo piu' perche' su PC e' tutto fatto sfruttando le
accelerazioni delle schede video).
k-Christian2702 Ottobre 2006, 13:14 #32
Una info per chi giudica l X360 nuna macchinetta:

Non so se avete visto la presentazione in tempo reale di Alan Wake gestita solamente da un PC Quad Core...
L'uragano e la tempesta hanno sfuttato i quad core e come stesso ha detto il programmatore del gioco Alan Wake non potrebbe girare con questo tipo di effeti su di un PC double core...
Ovvero i super effetti (comunque anche i normali sono meravigliosi) gireranno alla grande sul X360 che è 6 !!!! core...

Cio che abbiamo visto da un anno fino ad ora è veramente un assaggio anche se è difficile da credere perchè chiunque habbia giocato KAMEO (e soffrmatosi a vedere tutto il mondo circostante) è rimasto allibito da cosa è riuscita a fare la RARE... ovvero cio che sognavo anni fa.. gioche stile CGI in tempo reale...

Byexx...
dsajbASSAEdsjfnsdlffd02 Ottobre 2006, 13:31 #33
@devilsavvocate

probabilmente non hai capito, ci riprovo:

(Nota: dal forum si vede meglio)
[PHP]
if (A) {
istruzioneA
if (B) {
istruzioneB
}
else {
istruzioneC
}
}
else {
istruzioneD
if (C) {
istruzioneE
}
else {
istruzioneF
}
[/PHP]
diventa
[PHP]
if (A&B) {
istruzioneA
istruzioneB
}
if (A&!B) {
istruzioneA
istruzioneC
}
if (!A&C) {
istruzioneD
istruzioneE
}
if (!A&!C) {
istruzioneD
istruzioneF
}
[/PHP]

ora ti chiedo di fare l'enorme sforzo di immaginazione di aggiungere altri livelli di if al primo caso e immaginarti quante volte devi replicare le istruzioni nel secondo caso per farlo venire analogo (nota che è pseudocodice, con "!A&!C" intendo il tuo indice che corrisponde alla sitazione in cui è falso il salto associato ad a e c, ad esempio)

ora, è VERISSIMO che puoi scriverti un codice che faccia queste trasformazioni quando è possibile ossia tutte le codnizioni sono GIA VALUTABILI prima del primo if, e NON È SEMPRE COSÌ, ma a questo putno lo vedi che è più costoso il secondo approccio? hai addirittura bisogno di sviluppare un tool per scriverti gli if... non è per niente una bella cosa, e poi chi lo mantiene? quando fai una modifica ad esempio all'istruzioneA la devi cambiare intutti i blocchi altrimenti hai bug a cascata.

considera inoltre che nel primo caso arrivi al blocco di istruzioni da eseguire con un albero, nel secondo caso invece è come scorrersi una lista, è svantaggioso in tutti i sensi a meno che non sia possibile indicizzarei l salto al posto giusto con un calcolo in tempo costante, ma non sembra questo il caso

spero di essere stato chiaro questa volta.
Jon_Snow02 Ottobre 2006, 13:43 #34
ho detto che funzioneranno solo 5 o 6 per il semplice fatto che 1 spe viene utilizzata al 100% dal SO della ps3 e quindi non è utilizzabile dal motore di un gioco, inoltre quando verrà utilizzato il servizio live della ps3 per gestire chat in tempo reale e comunicazione video viene utilizzata anche un ulteriore spe rendendola di fatto non sfruttabile se non in parte daigli sviluppatori.


Ok avevo capito male, sorry!

@Jon_Snow: scusa ma se come dici tu il problema e' semplicemente di branch prediction e salti, non si risolve col vecchissimo metodo del case multicondizione?
(in pratica si effettua un numero molto minore di salti preparando prima un valore corrispondente all'insieme delle condizioni con istruzioni IF a salto minimo (1 istruzione) e poi effettuando un salto piu' grosso guidato da
una "tabella" opportuna).


Prima di risponderti vorrei precisare che i miei sono stati esempi per dare l'idea su un'architettura [u]realmente[/u] innovativa, il processore Cell è una grande opera ingegneristica che gode di tutta la mia ammirazione è stato un piacere poterla studiare.
Tornato alla tua domanda, hai intuito bene l'idea della IBM che tra le altre cose si era già vista parecchi anni fa ed è stata ripresa oggi con i tempi e dimensioni di cache più maturi.

Per qualsiasi CPU, la banda di cache utilizzata è fortemente legata a come è scritto il programma sia logicamente e sia a livello di linguaggio macchina. Esistono molte tecniche che aiutano nel predirre l'istruzione successiva o comunque a limitare i casi di stallo. Ottimizzazioni del genere solitamente sono effettuate già dal compilatore e dai kit di sviluppo stessi che ovviamente prima di raggiungere una certa maturità necessitano di molto tempo.

Nel caso delle SPU tutto ciò è reso ancora più estremo spostando ulteriormente il punto focale a livello software dovendo gestire "a mano" (ovviamente con l'aiuto dei compilatori) la caching stessa senza il supporto di unità elettroniche. Una scelta del genere non è da folli perché la linea di principio e simile all'idea dei RISC PowerPC: snellirre la complessità hardware per diminuire i ritardi dovuti ad un numero eccessivo di porte logiche necessarie per gestire algortimi complessi. In altre parole la cache è più veloce di quelle tipiche per PC. Ovviamente la complessità di progettazione del software aument, certamente ciò che dici potrebbe essere una delle tante vie. Il problema è che tutto è legato all'applicazione stessa e nei giochi, dove il real-time è un fattore cruciale, il modo con cui si limita l'accesso diretto in RAM diventa di cruciale importanza.

Anche se a parole potrebbe sembrare facile, in realtà non lo è affatto, è sicuramente un'aggiunta in più ai programmatori. Daltro canto i margini di miglioramento sono molto elevati e legati soprattutto allo sviluppo dell'SDK da parte di Sony. Il fatto che li abbia presentati con enorme ritardo alle case terze la dice lunga su quanto difficile e su quanto importanti siano.

Quanto al problema della sincronizzazione delle SPU, non mi pare un grosso
problema: perche' si dovrebbe usare del tempo-macchina per eseguire esclusivamente l'AI quando la si puo'
eseguire in background dedicandole esclusivamente 1-2 SPU e "mescolando"
il codice general purpose in vari punti dentro il ciclo per la generazione di ogni
frame? ( portando cosi' i problemi di sincronismo a zero o quasi, visto che
si "dilata" l'esecuzione nel tempo quasi come se fosse un processo in
background lanciato su una CPU secondaria).

O e' una cosa troppo difficile/complicata per i programmatori della Ubisoft?


Il problema è che le SPU per come sono pensate non sono paragonabili a core indipendenti, forzandole a tale funzionamento si perdono molte delle vere potenzialità del Cell. Assegnare compiti del tutto indipendenti non si sfruttano le possibilità di comunicazione tra le unità, e si potrebbero intercorrere a colli di bottiglia imprevisti. Ad esempio il BUS EIB tra i coprocessori è pensato per favorire passaggi di dati tra SPU molto vicine, tanto è vero che gli ingegneri hanno bloccato la possibilità di spedire byte ad un'unità troppo "distanti".

Assegnando alle varie SPU codice GP senza un determinato criterio si rischia di generare una eccessiva mole di dati. In realtà la strada da seguire è quella che hai intuito tu: cercare di "mescolare" le varie operazioni tra i coprocessori piuttosto che assegnare compiti specifici ad ognuno di essi. Sembra facile? Non lo è affatto. Il parallismo per essere sfruttato al meglio rischiede molta esperienza. Il rischio è quello di sbilanciare il carico tra le SPU ed è bene precisare che tutto ciò è a livello [u]macchina[/u] e non applicativo.

No, non è facile per niente. Ovviamente la Ubisoft ha tutti i mezzi per poterlo fare, ma un conto è la teoria, altro è la pratica con costi e tempi ristretti.
Wip3out02 Ottobre 2006, 13:58 #35
Scusate, apparte i tecnicismi e le considerazioni sulla convenienza o meno per UBISOFT di "studiare" il CELL, ma se non erro Assanins Creed era nato come esclusiva PS3, quindi in teoria se dovevano metere più impegno da una parte avrebbe dovuto essere proprio la parte Sony. Invece hanno completamente ribaltato la frittata. Questo è forse indice di una "estrema" sconvenienza nel cercare ottimizzazione per il CELL?
Che ne pensate?
Jon_Snow02 Ottobre 2006, 14:08 #36
bhe ovviamente non sta a me decidere se ad Ubisoft conveniva o meno puntare sulla PS3, se hanno fatto questa scelta hanno avuto i loro motivi.

La tua considerazione in realtà è più che esatta e ti quoterei in pieno se non fosse per un particolare, che già versione vista all'E3 girava su X360 anche se presentata allo stand Sony! Lo so, sembra assurdo, ma tempo fa avevo letto un articolo a riguardo, passato in sordina a quanto pare, e non ho letto di smentite in giro per la rete.
Defragg02 Ottobre 2006, 14:54 #37
Originariamente inviato da: k-Christian27
Ovvero i super effetti (comunque anche i normali sono meravigliosi) gireranno alla grande sul X360 che è 6 !!!! core...

la X360 non è a 6 core...ha tre core fisici capaci ciascuno di 2 thread
Defragg02 Ottobre 2006, 14:55 #38
Originariamente inviato da: jpjcssource
Link ad immagine (click per visualizzarla)

adesso diventerà l'eroina di tutti i boxari

e chi sarebbè?
coschizza02 Ottobre 2006, 15:01 #39
Originariamente inviato da: Defragg
e chi sarebbè?


se non erro è la ragazza (produttore del gioco per l'ubisoft) che ha mostrato la demo all' x6 della scorsa settimana.
Defragg02 Ottobre 2006, 15:09 #40
Originariamente inviato da: coschizza
se non erro è la ragazza (produttore del gioco per l'ubisoft) che ha mostrato la demo all' x6 della scorsa settimana.

'usti...che bella presenza

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^