2
は、私のように文字列を宣言することができます。MPI_SendはどのようにMPI_Characterで実装されていますか? FORTRANで
character*80 mystring
、その後として送信:
またcall MPI_Send(mystring,len(mystring),MPI_CHARACTER,...,ierr)
、私は(文字の配列として行にはるかに私の文字列を宣言することができ物事は伝統的にCで行われている方法)
character mystring(80)
で、次いでとして送信:
call MPI_Send(mystring,80,MPI_CHARACTER,...,ierr)
私の理解では、これら2つの呼び出しは、C関数を呼び出すときに異なるインターフェースを持つことになります。 (前者は、文字列の長さを保持する値によって追加のパラメータを渡すことによってコンパイラによって実装されることが多いが、後者はそのパラメータを渡さない)。 MPI実装(通常C言語で書かれています)はどのように違いを知っていますか?
しかし、これはMPI_INTEGER、MPI_REALなどとどのように機能しますか?前者の場合、コンパイラは余分な長さの引数を送りますが、データ型が 'integer'、' real'、 'double precision'の場合、コンパイラは余分な引数を付加しません。同じルーチンを呼び出しているので、ここに問題があるようです... – mgilson
'文字*(*)'と同じですが、文字列の長さは追加されません。 – Anycorn