Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 08-03-2009, 13:50   #1
ciccio_g
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 14
Matlab è più lento dei codici di basso livello?

Nella compilazione di codici per l'analisi numerica la velocità computaziole è tutto. So che matlab inteso come linguagio di programmazione è molto più lento di codici tipo c e fortran, ma mi preme sapere se le funzioni offerte da matlab (in particolare linsolve e inv) sono più lente delle corrispondenti funzioni di libreria in c e in fortan, considerandone le versioni più evolute che si trovano in rete. In definitiva in che rapporto stanno il tempo impiegato da matlab per invertire una matrice con la funzione inv e quello impiegato da fortan utilizzando la migliore libreria...
ciccio_g è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2009, 14:20   #2
Cristiano87
Junior Member
 
Iscritto dal: Mar 2009
Città: Milano
Messaggi: 6
prova e dicci
l'inversione dipende dall'algoritmo usato, dall'ordine della matrice e dalla risoluzione che hanno i numeri.
Dalla doc di matlab hai che:
X = linsolve(A,B) solves the linear system A*X = B using LU factorization with partial pivoting when A is square and QR factorization with column pivoting otherwise.

In generale se è un progetto importante per il quale conosci già la risoluzione che devono avere i numeri ed il tipo di scomposizione più efficiente per il tipo di matrici con cui lavorerai (che ne so, se è sparsa tot allora), forse ti conviene usare C e trovarti una buona libreria o addirittura scrivertela, ma è un lavoro oneroso e devi essere particolarmente ferrato in algebra

Matlab è la via più comoda, se non ti garba la fattorizzazione cerca qualche altra libreria =)
Cristiano87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2009, 14:36   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2781
Non conosco Matlab, però può darsi che come succede per altri linguaggi alcune funzioni e librerie siano scritte con un linguaggio diverso proprio per aumentare la velocità di calcolo. Se fosse così non avresti vantaggi usando C. Come ti ha detto Cristiano87 conviene provare
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2009, 18:27   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Attenzione perché per funzioni complesse è molto più importante usare un algoritmo allo stato dell'arte che usare un linguaggio che ti permette di ottenere un codice molto performante.
Mi spiego: se devi lavorare con una matrice 100x100 e l'algoritmo implementato in Matlab ha complessità O(n log n), mentre il tuo ha complessità O(n^2), è possibile che tu abbia anch eun peggioramento.
Quindi è sì improtante usare un linguaggio che abbia buone prestazioni, ma è ancora più importante usare un algoritmo e strutture dati allo stato dell'arte.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2009, 18:36   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da cionci Guarda i messaggi
Attenzione perché per funzioni complesse è molto più importante usare un algoritmo allo stato dell'arte che usare un linguaggio che ti permette di ottenere un codice molto performante.
Mi spiego: se devi lavorare con una matrice 100x100 e l'algoritmo implementato in Matlab ha complessità O(n log n), mentre il tuo ha complessità O(n^2), è possibile che tu abbia anch eun peggioramento.
Quindi è sì improtante usare un linguaggio che abbia buone prestazioni, ma è ancora più importante usare un algoritmo e strutture dati allo stato dell'arte.
quoto
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2009, 20:08   #6
Vincenzo1968
Bannato
 
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
Quoto anch'io Cionci.
Ma è chiaro che, a parità di complessità, il linguaggio C fa la differenza

Vincenzo1968 è offline   Rispondi citando il messaggio o parte di esso
Old 08-03-2009, 23:40   #7
ciccio_g
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 14
Quote:
Originariamente inviato da cionci Guarda i messaggi
Attenzione perché per funzioni complesse è molto più importante usare un algoritmo allo stato dell'arte che usare un linguaggio che ti permette di ottenere un codice molto performante.
Mi spiego: se devi lavorare con una matrice 100x100 e l'algoritmo implementato in Matlab ha complessità O(n log n), mentre il tuo ha complessità O(n^2), è possibile che tu abbia anch eun peggioramento.
Quindi è sì improtante usare un linguaggio che abbia buone prestazioni, ma è ancora più importante usare un algoritmo e strutture dati allo stato dell'arte.
Tale considerazione è giustissima, poichè se un algoritmo ha una complessità più bassa, anche implementandolo in un codice pessimo, che impiega molto più tempo per fare la singola operazione, al tendere di n all'infinito impiegherà comunque un tempo infinitamente più basso. Per questo motivo nella mia domanda facevo riferimento alle milgiori librerie (dal punto di vista di efficienza dell'algoritmo) che si trovano in rete per il calcolo lineare in c o in fortran, dando in qualche modo per scontato che anche matlab essendo un software di calcolo implementi l'algoritmo ottimo. Per tagliare la testa al toro riformulo la domanda:
Ipotizziamo che la funzione linsolve utilizzi l'algoritmo più efficiente per risolvere i sistemi lineari e consideriamo una libreria in fortran che si basi sullo stesso algoritmo: chi dei due è più veloce?
PS: è ovvio che se uno sciagurato anzichè utilizzare linsolve implementasse in un m file l'algoritmo in esame otterrebbe una funzione molto più lenta (anche se con la stessa complessità) dei codici di basso livello...
ciccio_g è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 00:23   #8
tiMo
Member
 
Iscritto dal: Jan 2005
Messaggi: 157
Per l'algebra lineare Matlab (e Mathematica e R e molti altri ambienti di sviluppo ad alto livello) usano le librerie BLAS e LAPACK scritte in fortran 77 e poi tradotte in C, ergo, in questo caso Matlab è veloce come il C o il Fortran.

ciao

tiMo
__________________
The plural of anecdote is not data.
~ Roger Brinner
tiMo è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 06:06   #9
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Mia esperienza personale: occorre studiare molto bene il problema per essere piu' veloci di Matlab,e spesso si riesce al massimo ad eguagliarlo.
Spesso Matlab e' cosi' veloce da non sembrar vero che abbia gia' fatto tutti i conti, mentre magari il tuo programma non e' nemmeno ad un decimo.

In azienda abbiamo diversi gruppi che si occupano di sviluppare modelli matematici per i nostri impianti. Ogni gruppo fa le scelte tecniche che vuole.
In particolare, conosco 3 gruppi che hanno fatto 3 scelte distinte:
- Fortran
- C++
- Matlab

Il gruppo che usa Matlab ha prodotto il modello matematico piu' accurato, efficente ed estremamente performante.

Il gruppo che usa Fortran ha prodotto un modello che non e' lo stato dell'arte, ma funziona discretamente in tutte le condizioni, anche non nominali. Spesso non produce la soluzione ottimale ma l'impianto puo' funzionare correttamente anche con la soluzione trovata.

Il gruppo che usa C++ sta cercando di capire perche' va in crash in condizioni non nominali, e sta cercando di trovare memory leak e capire perche' gira cosi' lentamente.

Purtroppo non posso portare riferimenti per mostrare quanto ho affermato.
Cmq e' tutto vero.


Morale della favola: programmate in C++!! Infatti in azienda e' il gruppo piu' pagato.....
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 09:40   #10
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Io più che dare la colpa al C++, darei la colpa ai programmatori
Insomma, prima di provare a costruire modelli matematici sarebbe il caso di imparare ad accoppiare i new coi delete no?

In più l'algoritmo non dipende dal linguaggio, quindi dovevano _almeno_ farlo funzionare come in fortran.
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 09:57   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Io più che dare la colpa al C++, darei la colpa ai programmatori
Insomma, prima di provare a costruire modelli matematici sarebbe il caso di imparare ad accoppiare i new coi delete no?
Quindi anche programmatori esperti e/o famosi e/o ben pagati che rilasciano applicazioni bacate in realtà sconoscono le basi della programmazione in C++?

"I memory leak non esistono".
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 10:03   #12
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da ciccio_g Guarda i messaggi
Nella compilazione di codici per l'analisi numerica la velocità computaziole è tutto. So che matlab inteso come linguagio di programmazione è molto più lento di codici tipo c e fortran, ma mi preme sapere se le funzioni offerte da matlab (in particolare linsolve e inv) sono più lente delle corrispondenti funzioni di libreria in c e in fortan, considerandone le versioni più evolute che si trovano in rete. In definitiva in che rapporto stanno il tempo impiegato da matlab per invertire una matrice con la funzione inv e quello impiegato da fortan utilizzando la migliore libreria...
Secondo me, se ti fai questa domanda, puoi tranquillamente buttarti su matlab. Per quel poco che l'ho usato all'università, è uno strumento perfetto per fare calcolo numerico.
Il linguaggio è un pò da sindrome "Oh mio diooo, i miei occhi! I miei bellissimi occhi!!", però nel complesso fa il suo sporco lavoro dannatamente bene. E poi come ti è stato detto, per le operazioni "a basso livello", tipo moltiplicare matrici, usa già librerie ultra-ottimizzate.
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 10:10   #13
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Io più che dare la colpa al C++, darei la colpa ai programmatori
Insomma, prima di provare a costruire modelli matematici sarebbe il caso di imparare ad accoppiare i new coi delete no?

In più l'algoritmo non dipende dal linguaggio, quindi dovevano _almeno_ farlo funzionare come in fortran.
Beh, in azienda siamo in 9000. Si possono trovare skill molto diversi fra di loro.
C'e' da dire che la progettazione di un software (soprattutto quando di grandi dimensioni) terra' conto del linguaggio con cui si andra' poi a realizzare il tutto.
Non e' quindi insolito che lo stesso algoritmo sia stato implementato in maniera diversa nei tre diversi linguaggi di programmazione.
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 10:14   #14
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Quindi anche programmatori esperti e/o famosi e/o ben pagati che rilasciano applicazioni bacate in realtà sconoscono le basi della programmazione in C++?

"I memory leak non esistono".
Pensavo fosse "Il caso non esiste". Non era la tartaruga di Kung Fu Panda?
In effetti la domanda che hai fatto e' ben posta.

Cmq esistono due tipi di lavori: quelli belli (chiamati "A" ) e quelli brutti (chiamati "B").

Per sapere se stai facendo un lavoro di tipo "A" o "B" c'e' un criterio di selezione basato su una domanda molto semplice.
La domanda e': "Funziona?"

- Se sei tu a porre questa domanda, allora il tuo lavoro e' di classe "A";
- Se devi rispondere a questa domanda, allora il tuo lavoro e' di classe "B";

Se hai scelto come linguaggio di programmazione (o te l'hanno imposto) il C++, la risposta sara': "Si, ma....."
__________________
In God we trust; all others bring data
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 10:44   #15
federico100mt
Member
 
Iscritto dal: Apr 2008
Messaggi: 86
io personalmente venendo dal supercalcolo ho constato che matlab ha dei grossi problemi nelle fasi di I/O, per grandi quantità di dati prticamente esplode, un buon porting da matlab a C è risultato essere quai 1/3 più veloce, analizzando solo "il blocco dei calcoli"...
federico100mt è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 10:45   #16
federico100mt
Member
 
Iscritto dal: Apr 2008
Messaggi: 86
io personalmente venendo dal supercalcolo ho constatato che matlab ha dei grossi problemi nelle fasi di I/O, per grandi quantità di dati prticamente esplode, un buon porting da matlab a C è risultato essere quasi 1/3 più veloce, analizzando solo "il blocco dei calcoli"...
federico100mt è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 14:24   #17
ciccio_g
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 14
Ho ricevuto molte risposte, ma anche alcune che non c'entrano niente con la domanda per come è stata formulata.
Io inizialmente una mia idea la avevo ed era quello che ha detto tiMo, ovvero che per l'algebra lineare matlab è insuperabile dai codici di basso livello, non fosse altro perchè si appoggia ad essi. A proposito di ciò non ho ricevuto altre indicazioni dirette, perciò se qualcuno condivide tale tesi, prego di quotare.
Per quanto riguarda quello che ha detto Antonio23 mi sembra molto strano che matlab impieghi molto tempo per invertire una matrice: forse è lento perchè il programma nel complesso deve fare altre oprazioni che in c sono molto più veloci.
Anche se la mia domanda ha carattere generale ti faccio un esempio relativo alla mia esperienza:
in questo periodo sto scrivendo codici agli elementi finiti ed è noto che il grosso del tempo è preso dalla risoluzione delle equazioni algebriche: ebbene fino a matrici di tipo 2000*2000 nel mio codice c'è un pezzo per l'assemblaggio della mesh che ho scritto in matlab e ha complessità quadratica ed impiega fino a un minuto, mentre per la risoluzione del matlab ci mette pochi secondi: di conseguenza se volessi ottimizzare basterebbe scrivere un codice in c per eseguire la prima parte e lasciare la risoluzione a matlab perchè sono dell'idea che offra gia il tempo minimo...
PS: lasciamo stare che ho provato a farlo e come dicevate voi mi da problemi di memoria e si chiude proprio matlab...
ciccio_g è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 14:44   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Cerchiamo di essere più precisi: se sfrutti un algoritmo già implementato in matlab è chiaro che è molto veloce, visto che praticamente svolge esclusivamente calcoli con linguaggi di basso livello.
Se invece vai ad implementare un TUO algoritmo in Matlab, che sfrutta non solo primitive/API Matlab, ma anche funzioni del linguaggio stesso come manipolazione di variabili e vettori, cicli etc etc è ovvio che sia più lenta di un linguaggio di basso livello...ma per vari motivi: prima di tutto il linguaggio di Matlab è interpretato, di fatto il syntax checking viene fatto istruzione per istruzione. Poi anche il semplice passaggio dei dati dall'interprete alle primitive è molto probabile che crei copie che in un linguaggio di più basso livello non sarebbero necessarie, chiaramente all'aumentare della dimensione degli input e degli output questa cosa incide in maniera molto pesante.
Insomma è palese che un algoritmo realizzato con il linguaggio di Matlab sia più lento di uno realizzato in un linguaggio di basso livello, a parità di algoritmi e disponendo dell'adeguata capacità tecnica per implementarli nel linguaggio di basso livello.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 15:07   #19
ciccio_g
Junior Member
 
Iscritto dal: Mar 2009
Messaggi: 14
Quote:
Originariamente inviato da cionci Guarda i messaggi
Insomma è palese che un algoritmo realizzato con il linguaggio di Matlab sia più lento di uno realizzato in un linguaggio di basso livello, a parità di algoritmi e disponendo dell'adeguata capacità tecnica per implementarli nel linguaggio di basso livello.
È quello che ho già ribadito 2 volte...infatti avendo accurato che per l'algebra lineare matlab con le sue funzioni intrinseche (linsolve,inv) si appoggia ai codici di basso livello, sarebbe bello sapere da qualcuno che ha un esperienza diretta se in ogni caso possa essere più lento per qualche motivo o se non ha di questi problemi e per altro è da considerarsi il top della rapidità, poichè dal punto di vista dell'algoritmo impiegherà sicuramente il migliore attualmente disponibile...
ciccio_g è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2009, 15:10   #20
tiMo
Member
 
Iscritto dal: Jan 2005
Messaggi: 157
Quote:
Originariamente inviato da ciccio_g Guarda i messaggi
Ho ricevuto molte risposte, ma anche alcune che non c'entrano niente con la domanda per come è stata formulata.
Io inizialmente una mia idea la avevo ed era quello che ha detto tiMo, ovvero che per l'algebra lineare matlab è insuperabile dai codici di basso livello, non fosse altro perchè si appoggia ad essi. A proposito di ciò non ho ricevuto altre indicazioni dirette, perciò se qualcuno condivide tale tesi, prego di quotare.
[...]
Non c'e' bisogno che qualcun altro condivida, puoi andare direttamente nel sito Mathworks se non ti fidi

http://www.mathworks.com/support/sol...a/1-18QUC.html

questo invece e' il sito originale delle BLAS

http://www.netlib.org/blas/

Si possono ottenere risultati migliori rispetto al default se si usa una versione delle BLAS espressamente compilata/ottimizzata per un architettura specifica o per sfruttare il multicore. Intel ha le MKL mentre AMD ha le ACML, nel link che ti ho postato ti dicono come fare per usarle.

ciao

tiMo
__________________
The plural of anecdote is not data.
~ Roger Brinner
tiMo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Amazon versa 180 milioni al Fisco e canc...
Meta, il Board di Supervisione guarda o...
DJI rivoluziona le consegne aeree: il nu...
Fibercop e Microsoft Italia uniscono per...
App Store Award 2025: scarica le 17 app ...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Xiaomi L1 a 153€: il proiettore smart 10...
Dopo Amazon, anche il data center di Gro...
Scoppia il caso Meta AI: l'Europa apre u...
Torna in sconto dopo mesi il super table...
Ricarica elettrica senza cavi: in Svizze...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:33.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v