2017-09-28 4 views
0

Comment récupérer la valeur associée à un pointeur dans Julia?Récupérer la valeur associée au pointeur C dans Julia MPI

Par exemple,

import MPI 

function main() 
    MPI.Init() 

    comm = MPI.COMM_WORLD 
    println("Hello from processor $(MPI.MPI_GET_PROCESSOR_NAME) rank $(MPI.Comm_rank(comm)) of $(MPI.Comm_size(comm))\n") 
    MPI.Barrier(comm) 

    MPI.Finalize() 
end 

main() 

produit la sortie

Hello from processor Ptr{Void} @0x00007fc29b392290 rank 1 of 2 
Hello from processor Ptr{Void} @0x00007f7759d9f290 rank 0 of 2 

y compris les pointeurs bruts plutôt que les noms de processeur.

Répondre

1

Si vous êtes sûr que c'est une chaîne de type C (NUL-fin) codée en UTF-8 (ou ASCII), vous pouvez essayer:

unsafe_string(Ptr{UInt8}(MPI.MPI_GET_PROCESSOR_NAME)) 

Lire la doc (https://docs.julialang.org/en/stable/stdlib/strings/#Base.unsafe_string) et faire attention !

(Cité: « Cette fonction est étiquetée « dangereuse », car il se bloque si p est pas une adresse mémoire valide aux données de la longueur demandée. »)