Ini type map
adalah konsep yang penting tetapi membingungkan dalam MPI. Saya ingin menampilkan atau mencetak peta tipe secara rutin untuk saya.
Misalnya (diambil dari standar MPI-3),
MPI_TYPE_CREATE_RESIZED(MPI_INT, -3, 9, type1)
menghasilkan peta tipe
{(lb_marker, -3), (int, 0), (ub_marker, 6)}.
Gunakan jenis itu lagi:
MPI_TYPE_CONTIGUOUS(2, type1, type2)
dan tipemapnya adalah
{(lb_marker, -3), (int, 0), (int,9), (ub_marker, 15)}
Saya ingin cara untuk menampilkan peta ketik itu secara otomatis.
Pasti bisa digunakan MPI_Type_get_contents
dan MPI_Type_get_envelope
dan secara rekursif turun sampai mencapai tipe bawaan. Ini agak menyakitkan dan saya akan berpikir 20 tahun di beberapa alat akan ada untuk melakukan ini untuk saya.
Beberapa alat yang menjanjikan, tetapi tidak cukup berfungsi:
Saya telah menemukan MPImap dari ~ 2001 di sini . Pertama, perlu diperbarui untuk Tcl / TK modern, ditambal untuk mengatasi beberapa kesalahan memori dan setelah Anda melakukannya; Anda mendapatkan GUI yang tidak responsif. Sebaliknya, saya mencari perpustakaan / rutinitas yang dapat saya hubungi saat menjalankan.
MPIDU_Datatype_deubg
adalah rutin tipe-dumping internal spesifik MPICH. Itu tidak menampilkan peta tipe (itu tidak menampilkan representasi dataloop, tutup lagi)Pernah ada debugger bernama XMPI yang mencantumkan di antara fitur-fiturnya kemampuan untuk menampilkan peta tipe MPI. Debugger ini tampaknya khusus LAM-MPI dan tidak menggunakan get_contents / get_envelope.
MPI_Datatype
, Anda mencari fungsi yang mengembalikan string bentuk{(type, displacement), (type, displacement), ..}
yang menggambarkan struktur tipe data tersebut?Jawaban:
Seperti yang dikatakan Rob Latham , tidak ada solusi bagus yang sudah ada sebelumnya. Dengan bantuan tautan yang diberikan oleh tim saya membuat fungsi ini tersedia di Github . Saya mengambil contoh Anda untuk tes + resize yang berdekatan (di sini ) dan hasilnya adalah
Dengan fungsi ini Anda hanya perlu melakukannya
printMapDatatype(mydatatype)
. Saya harap ini yang Anda cari.Inilah fungsinya, untuk:
sumber