Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS ProArt GoPro Edition è il notebook compatto per chi crea
ASUS ProArt GoPro Edition è il notebook compatto per chi crea
Un notebook sviluppato in collaborazione con GoPro ma che risponde al meglio alle necessità di tutti coloro che creano contenuti video: robustezza, design, potenza di calcolo e funzionalità si abbinano al meglio tra di loro, pur se a prezzo di un costo elevato per via della tanta memoria onboard
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-08-2010, 11:41   #1
Bronsa
Junior Member
 
Iscritto dal: May 2008
Messaggi: 21
[lisp] calcolatore pigreco

Boh mi annoiavo e così ho scritto questo script in Common Lisp che calcola n cifre di pi greco, utilizzando la formula di Machin,e la serie di Taylor per calcolare l'arcocotangente

per rendere piu' veloce l'esecuzione e per evitare stack overflow ha usato tail-recursion, con il quale sovrascrive continuamente lo stesso segmento di stack ad ogni ricorsione senza riempire la memoria ed evitare, appunto stackoverflow

inoltre per evitare di thrownare in floating-point-overflow ,ho deciso di operare su interi anziche' su floating

il tempo di esecuzione quadruplicizza al raddoppiare delle cifre da trovare; sul mio pc per calcolare 50mila cifre dopo la virgola impiega 15secondi, fate i conti voi.
===EDIT==
con la nuova version impiaga sulla mia macchina 17 secondi per calcolare 100mila cifre

il codice e' implementation dependent, l'ho volutamente reso compatibile solo usando sbcl dall momento che è l' unica implementazione in grado di svolgere questi conti e lo fa ottimamente poichè a differenza di altre implementazioni, compila in codice macchina anziche bytecode

purtroppo a causa dei limiti imposti dal linguaggio, viene eseguito senza sfruttare il multi core, l'unico modo che ho trovato per risolvere, è calcolare in parallelo su 2 thread diversi le 2 arcocotangenti, che limita comunque a massimo 2 core utilizzati


il sorgente si trova su http://sprunge.us/eCPK?cl
====EDIT==== dopo varie modifiche ho ottenuto un aumento delle prestazioni pari a circa del 70 %, il codice aggiornato è qui http://sprunge.us/cYNY?cl

commenti e suggerimenti sono ben accetti

P.S se riesco a trovare un modo per trasformare floating in interi anche con l'algoritmo di Gauss-Legendre, implementero quello che rendera' il calcolo _molto_ più veloce
Bronsa è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2010, 14:30   #2
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
ciao, dando una rapida occhiata col profiler la maggior parte del tempo viene passato nelle operazioni tra bignum o altre funzioni interne di sbcl, per cui a meno di ridurre le operazioni stesse (o di cambiare algoritmo ovviamente) riuscirai a limare poco (ad esempio hai provato a spezzare in due arccos in modo da non dover moltiplicare per il segno, o di sfruttare entrambi i valori di floor ?).
In generale comunque quando vuoi ottenere le massime prestazioni aggiungi in cima al codice
Codice:
(declaim (optimize speed))
In questo modo il compilatore salta un po' di controlli (ad esempio i bound degli array); se il programma e' corretto va piu' veloce, se non lo e' rischi che crashi.
Inoltre nelle funzioni piu' interne e' buona cosa specificare il tipo dei dati
Ad esempio
Codice:
(defun arccot (x-rest n x-elevate sign product)
  "Arccotangent calculator, using Taylor series"
  (declare (type fixnum sign)
            (type integer x-rest n x-elevate product))
...
Aumenta la velocita' delle operazioni numeriche , perche' il compilatore non deve aggiungere il codice per controllare il tipo dell'argomento.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2010, 16:02   #3
Bronsa
Junior Member
 
Iscritto dal: May 2008
Messaggi: 21
guarda, mi son dimenticato di postare ma questa mattina mi son accorto di essermi dimenticato e ho inserito (declaim (optimize (speed 3) (safety 0) (debug 0)))

Per il fatto di definire il tipo delle variabili esplicitamente, non ci avevo pensato

Intendi una cosa tipo
(defun arccot+ (..)
...
(arccot- ..))
(defun arccot- (..)
...
(arccot+ ..))
?

==EDIT==
Effettivamente creando 2 funzioni ho guadagnato un pò di ottimizzazione...
http://sprunge.us/JgaZ?cl

Ultima modifica di Bronsa : 20-08-2010 alle 16:32.
Bronsa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS ProArt GoPro Edition è il notebook compatto per chi crea ASUS ProArt GoPro Edition è il notebook c...
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Da casa puoi comandare cento robot veri ...
Google Pixel 10a a 399€ (128 GB) e 479€ ...
Apple rilascia iOS 26.6: risolte oltre 7...
Porsche investirà 2,1 miliardi in...
Il film Odissea di Nolan finisce su X: o...
EmuDeck si dichiara pronta per Steam Mac...
Addio spandex non riciclabile: ecco il n...
Samsung Galaxy Book6 a 999€: portatile d...
NVIDIA pronta a tagliare la capacit&agra...
Amazon chiede all'FCC 5.105 satelliti pe...
Galaxy S27 Ultra dovrebbe costare di pi&...
La Cina accelera sull'autonomia nei macc...
Ora è ufficiale, Google aumenterà i pre...
Il sito russo di cui Andrea Pirlo &egrav...
CXMT debutta in Borsa con un +466%, il f...
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: 08:46.


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