Dans cette partie du code:
@everywhere function Jacobi_blockwise_parallel_one_time_step(A,x,y,k,threshold)
if k <= threshold
Jacobi_serial_one_block_one_time_step(A,x,y,k)
else
k1 = floor(Int64, k/2)
k2 = k - k1
if (k1 != k2) error("This case is not supported yet") end
lrefs = [@spawn Jacobi_blockwise_parallel_one_time_step(A,x,y,k1,threshold),
@spawn Jacobi_blockwise_parallel_one_time_step(A,x+k1,y,k1,threshold),
@spawn Jacobi_blockwise_parallel_one_time_step(A,x,y+k1,k1,threshold),
@spawn Jacobi_blockwise_parallel_one_time_step(A,x+k1,y+k1,k1,threshold)];
pmap(fetch, lrefs)
end
end
Lorsque vous appelez la première fois avec k = N-2 (ie N = 2048 ce qui déclenche l'erreur pour moi), k = 1023, et lorsque vous arrivez aux instructions 'spawn', dans le deuxième appel 'k' devient 511 et k2 devient 512, donc cette erreur est déclenchée.
Fait intéressant, l'erreur n'apparaît pas si vous exécutez sans ajouter d'autres processus de travail en premier. On peut supposer que la macro @spawn se comporte différemment/de façon inattendue quand il n'y a pas de travailleurs définis, je ne suis pas sûr. Quoi qu'il en soit, je ne pense pas que le bit lrefs
fait ce que l'auteur pense faire (peut-être l'a-t-il fait dans une ancienne version de julia?)
ce n'est pas une erreur de julia. Jacobi_parallel est une fonction définie dans le fichier auquel vous avez lié, et l'erreur particulière est codée en dur. Rechercher la phrase "Cette affaire n'est pas encore prise en charge" dans la page et vous le verrez. (EDIT: bien que, hm, l'erreur n'a pas de sens en termes de calculs impliqués, peut-être qu'il y a une conversion inattendue en float à un certain point) –
quelle version de julia utilisez-vous? Le code semble être pour une version plutôt ancienne (plus il y a des trucs bizarres là-dedans, mais, eh bien) ... après avoir corrigé quelques incompatibilités, le script s'est bien passé pour moi sur la dernière version stable (v0. 5.2). (j'ai changé 'ifloor (k/2)' à 'floor (Int64, k/2)' et 'error (' à 'error (') –
@TasosPapastylianou j'utilise aussi la version 0.5.2, j'ai appliqué ces changements mais il a l'erreur précédente: Ce cas n'est pas encore supporté – Armaa