@@ -134,13 +134,18 @@ for (mpiname, T) in [
134
134
:FLOAT => Float32
135
135
:DOUBLE => Float64
136
136
:C_FLOAT_COMPLEX => ComplexF32
137
- :C_DOUBLE_COMPLEX => ComplexF64]
137
+ :C_DOUBLE_COMPLEX => ComplexF64
138
+ :C_BOOL => Bool
139
+ ]
138
140
139
141
@eval if @isdefined ($ (Symbol (:MPI_ ,mpiname)))
140
142
const $ mpiname = _Datatype ($ (Symbol (:MPI_ ,mpiname)))
141
143
if ! hasmethod (Datatype, Tuple{Type{$ T}})
142
144
Datatype (:: Type{$T} ) = $ mpiname
143
- push! (mpi_init_hooks, () -> set_attr! ($ mpiname, JULIA_TYPE_PTR_ATTR[], pointer_from_objref ($ T)))
145
+ push! (mpi_init_hooks, () -> begin
146
+ @assert Types. size ($ mpiname) == sizeof ($ T)
147
+ set_attr! ($ mpiname, JULIA_TYPE_PTR_ATTR[], pointer_from_objref ($ T))
148
+ end )
144
149
end
145
150
end
146
151
end
@@ -187,6 +192,16 @@ import MPI: @mpichk, libmpi, _doc_external,
187
192
Datatype, MPI_Datatype, MPI_Aint,
188
193
free
189
194
195
+ # ??
196
+ function size (dt:: Datatype )
197
+ dtsize = Ref {Cint} ()
198
+ @mpichk ccall ((:MPI_Type_size , libmpi), Cint,
199
+ (MPI_Datatype, Ptr{Cint}),
200
+ dt, dtsize)
201
+ return dtsize[]
202
+ end
203
+
204
+
190
205
"""
191
206
lb, extent = MPI.Types.extent(dt::MPI.Datatype)
192
207
0 commit comments