Il termine divergenza di thread viene utilizzato in CUDA; dal mio punto di vista è una situazione in cui diversi thread sono assegnati a compiti diversi e questo si traduce in un grande successo di prestazioni.Divergenza tra thread di apertura?
Mi chiedevo, c'è una penalità simile per fare questo in openmp? Ad esempio, supponiamo di avere un processore 6 core e un programma con 6 thread. Se ho un condizionale che fa eseguire a 3 thread un determinato task, e quindi gli altri tre thread eseguono un'attività completamente diversa, ci sarà un grande successo nelle prestazioni? Immagino che in sostanza sia una specie di uso di openmp per fare MIMD.
Fondamentalmente, sto scrivendo un programma con openmp e CUDA. Voglio due thread per eseguire un kernel CUDA mentre gli altri thread lasciati eseguono il codice C. Grazie.
Solo curioso, come si fa a fare questo in OpenMP? So che hai già risposto alla tua domanda, ma sarebbe bello vedere un pezzo di codice. –
Questo è off-topic, ma prima di rendere il tuo codice host eccessivamente complicato, potresti non aver bisogno di più di un thread della CPU per CUDA - con CUDA 4.0 e successive la programmazione multi-GPU può essere eseguita da un singolo thread host, quindi a meno hai del lavoro parallelo da fare sul lato host, più thread potrebbero non aggiungere altro che complessità. Se si ha del lavoro parallelo sulla CPU, si può usare un thread della CPU per CUDA, e il resto per fare funzionare la CPU in parallelo. – harrism