Torna indietro   Hardware Upgrade Forum > Mondo Apple > Apple - Software e macOS

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-05-2011, 21:10   #1
ChFl
Member
 
L'Avatar di ChFl
 
Iscritto dal: Apr 2011
Città: The Big Prickly Pear: Cagliari
Messaggi: 162
Usare entrambi i core nell'esecuzione programmi

Salve,
Possiedo un mac con core 2 duo, e ho notato che eseguendo banali programmi in C il processore lavora massimo al 50% (fonte: istat). Parlando con un mio collega ho scoperto che l'entità metafisica che esegue il programma, fa lavorare solo un core.
Mi diceva che lui su linux è riuscito a usarli entrambi "ricompilando il kernel".

Esiste una cosa del genere anche per mac?
Grazie in anticipo.
ChFl è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 21:16   #2
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13019
Per la verità, a partire dalla versione 10.6 di OS X, il kernel è predisposto per la gestione del multithreading attraverso un dispatcher. Forse dovresti scrivere il codice in Objective C, alias Cocoa.
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 11:43   #3
M@n
Senior Member
 
L'Avatar di M@n
 
Iscritto dal: Apr 2006
Città: Crema
Messaggi: 4317
secondo me i programmi devono essere (ri)scritti multithread (o come cavolo si scrive)
__________________
If you want blood.... you've got it!
NEMMENO IL FATO LI VINSE: Bacigalupo Ballarin Maroso Grezar Rigamonti Castigliano Menti Loik Gabetto Mazzola Ossola
La morale del Mac
M@n è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 12:21   #4
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
Per la verità, a partire dalla versione 10.6 di OS X, il kernel è predisposto per la gestione del multithreading attraverso un dispatcher. Forse dovresti scrivere il codice in Objective C, alias Cocoa.
immagino che la gestione multithreading e multiprocesso arrivi da ben prima di mac so x 10.6... direi che arriva direttamente dai sistemi timesharing e multiutente

e spero che anche il supporto multicore arrivi prima di snow leopard.

ovviamente per sfruttare più core il software deve essere multithread o multiprocesso. Lo scheduling è fatto dal s.o. in modo assolutamente trasparente
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 14:41   #5
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13019
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
immagino che la gestione multithreading e multiprocesso arrivi da ben prima di mac so x 10.6... direi che arriva direttamente dai sistemi timesharing e multiutente
Quello a cui fai riferimento è il multitasking ( gestire più processi/applicazioni contemporaneamente ) anche su singolo core di calcolo.

Il multithreading ( distribuire più processi di più applicazioni su più core/CPU ) è supportato, a livello di processi per singola applicazione, da OS X 10.4 Tiger, o OS X 10.3, grazie al supporto di librerie apposite che gestivano il dispatching dei processi di quella applicazione. Stessa cosa accadeva con OS X 10.5 Leopard.

Con OS X 10.6 è stato introdotto in maniera nativa, a livello di kernel, il dispatching dei processi attraverso GCD ( Grand Central Dispatch ) e la ricompilazione di quasi tutti i componenti dell'OS in Cocoa 64. Inoltre GCD è capace di riconoscere anche i core " virtuali " delle Cpu Intel con tecnologia " HT ".
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 15:38   #6
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
Quello a cui fai riferimento è il multitasking ( gestire più processi/applicazioni contemporaneamente ) anche su singolo core di calcolo.

Il multithreading ( distribuire più processi di più applicazioni su più core/CPU ) è supportato, a livello di processi per singola applicazione, da OS X 10.4 Tiger, o OS X 10.3, grazie al supporto di librerie apposite che gestivano il dispatching dei processi di quella applicazione. Stessa cosa accadeva con OS X 10.5 Leopard.

Con OS X 10.6 è stato introdotto in maniera nativa, a livello di kernel, il dispatching dei processi attraverso GCD ( Grand Central Dispatch ) e la ricompilazione di quasi tutti i componenti dell'OS in Cocoa 64. Inoltre GCD è capace di riconoscere anche i core " virtuali " delle Cpu Intel con tecnologia " HT ".
scusami, ma il multithreading (a livello di s.o., non di CPU) è la possibilità di avere più unità di esecuzione per un singolo processo. Non c'entra con la gestione di più pocessori o di più core. Tant'è vero che posso tranquillamente eseguire un'applicazione multithread su un sistema mono core. Semplicemente non potrò avere parallelismo vero e proprio.

GCD è una semplificazione e un'ottimizzazione della gestione multicore, ma il supporto, come tu stesso affermi, esisteva già prima di SL.

Ora, se il proprietario, quando parla di banali programmi C, cerca di eseguire codice non parallelizzabile su più core, questo è semplicemente impossibile.

Piuttosto, se scrivo un software che forka sè stesso, mi aspetto che il s.o. distribuisca, se opportuno, i vari processi sui vari core. Anche se non sono su SL. Ti prego di correggermi se sbaglio, perché non conosco gli internals di OSX né le versioni prima di SL.

Infine, stai dicendo che prima di SL lo scheduler del kernel non era in grado di assegnare i vari thread di uno stesso processo a core diversi? Spero di no...
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 16:49   #7
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13019
Quote:
Originariamente inviato da mad_hhatter Guarda i messaggi
scusami, ma il multithreading (a livello di s.o., non di CPU) è la possibilità di avere più unità di esecuzione per un singolo processo. Non c'entra con la gestione di più pocessori o di più core. Tant'è vero che posso tranquillamente eseguire un'applicazione multithread su un sistema mono core. Semplicemente non potrò avere parallelismo vero e proprio.

GCD è una semplificazione e un'ottimizzazione della gestione multicore, ma il supporto, come tu stesso affermi, esisteva già prima di SL.

Ora, se il proprietario, quando parla di banali programmi C, cerca di eseguire codice non parallelizzabile su più core, questo è semplicemente impossibile.

Piuttosto, se scrivo un software che forka sè stesso, mi aspetto che il s.o. distribuisca, se opportuno, i vari processi sui vari core. Anche se non sono su SL. Ti prego di correggermi se sbaglio, perché non conosco gli internals di OSX né le versioni prima di SL.

Infine, stai dicendo che prima di SL lo scheduler del kernel non era in grado di assegnare i vari thread di uno stesso processo a core diversi? Spero di no...
La capacità di un OS di svolgere più thread per processo , si chiama appunto multitasking. Il multitasking, grazie al suo scheduler e dispatcher funziona tranquillamente anche su Cpu single core, usando tecniche con o senza prelazione ( cooperative/preemptive multitasking ) a seconda di chi gestisce il " context switch ".

Il multithreading è la capacità di un processore di gestire più thread per processo, condividendo lo stesso spazio d'indirizzamento, la stessa cache e lo stesso buffer lookaside. Può ed è stato implementato anche su Cpu single core ( Pentium 4 HT ); i processori multicore ricalcano questo schema di lavoro, spalmandolo su più unità fisiche di calcolo. Il multitrheading per funzionare correttamente in maniera efficiente deve essere supportato a livello software attraverso A) la scrittura di codice specificatamente sviluppato allo scopo, B) un sistema operativo che sia capace di gestire lo scheduling dei processi verso la Cpu.

Fatta questa distinzione basilare, venendo ad OS X e alle mie precedenti risposte, ti rispondo che stiamo dicendo la stessa cosa, ma in maniera diversa.
Ovviamente il supporto al multithreading ( livello di kernel, su più core ) esiste da parecchio prima di Snow Leopard, ma era limitato a come il codice era scritto dallo sviluppatore.
Con GCD Apple ha esteso e migliorato la gestione dei threads delegandone la gestione e la sincronizzazione all'OS e non al singolo programma. Ciò ha permesso un notevole risparmio di istruzioni da usare per la gestione dei processi e una semplificazione del lavoro degli sviluppatori che dovranno solamente decidere quali parti del loro codice saranno eseguite in parallelo ( blocchi di thread pool pattern ).

Discorsi di ricompilazione del kernel ( ), come paventato da ChFl per ottenere il multithreading, sono completamente sbagliati.
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 17:43   #8
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
La capacità di un OS di svolgere più thread per processo , si chiama appunto multitasking. Il multitasking, grazie al suo scheduler e dispatcher funziona tranquillamente anche su Cpu single core, usando tecniche con o senza prelazione ( cooperative/preemptive multitasking ) a seconda di chi gestisce il " context switch ".

Il multithreading è la capacità di un processore di gestire più thread per processo, condividendo lo stesso spazio d'indirizzamento, la stessa cache e lo stesso buffer lookaside. Può ed è stato implementato anche su Cpu single core ( Pentium 4 HT ); i processori multicore ricalcano questo schema di lavoro, spalmandolo su più unità fisiche di calcolo. Il multitrheading per funzionare correttamente in maniera efficiente deve essere supportato a livello software attraverso A) la scrittura di codice specificatamente sviluppato allo scopo, B) un sistema operativo che sia capace di gestire lo scheduling dei processi verso la Cpu.

Fatta questa distinzione basilare, venendo ad OS X e alle mie precedenti risposte, ti rispondo che stiamo dicendo la stessa cosa, ma in maniera diversa.
Ovviamente il supporto al multithreading ( livello di kernel, su più core ) esiste da parecchio prima di Snow Leopard, ma era limitato a come il codice era scritto dallo sviluppatore.
Con GCD Apple ha esteso e migliorato la gestione dei threads delegandone la gestione e la sincronizzazione all'OS e non al singolo programma. Ciò ha permesso un notevole risparmio di istruzioni da usare per la gestione dei processi e una semplificazione del lavoro degli sviluppatori che dovranno solamente decidere quali parti del loro codice saranno eseguite in parallelo ( blocchi di thread pool pattern ).

Discorsi di ricompilazione del kernel ( ), come paventato da ChFl per ottenere il multithreading, sono completamente sbagliati.
perdonami se insisto, ma si usa il termine multithreading sia dal punto di vista hardware che software (http://en.wikipedia.org/wiki/Multithreading; "In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system." cfr. http://en.wikipedia.org/wiki/Thread_(computer_science)). Infatti io posso parlare di multithreading anche in ambito di cpu con un solo core logico.

Il multitasking riguarda i processi, il multithreading riguarda i thread di un processo.

Per tutto il resto, siamo d'accordo grazie per le precisazioni
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2011, 12:17   #9
ChFl
Member
 
L'Avatar di ChFl
 
Iscritto dal: Apr 2011
Città: The Big Prickly Pear: Cagliari
Messaggi: 162
Ringrazio tutti per le esaustive risposte!

Preciso: il programma è un po' meno banale di "se ha è 1, allora b è due, se ha è 2 allora b è 1", ma ha il difetto di contenere molte operazioni, dunque è lento in esecuzione. La domanda però non nasce dal non voler aspettare che la macchina se lo macini, ma quasi da una sorta di curiosità.

Credo di aver capito questo: è un po' che OSX supporta quello che cerchi, ma scordatelo per il C99.
E' corretto?
ChFl è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2011, 13:04   #10
AlexSwitch
Senior Member
 
L'Avatar di AlexSwitch
 
Iscritto dal: Aug 2008
Città: Firenze
Messaggi: 13019
No non è corretto..... Il C " liscio " ( diciamo così ) può essere usato per scrivere un programma " multithread ", ma dovrai essere tu stesso ad inserire e gestire le chiamate verso lo scheduler e il dispatcher di OS X. Ciò significa che dovrai preventivamente progettare la struttura del codice in base ai processi e ai thread che il tuo programma richiede e che andranno parallelizzati.
Con Grand Central Dispatch tutto questo lavoro ti viene risparmiato, visto che con pochissime istruzioni ( 15 ), sarai libero di scegliere quale porzione del tuo codice andrà in multithreading e con quale tipo di priorità. Tutto il resto viene gestito in automatico da OS X.
Apple, sotto licenza Apache, ha rilasciato il sorgente del set completo di istruzioni GCD in una libreria, a cui possono puntare i linguaggi C, C++ e Objective-C.
__________________
Mac Mini M2 Pro; Apple Studio Display; Logitech MX Keys for Mac; MBA 13" M3; iPod Touch 1st Gen. 8 Gb; iPhone 14 Pro; iPad Air 2020 WiFi 64 Gb, Apple Watch 8...
AlexSwitch è offline   Rispondi citando il messaggio o parte di esso
Old 27-05-2011, 12:10   #11
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da AlexSwitch Guarda i messaggi
No non è corretto..... Il C " liscio " ( diciamo così ) può essere usato per scrivere un programma " multithread ", ma dovrai essere tu stesso ad inserire e gestire le chiamate verso lo scheduler e il dispatcher di OS X. Ciò significa che dovrai preventivamente progettare la struttura del codice in base ai processi e ai thread che il tuo programma richiede e che andranno parallelizzati.
Con Grand Central Dispatch tutto questo lavoro ti viene risparmiato, visto che con pochissime istruzioni ( 15 ), sarai libero di scegliere quale porzione del tuo codice andrà in multithreading e con quale tipo di priorità. Tutto il resto viene gestito in automatico da OS X.
Apple, sotto licenza Apache, ha rilasciato il sorgente del set completo di istruzioni GCD in una libreria, a cui possono puntare i linguaggi C, C++ e Objective-C.
io onestamente non capisco perché non possa semplicemente usare la libreria pthread e usare il multithreading preempitive in modo che sia lo scheduler ad arrangiarsi a mandare i thread in esecuzione. Armeggiare con scheduler e dispatcher non seve solo nel caso in cui si voglia implementare un multithreading cooperativo?
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Zscaler Threat Report 2026: l'adozione d...
Claude AI minaccia omicidi e ricatti qua...
Dentro la gara: a Milano Cortina 2026 i ...
Samsung Display presenta QD-OLED Penta T...
KONAMI torna con "Silent Hill: Town...
Rende il citofono smart a 44,99€: Ring I...
ThunderX3 XTC, la sedia da ufficio che s...
Mercy, Mission Impossible, Aronofsky: il...
Project Windless: il nuovo action in esc...
Saros: mostrato il gameplay del gioco de...
God of War: Sons of Sparta annunciato e ...
John Wick torna in un nuovo videogioco a...
MADE chiude il 2025 con 59 partner e 250...
007 First Light: allo State of Play un n...
Gli iPhone su Amazon costano meno che su...
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:27.


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