Visualizzazione post con etichetta Apple. Mostra tutti i post
Visualizzazione post con etichetta Apple. Mostra tutti i post

martedì 30 novembre 2021

Mandelbrot M1 Metal Python

 Dopo il test di Cuda e' arrivato il momento di Metal, il linguaggio per la GPU di Apple

Gli ersempi in C++ sono un po' complicati per una semplice prova ed ho optato per la versione in Python in cui il kernel e' comunque scritto in C++ MetalCompute (negli esempi della libreria c'e' gia' una implementazione di Mandelbrot, l'ho scritta da zero per imparare...sicuramente la mia versione e' meno efficiente)


La logica seguita e' quella di Cuda, ogni thread si occupa di una riga

Si puo' solo passare un solo parametro come array di float al kernel e si ha in uscita un solo array di float. L'array di input e' generato con NumPy con le coordinate X,Y dei punti dell'insieme 


import metalcompute as mc
from PIL import Image as im

mc.init()

code = """
#include <metal_stdlib>
using namespace metal;

kernel void mandelbrot(
const device float* arr [[ buffer(0) ]],
device float* out [[ buffer(1) ]],
uint id [[ thread_position_in_grid ]]) {
float a = arr[id];
float b;
float x_new,y_new,x,y;
int iterazioni = 255;

for (int s=0; s<640;s++)
{
x=0.0;
y=0.0;
b = arr[640+s];

for (int k=0;k<iterazioni;k++)
{
x_new = (x*x)-(y*y)+a;
y_new = (2.0*x*y)+b;
if (((x_new*x_new)+(y_new*y_new))>4)
{
out[id*640+s] = (float)(k%2)*255;
k=iterazioni;
}
x = x_new;
y = y_new;
}
}
}
"""
mc.compile(code, "mandelbrot")
import numpy as np
from time import time as now

dimensioni = 640
x_start = -2.0
x_stop = 0.75
x_res = (x_stop-x_start)/dimensioni
x = np.arange(start=x_start, stop=x_stop,step = x_res,dtype='f')

y_start = -1.5
y_stop = 1.5
y_res = (y_stop-y_start)/dimensioni
y = np.arange(start=y_start, stop=y_stop,step = y_res,dtype='f')

arr = np.concatenate((x,y))
print(arr.shape)

out_buf = np.empty(dimensioni*dimensioni,dtype='f')

start = now()
mc.run(arr, out_buf, dimensioni)
end = now()

immagine = out_buf.reshape(dimensioni,dimensioni)
print(end-start)

immagine = np.int_(immagine)
np.savetxt("dati.txt",immagine.astype(int),fmt='%i')

img = im.fromarray(np.uint8(immagine) , 'L')
img.save('m1.png')
img.show()

mercoledì 24 novembre 2021

Tensorflow su Apple M1 Metal

Ho provato Tensorflow su M1 ed ha una velocita' imbarazzante...ci sono ancora alcuni problemi da risolvere ma la velocita' di M1 e' comparabile se non migliore delle GPU NVidia

Per installarlo si puo' usare le istruzioni a questo link

python3 -m venv ~/tensorflow-metal 
source ~/tensorflow-metal/bin/activate 
python -m pip install -U pip
chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh sh
~/Downloads/Miniforge3-MacOSX-arm64.sh 
source ~/miniforge3/bin/activate
conda install -c apple tensorflow-deps
conda install -c apple tensorflow-deps==2.5.0
python -m pip install tensorflow-macos
python -m pip install tensorflow-metal

(ho installato la 2.5.0 per problemi con la 2.6 su reti che gia' usavo su altre macchine)



Per confronto lo stesso addestramento di rete neurale eseguito su M1 ha impiegato 109 secondi. Su una NVidia Quadro K620M (tensorflow-gpu dockerizzato su Linux) ha impiegato 346 secondi. Su un I7-5500 4 core il medesimo calcolo ha impiegato 1684 secondi 

lunedì 28 dicembre 2020

Debian su Apple M1 con Parallels

Ebbene si', con l'ultimo aggiornamento della technical preview di Parallels sono riuscito ad installare su un Macbook Air M1 la versione Arm di Debian

La rete funziona. Non funzionano perche' non supportati i Parallels Tools...quindi per il momento la risoluzione dello schermo non puo' essere estesa (ci sono due bande nere ai bordi dello schermo)





martedì 2 agosto 2016

Debian 8 su PowerBook G4 Titanium

Con questo post si rientra alle origini del blog ovvero installare Debian su macchina obsolete
In questo caso c'e un dubbio. Ha una mela sullo schermo ma e' un Apple PowerBook od un PC piuttosto bruttino e molto standard ????
Si tratta di un modello particolarmente esotico (su Ebay al momento non sono presenti in vendita esemplari funzionanti) ovvero di un A1025 PowerBook G4 Titanium, un pezzo di storia risalente al 2002 nel periodo di passaggio da OS 9 a OS X


La macchina era destinata alla distruzione ed era priva dell'Hd (il precedente possessore si e' sincerata di rimuovere tutti i suoi dati)..fortunatamente ha lasciato pero' il flat cable per il montaggio dell'HD . Ha montati 256 MB di Ram (standard dell'epoca)

Scheda madre con il nuovo HD da 40 Gb

Accesso alla Ram sotto la tastiera
Le porte sono tutte nascoste da uno scomodissimo sportellino sul retro del computer



L'installazione di Debian 8 per PowerPC (non ci sono repository PowerPC su Debian.it quindi bisogna puntare su Debian.org) non ha mostrato nessun problema...la mancanza di Ram mette un po' in crisi XFCE ma con un po' di tuning si tratta di macchina ancora usabile


lunedì 1 febbraio 2016

Sostituzione batteria su A1286

La sostituzione della batteria sui Mac e' diventata con il tempo sempre piu' difficile a partire dai vecchi MacBook bianchi (dove era banale e bastava una monetina) ad alcuni modelli attuali in cui e' sostanzialmente impossibile

Una delle cose da tenere in considerazione quando si tenta di riportare in vita (o meglio usabile) un vecchio Mac e' che Apple ha la maledetta abitudine si usare uno stesso identificativo per una serie di portatili con hardware molto differente. Per esempio con l'identificativo A1286 vengono definiti 22 modelli differenti di MacBook Pro con dotazione da Core 2 Duo ad I7


Quindi se si compra una batteria di ricambio genericamente per A1286 c'e' la possibilita' di sbagliare (infatti la dimensione della batteria e' la medesima ma cambia il connettore)

Per il MacBook Pro 15 pollici Mid 2009 si deve scegliere il ricambio A1302


Sorpassato il problema iniziale della scelta del giusto ricambio la sostituzione e' banale, ci si deve solo ricordare che non tutte le viti del fondo del computer sono tutte delle stessa dimensione (quelle piu' lunghe sono sul lato della cerniera del monitor). Un lavoro da 10 minuti e circa 30 euro di spesa

venerdì 19 giugno 2015

Crash su sottomissione ad Apple Store


Oggi una sorpresa. Mandando in verifica una app su Apple Store con la stessa procedura che ho fatto solo un paio di giorni fa XCode ha crashato in modo non recuperabile


Chiudere ed aprire Xcode non serve a niente e nemmeno reinstallarlo

La soluzione arriva da questo link: si deve archiviare l'applicazione, lanciare Organizer, chiudere il progetto nella finestraa principale di XCode lasciando aperto Organizer e solo a questo punto si effettua l'upload su Apple Store

Ancora devo capire perche' continuo a pagare soldi per questo tipo di servizio....

martedì 19 agosto 2014

Sostituzione di batteria di MacBook A1286 Mid 2009

Mi sono trovato a dover cambiare una batteria da un MacBook A1286 Mid 2009 ed ho dovuto ad imparare a mie spese come funzionano i nomi dei computer per Apple

Dopo aver acquistato su Amazon una batteria per A1286 mi sono apprestato a sostituirla quando ho visto che i connettori (non le dimensioni) non erano coincidenti tra l'originale ed il pezzo di ricambio


Di fatto con il codice a1286 non e' indicato un computer ma una intera famiglia di MacBook prodotti nell'arco di diversi anni. In particolare nel 2009 la batteria impiegata e' identificata dal codice A1321 mentre i successivi modelli sono passati alla batteria A1382 (ovviamente non compatibile con la precedente)


Una volta arrivato il ricambio giusto l'apertura del portatile e' semplice perche' basta svitare tutte le viti sul retro (attenzione, tre viti sono diverse da tutte le altre e sono poste sul posteriore in corrispondenza delle aperture di raffreddamento). La batteria sembra essere stata bloccata da ulteriori due viti (ci sono le asole) ma sul  modello a me arrivato queste viti non sono presenti forse per precedenti manutenzioni
La sostituzione e' banale e richiede meno di un quarto d'ora

mercoledì 9 luglio 2014

Associare IPhone ad XCode

Per poter provare le applicazione IOS direttamente dentro ad un telefono reale (e non il simulatore) oltre a pagare Apple per registrarsi come developer si deve anche registrare il dispositivo all'interno del proprio profilo (c'e' un limite di 100 dispositivi per sviluppatore)

Per prima cosa si deve aprire XCode (con l'IPhone collegato ed aprire Window/Devices)
L'identificativo del dispositivo e' una stringa di 40 caratteri


a questo punto si va sul proprio profilo sviluppatore sul sito Apple e si inserisce il codice copiato in precedenza


Fatto cio' e' possibile testare le applicazioni sul proprio IPhone






martedì 17 giugno 2014

SD Card su Macbook Pro A1286

Recentemente mi e' stato prestato un  MacBook Pro A1286 un po' datato (meta' 2009) ma sempre una bella macchina.
Non lo sapevo ma questo modello dispone di un lettore integrato di SD Card e dato che avevo da scaricare delle foto ho inserito la memoria nell'apposito slot


Con un certo disappunto non compariva il dispositivo nel Finder. Sulla prima ho pensato che il componente fosse rotto (data l'eta' del calcolatore) ma da una ricerca su Internet ho verificato che si tratta di un problema conosciuto. In pratica non si deve inserire la memoria fino in fondo ma, a tentativi, si deve trovare il punto in cui il lettore riesce a percepirla
Considerando che il computer era venduto da nuovo ad oltre 2200 dollari e che un lettore di SD Card e' un componente da meno di 5 euro e' una caduta di stile da non poco (fra parentesi i portatili IBM hanno un meccanismo a scatto e funzionano benissimo)


martedì 14 gennaio 2014

Da Os X 10.6 a 10.7 via USB - Errore su installazione

Mi sono trovato a dover aggiornare un MacBook (Intel Core Due Duo con 2 Giga di Ram) per il passaggio da Mac Os X 10.6 a 10.7. (fra parentesi ho pochissima esperienza con i Mac ed in particolari con la nuova generazione Intel)
Non avendo un supporto fisico (leggasi DVD) ho preparato una chiavetta USB con il metodo che ho riassunto nel video sottostante. In sintesi si prende una chiavetta da almeno 8 Giga, si apre Utility Disco, si formatta la chiavetta e poi si ripristina sulla stessa chiavetta il .dmg del sistema operativo



A questo punto ho fatto partire la macchina tenendo premuto il tasto Option (Alt) e selezionando la chiavetta come disco di avvio. In tutte le prove effettuate, dopo un po' di pensatoio da parte dell'installer, viene sempre generato questo errore. Ho provato a rimuovere la partizione bootcamp, provato a formattare tutto il disco ... niente da fare



Frugando per forum ho trovato l'indicazione di formattare la PRAM prima di tentare l'installazione. A questo punto ho proceduto accendendo il calcolatore e premendo subito la combinazione Option+Command+P+R, il Mac fa Boing e poi fa il reboot. A questo punto ho fatto ripartire l'installazione da Usb Key e tutto e' terminato in modo corretto


giovedì 12 settembre 2013

Emulatori MAC Old World

Per ricorda un po' i vecchi tempi un po' di giochi con l'emulatore per computer Apple della serie 68000 e PowerPC.
Per motivi legali per poter far funzionare l'emulatore (visto che deve essere utilizzato il file ROM) si deve possedere il calcolatore originale ma vista la mia collezione di Apple che parte dal 512K e finisce ad un MacMini G4 non credo che ci siano problemi



L'emulatore piu' completo da usare e' Basilisk che, su Debian, si installa semplicemente con il comando

apt-get install basilisk2

a questo punto si devono inserire i file ROM (che si scaricano in modo piu' o meno legale da Internet o, avendo l'hardware funzionante, possono essere estratti direttamente). Basilisk gestisce ROM fino ai modelli Quadra

Successivamente si deve avere a disposizione il sistema operativo. Fino a qualche tempo fa Apple metteva a disposizione in download gratuito i System da 6 fino a 7.5.5. (attualmente la pagina non funziona piu' ma qualche anno fa mi ero salvato le immagini dei dischetti)...sempre su Internet si trovano le immagini dei System 8 e 9 ma, essendo tuttora coperti da licenza, si deve aver comprato la licenza per poterli usare

A questo punto si e' pronti. Lanciando il comando BasiliskII (attenzione alla maiuscola iniziale) compare la GUI di configurazione

Per il monitor si puo' scegliere fino a 1024x768 ma i primi monitor di Mac erano 512x342.
Per la memoria e' necessario settare almeno 12 Mb per System 8
Per la Rom si deve settare quella disponibile sotto Memory/Misc
Nei Volumes si deve creare un disco vuoto (diciamo di 20 Mb perche' i primi Mac avevano queso taglio di disco fisso) e l'immagine del System
Pronti per lo Start


Una volta avviato compare prima l'Happy Mac, seguito dalla richiesta di formattazione del disco fisso..si puo' procedere. Terminata questa fase si conclude quindi con l'installazione del System






Terminata l'installazione si puo' fare lo shutdown ed eliminare il Volume dell'immagine del System in modo da effettuare il boot dal disco fisso

Attenzione: non sono riuscito a far partire l'emulatore con il display a colori ma e' un mio difetto dato che il software permette di farlo (la GUI sotto Windows presente questa opzione che non e' presente nella versione nei repository Debian)

Come emulatore esiste anche Mini VMac che pero' non e' disponibile nei repository Debian e che e' indirizzato all'emulazione dei modelli piu' vecchi del tipo 68000 (niente PPC) in particolare di un Mac Plus 4 Mb . Si puo' scaricare direttamente il file eseguibile da questo link.
Per funzionare il programma ha bisogno di una Rom che deve essere denominata come vMac.ROM e che deve risiedere nella stessa directory dell'eseguibile.

Una volta avviato il programma si presenta la schermata con l'Happy Mac e poi l'icona del Floppy con il punto interrogativo. Si deve quindi con il drag&drop trascinare sulla finestra dell'emulatore il file immagine del System e quello del disco fisso vuoto (si trovano delle immagini di vario taglio nel file blank.zip



martedì 27 agosto 2013

Sostituzione batteria tampone Mac Mini G4

Dopo un po' di tempo il mio vetusto (ma sempre bellissimo Mac Mini G4) ha deciso che la batteria tampone dell'orologio era finita.
La sostituzione e' un esercizio di forza bruta e coraggio
Per prima cosa, rovesciando il Mini, si inserisce una spatola (una spatola per il gesso e' perfetta)  nella fessura della base (da evitare il lato posteriore e quello anteriore) e si fa forza fino a far scattare le mollette.
Si procede quindi sul lato anteriore e sull'altro lato


Giunti qui si devono svitare tre viti (cacciavite da orologiaio magnetizzato consigliato) per rimuovere l'unita' ottica e l'hard disk (attenzione: per i modelli con bluetooth e wifi si devono staccare dei cavi), un po' di attenzione al filo del pulsante di accensione nella parte posteriore lato destro


la parte superiore ed inferiore sono collegate da un connettore a pettine sul retro. Sollevare con delicatezza

Si arriva quindi alla batteria CR 2032. Per toglierla il movimento deve essere prima verso il basso e poi verso l'esterno



venerdì 28 giugno 2013

USB Ethernet Dongle Apple A1277 su Debian

Recentemente mi e' stato presato l'adattatore Ethernet USB A1277 della Apple e ero curioso di vedere come avrebbe reagito la mia Debian Box


Una volta inserito nella porta USB il log ha mostrato quanto segue
-----------------------
Jun 27 23:18:27 debian kernel: [  426.872207] usb 1-3: new high-speed USB device number 5 using ehci_hcd
Jun 27 23:18:27 debian kernel: [  427.021199] usb 1-3: New USB device found, idVendor=05ac, idProduct=1402
Jun 27 23:18:27 debian kernel: [  427.021213] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Jun 27 23:18:27 debian kernel: [  427.021224] usb 1-3: Product: Apple USB Ethernet Adapter
Jun 27 23:18:27 debian kernel: [  427.021233] usb 1-3: Manufacturer: Apple Inc.      
Jun 27 23:18:27 debian kernel: [  427.021241] usb 1-3: SerialNumber: 019F66
Jun 27 23:18:27 debian mtp-probe: checking bus 1, device 5: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-3"
Jun 27 23:18:27 debian mtp-probe: bus: 1, device: 5 was not an MTP device
Jun 27 23:18:27 debian kernel: [  427.479994] asix 1-3:1.0: eth1: register 'asix' at usb-0000:00:1d.7-3, ASIX AX88772 USB 2.0 Ethernet, 00:1f:5b:ff:27:2e
Jun 27 23:18:27 debian kernel: [  427.480945] usbcore: registered new interface driver asix
Jun 27 23:18:28 debian kernel: [  428.407986] ADDRCONF(NETDEV_UP): eth1: link is not ready
-----------------------

La periferica ha quindi iniziato a funzionare perfettamente senza nient'altro da fare (Debian Wheezy)

Debugger integrato ESP32S3

Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede  nell'ID USB della porta Jtag. Nel modulo...