1) Допустимо, чтобы счетчик был равен нулю.
1a) Законно, что некоторые значения равны нулю в MPI_Gatherv()
(и MPI_Scatterv(),
MPI_Alltoallv () `и друзьях)
2) Стандарт не обязывает указатель быть действительным, если счетчик равен нулю
3) Нулевой размер сообщения - это сообщение, и, как прямое следствие, происходит обмен некоторыми метаданными.MPI_Recv(..., count=0, ...)
возвращается только после того, как сообщение нулевого размера было получено (и, следовательно, отправлено), и это не могло бы произойти, если данные не были отправлены.