martedì mar 24, 2009

Gli effetti della compressione JPEG su un'immagine

Ecco un interessante video che mostra gli effetti della compressione JPEG (che lo ricordiamo utilizza un algoritmo lossy) su una immagine che è stata aperta e salvata 600 volte:

Maggiori informazioni e lo script (che utilizza il linguaggio Processing) per creare il filmato si trovano qui.

venerdì lug 25, 2008

Sun, OpenSPARC e Haskell per il multi-core

Nell'ambito dell'iniziativa OpenSPARC, Sun ha donato un sistema T5120 (e $10.000 per una borsa di studio per uno studente) per ottimizzare l'uso di Haskell (un linguaggio di programmazione puramente funzionale) su sistemi multi-core. Gli sviluppi saranno focalizzati sul compilatore GHC.

sabato apr 12, 2008

Creare uno slideshow con Picasa Web Album

Forse non tutti sanno che per avere l'opzione di creare uno slideshow con Picasa Web Album da inserire nel proprio sito web è necessario impostare nelle impostazioni la lingua ad "English". Così facendo, quando si seleziona un album, compare l'opzione "Embed Slideshow" che purtroppo, ad oggi, non è disponibile con la lingua italiana. Ecco un esempio di slideshow tratto dalla gita a Monterano:

martedì apr 01, 2008

Calcolare Pi greco con Fortress e l'Ago di Buffon

E' disponibile da oggi il nuovo sito e la release 1.0 del linguaggio Fortress (già discusso qui).

La sintassi del linguaggio è molto simile a quella della matematica ed è infatti possibile (utilizzando l'utility fortify che fa parte della distribuzione di Fortress) esportare un sorgente in formato LaTeX.

Ecco un esempio di un programma Fortress che approssima Pi greco utilizzando l'Ago di Buffon (per chi è interessato qui c'è un ulteriore metodo basato sul caso, scritto in Perl). Questo algoritmo si basa sulla relazione che esiste tra Pi greco e la probabilità che un ago, lanciato su un piano percorso da rette tra loro parallele ed equidistanti, intersechi o meno una delle rette.

Il sorgente è tratto dalle demo incluse nella distribuzione di Fortress:

run(args:String...):()=do
needleLength = 20
numRows = 10
tableHeight = needleLength numRows
var hits : RR64 = 0.0
var n : RR64 = 0.0

println("Starting parallel Buffons")
recordTime(6.0)
for i <- 1#3000 do
delta_X = random(2.0) - 1
delta_Y = random(2.0) - 1
rsq = delta_X\^2 + delta_Y\^2
if 0 < rsq < 1 then
y1 = tableHeight random(1.0)
y2 = y1 + needleLength (delta_Y / sqrt(rsq))
(y_L, y_H) = (y1 MIN y2, y1 MAX y2)
if ceiling(y_L/needleLength) = floor(y_H/needleLength) then
atomic do hits += 1.0 end
end
atomic do n += 1.0 end
end
end
probability = hits/n
pi_est = 2.0/probability
printTime(6.0)
println("")
print("estimated Pi = ")
println(pi_est)
end
end

Ecco lo stesso sorgente come output del LaTeX:

Ecco l'output del programma buffons.fss (con 3.000 iterazioni l'algoritmo non converge molto bene): 

$ ~user/Test/fortress-1.0/bin/fortress demos/buffons.fss 
guessing FORTRESS_HOME=/Users/user/Test/fortress-1.0/bin/..
Starting parallel Buffons
Operation took 689ms

estimated Pi = 3.132848645076008

lunedì gen 22, 2007

Fortress, un linguaggio di programmazione per l'High Performance Computing (HPC)

Fortress è un nuovo linguaggio di programmazione disegnato dai Sun Labs per l'High Performance Computing (HPC). Per esplorare approcci innovativi e semplificarne l'utilizzo, il disegno del linguaggio Fortress non è stato legato a nessuna sintassi o semantica di linguaggi tradizionali e tutti gli aspetti specifici di un linguaggio per l'HPC sono stati ripensati da zero. Il risultato è un linguaggio che implementa nativamente funzionalità come transazioni, località e calcolo parallelo implicito. Funzionalità ulteriori come un modello basato su componenti ed un framework di test facilitano l'assemblamento ed il collaudo dei programmi e permettono al compilatore di effettuare ottimizzazioni efficienti anche tra librerie differenti.

Anche la sintassi di base del linguaggio Fortress sono ritagliate su misura per la moderna programmazione HPC, supportando la notazione matematica e il controllo statico delle proprietà (come unità fisiche e dimensioni), il controllo statico di vettori e matrici multidimensionali e la definizione in una libreria di sintassi legata ad un dominio applicativo specifico. Inoltre il linguaggio è stato disegnato con l'intento di essere "estendibile" tramite l'aggiunta di ulteriori funzionalità specifiche: infatti la maggior parte del linguaggio stesso (incluse, ad esmepio, la definizione dei vettori e di altri tipi di base) è codificata nelle librerie utilizzando come base un insieme relativamente ridotto di regole "fisse".

Il nome "Fortress" intende sottolineare l'intenzione di produrre un "Fortran" intrinsecamente sicuro. In realtà, a parte per l'etimologia, non vi sono relazioni evidenti tra i due linguaggi, a parte il dominio applicativo di riferimento: nelle intenzioni degli autori l'obiettivo di Fortress è di essere per il Fortran ciò che il linguaggio Java è stato per il C.

Per ulteriori informazioni:


About

Un diario digitale sui miei interessi: Internet, Solaris, Java, Fotografia, ecc.

Search

Archives
« aprile 2014
lunmarmergiovensabdom
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today