Quindi stavo cercando di ottimizzare un'operazione di array in Julia, ma ho notato che di tanto in tanto ricevevo un errore piuttosto grande sulla mia matrice. Ho anche notato che esisteva la possibilità di scrivere contemporaneamente allo stesso indice di un SharedArray in Julia. Mi stavo chiedendo se Julia può tranquillamente gestirlo. In caso contrario, come posso essere in grado di gestirlo?Le matrici condivise possono gestire le scritture concorrenti in modo sicuro in Julia?
Ecco un esempio di base del mio problema
for a list of arbitrary x,y indexes in array J
j[x,y] += some_value
end
grado di gestire Julia questo caso o, come C, sarà esistono la possibilità di sovrascrivere i dati. Le loro operazioni atomiche a Julia sono compensate da questo?
A quanto pare Julia ha il supporto per il blocco. Fa parte del pacchetto base: https://stackoverflow.com/questions/33778907/how-to-use-lock-in-julia. – Skylion
È vero, anche se tieni a mente che la soluzione è progettata per funzionare anche per il lavoro distribuito su più computer. Se si desidera un blocco per elemento dell'array, ho il sospetto che non sarete soddisfatti della quantità di costi generali della soluzione generale e desidereremo qualcosa di ottimizzato per SharedArrays. – tholy
Data questa informazione, cosa suggeriresti allora? Suppongo che se aspetto che venga rilasciato Julia 0.5, possiamo aggiungere supporto per PThread e usare Atomics a meno che non abbia in mente una soluzione più elegante? Idealmente, sarebbe bello se il codice potesse girare su un sistema distribuito, ma non una necessità. – Skylion