Visualizzazione dei risultati da 1 a 10 su 109

Hybrid View

  1. #1
    Quote Originariamente inviata da signoredeltempo Visualizza il messaggio
    Ma quanto è potente l'ILP (Instruction-Level Parallelism)? Cioè, l'accumulazione in una variabile è più veloce (3x) se fatta per somme parziali perché permette alla CPU di eseguire le addizioni in parallelo, cosa non possibile senza le variabli ausiliarie. Questo dimostra quanto sia difficile al giorno d'oggi ottenere il massimo throughput.
    Era uno dei motivi per cui pensavo di imparare qualcosina di SSE e compari, anche se anche i compilatori ci stanno arrivando (ogni tanto vedo del codice generato da gcc recenti con vettorizzazione automatica che fa paura... certo, fino a qualche tempo fa ogni tanto faceva anche delle cagate apocalittiche ).
    Che ne pensate di Rust?
    L'ho guardato un po' di tempo fa, secondo me è un passo nella direzione sbagliata. Mi sembra che per rincorrere un ideale di gestione di lifetime "garantito corretto" ma senza ricorrere a sistemi di garbage collection stiano inserendo una serie di complicazioni e sovrastrutture assurde a livello di type system e di uso concreto del linguaggio... mi sembra una visione troppo "da vicino" del problema dell'ownership (per cui si "istituzionalizzano" dentro al linguaggio certe pratiche), che non considera che uno quando scrive codice non è che vuole una sintassi più bella per gestire la memoria, vuole semplicemente dimenticarsi di tutte queste menate e occuparsi del problema vero su cui sta lavorando.
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    È quello che ti da potenza se lo usi bene, ma ti da di quelle smazzate sennò. Pensa quanto sono diventate imprevedibili le CPU di oggi per sfruttare l'ILP: pipeline profonde, branch prediction, esecuzione ahead of time, ...
    Tutte belle cose che ti danno potenza quando ci indovinano, ma se c'è qualcosa che gli fa un ' dispetto' è una mazzata. Diventa sempre più difficile prevede le tempistiche.

    Le istruzioni SIMD sono un discorso affine ma non direttamente collegato.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Era uno dei motivi per cui pensavo di imparare qualcosina di SSE e compari, anche se anche i compilatori ci stanno arrivando (ogni tanto vedo del codice generato da gcc recenti con vettorizzazione automatica che fa paura... certo, fino a qualche tempo fa ogni tanto faceva anche delle cagate apocalittiche ).
    Il discorso è che un compilatore è uno strumento con potenzialità limitate. Molto limitate. Nell'esempio che ho prima fatto, nessun compilatore è in grado di ottimizzarlo (forse alcune direttive specifiche potrebbero aiutarlo) perché, per quanto penso, si tratta comunque di qualcosa dipendente da architettura ad architettura.
    Infatti ci sono vere e proprie strategie per sfruttare la potenza computazionale messa a disposizione (e.g. Data-Oriented Design), aiutando dunque compilatore e processore.

    Alle SSE ho dato anche io uno sguardo: alla fine non c'è nulla di complicato, se non fosse per la nomenclatura. Poi essendo il binding in C, ogni operazione ha una sua funzione che quindi rende meno naturale l'interazione (ed in fatti pensavo a sviluppare delle classi value-like per i vari tipi, ma serve comunque una certa preparazione). Altra cosa articolata potresti vederla quando devi ristrutturare il codice (cicli fondamentalmente) per poterne fare uso, tanto che i vectorizer scappano se trovano una certa forma di un ciclo.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.