VTK  9.6.20260314
vtkCommunicator.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
22
23#ifndef vtkCommunicator_h
24#define vtkCommunicator_h
25
26#include "vtkObject.h"
27#include "vtkParallelCoreModule.h" // For export macro
28#include "vtkSmartPointer.h" // needed for vtkSmartPointer.
29#include <vector> // needed for std::vector
30
31VTK_ABI_NAMESPACE_BEGIN
32class vtkBoundingBox;
33class vtkCharArray;
34class vtkDataArray;
35class vtkDataObject;
36class vtkDataSet;
37class vtkIdTypeArray;
38class vtkImageData;
41
42class VTKPARALLELCORE_EXPORT vtkCommunicator : public vtkObject
43{
44
45public:
46 vtkTypeMacro(vtkCommunicator, vtkObject);
47 void PrintSelf(ostream& os, vtkIndent indent) override;
48
50
55 virtual void SetNumberOfProcesses(int num);
56 vtkGetMacro(NumberOfProcesses, int);
58
60
63 vtkGetMacro(LocalProcessId, int);
65
77
91
97 {
98 public:
109 virtual void Function(const void* A, void* B, vtkIdType length, int datatype) = 0;
110
115 virtual int Commutative() = 0;
116
117 virtual ~Operation() = default;
118 };
119
125 int Send(vtkDataObject* data, int remoteHandle, int tag);
126
132 int Send(vtkDataArray* data, int remoteHandle, int tag);
133
140 virtual int SendVoidArray(
141 const void* data, vtkIdType length, int type, int remoteHandle, int tag) = 0;
142
144
147 int Send(const int* data, vtkIdType length, int remoteHandle, int tag)
148 {
149 return this->SendVoidArray(data, length, VTK_INT, remoteHandle, tag);
150 }
151 int Send(const unsigned int* data, vtkIdType length, int remoteHandle, int tag)
152 {
153 return this->SendVoidArray(data, length, VTK_INT, remoteHandle, tag);
154 }
155 int Send(const short* data, vtkIdType length, int remoteHandle, int tag)
156 {
157 return this->SendVoidArray(data, length, VTK_SHORT, remoteHandle, tag);
158 }
159 int Send(const unsigned short* data, vtkIdType length, int remoteHandle, int tag)
160 {
161 return this->SendVoidArray(data, length, VTK_UNSIGNED_SHORT, remoteHandle, tag);
162 }
163 int Send(const long* data, vtkIdType length, int remoteHandle, int tag)
164 {
165 return this->SendVoidArray(data, length, VTK_LONG, remoteHandle, tag);
166 }
167 int Send(const unsigned long* data, vtkIdType length, int remoteHandle, int tag)
168 {
169 return this->SendVoidArray(data, length, VTK_UNSIGNED_LONG, remoteHandle, tag);
170 }
171 int Send(const unsigned char* data, vtkIdType length, int remoteHandle, int tag)
172 {
173 return this->SendVoidArray(data, length, VTK_UNSIGNED_CHAR, remoteHandle, tag);
174 }
175 int Send(const char* data, vtkIdType length, int remoteHandle, int tag)
176 {
177 return this->SendVoidArray(data, length, VTK_CHAR, remoteHandle, tag);
178 }
179 int Send(const signed char* data, vtkIdType length, int remoteHandle, int tag)
180 {
181 return this->SendVoidArray(data, length, VTK_SIGNED_CHAR, remoteHandle, tag);
182 }
183 int Send(const float* data, vtkIdType length, int remoteHandle, int tag)
184 {
185 return this->SendVoidArray(data, length, VTK_FLOAT, remoteHandle, tag);
186 }
187 int Send(const double* data, vtkIdType length, int remoteHandle, int tag)
188 {
189 return this->SendVoidArray(data, length, VTK_DOUBLE, remoteHandle, tag);
190 }
191 int Send(const long long* data, vtkIdType length, int remoteHandle, int tag)
192 {
193 return this->SendVoidArray(data, length, VTK_LONG_LONG, remoteHandle, tag);
194 }
195 int Send(const unsigned long long* data, vtkIdType length, int remoteHandle, int tag)
196 {
197 return this->SendVoidArray(data, length, VTK_UNSIGNED_LONG_LONG, remoteHandle, tag);
198 }
199
200
201 int Send(const vtkMultiProcessStream& stream, int remoteId, int tag);
202
207 int Receive(vtkDataObject* data, int remoteHandle, int tag);
208
213 vtkDataObject* ReceiveDataObject(int remoteHandle, int tag);
214
219 int Receive(vtkDataArray* data, int remoteHandle, int tag);
220
231 virtual int ReceiveVoidArray(
232 void* data, vtkIdType maxlength, int type, int remoteHandle, int tag) = 0;
233
235
238 int Receive(int* data, vtkIdType maxlength, int remoteHandle, int tag)
239 {
240 return this->ReceiveVoidArray(data, maxlength, VTK_INT, remoteHandle, tag);
241 }
242 int Receive(unsigned int* data, vtkIdType maxlength, int remoteHandle, int tag)
243 {
244 return this->ReceiveVoidArray(data, maxlength, VTK_INT, remoteHandle, tag);
245 }
246 int Receive(short* data, vtkIdType maxlength, int remoteHandle, int tag)
247 {
248 return this->ReceiveVoidArray(data, maxlength, VTK_SHORT, remoteHandle, tag);
249 }
250 int Receive(unsigned short* data, vtkIdType maxlength, int remoteHandle, int tag)
251 {
252 return this->ReceiveVoidArray(data, maxlength, VTK_UNSIGNED_SHORT, remoteHandle, tag);
253 }
254 int Receive(long* data, vtkIdType maxlength, int remoteHandle, int tag)
255 {
256 return this->ReceiveVoidArray(data, maxlength, VTK_LONG, remoteHandle, tag);
257 }
258 int Receive(unsigned long* data, vtkIdType maxlength, int remoteHandle, int tag)
259 {
260 return this->ReceiveVoidArray(data, maxlength, VTK_UNSIGNED_LONG, remoteHandle, tag);
261 }
262 int Receive(unsigned char* data, vtkIdType maxlength, int remoteHandle, int tag)
263 {
264 return this->ReceiveVoidArray(data, maxlength, VTK_UNSIGNED_CHAR, remoteHandle, tag);
265 }
266 int Receive(char* data, vtkIdType maxlength, int remoteHandle, int tag)
267 {
268 return this->ReceiveVoidArray(data, maxlength, VTK_CHAR, remoteHandle, tag);
269 }
270 int Receive(signed char* data, vtkIdType maxlength, int remoteHandle, int tag)
271 {
272 return this->ReceiveVoidArray(data, maxlength, VTK_SIGNED_CHAR, remoteHandle, tag);
273 }
274 int Receive(float* data, vtkIdType maxlength, int remoteHandle, int tag)
275 {
276 return this->ReceiveVoidArray(data, maxlength, VTK_FLOAT, remoteHandle, tag);
277 }
278 int Receive(double* data, vtkIdType maxlength, int remoteHandle, int tag)
279 {
280 return this->ReceiveVoidArray(data, maxlength, VTK_DOUBLE, remoteHandle, tag);
281 }
282 int Receive(long long* data, vtkIdType maxlength, int remoteHandle, int tag)
283 {
284 return this->ReceiveVoidArray(data, maxlength, VTK_LONG_LONG, remoteHandle, tag);
285 }
286 int Receive(unsigned long long* data, vtkIdType maxlength, int remoteHandle, int tag)
287 {
288 return this->ReceiveVoidArray(data, maxlength, VTK_UNSIGNED_LONG_LONG, remoteHandle, tag);
289 }
290
291
292 int Receive(vtkMultiProcessStream& stream, int remoteId, int tag);
293
295
303 vtkGetMacro(Count, vtkIdType);
305
306 //---------------------- Collective Operations ----------------------
307
311 virtual int AllToAllVVoidArray(const void* sendBuffer, const int* sendCounts,
312 const int* sendOffsets, void* recvBuffer, const int* recvCounts, const int* recvOffsets,
313 int type);
314
319 virtual void Barrier();
320
322
327 int Broadcast(int* data, vtkIdType length, int srcProcessId)
328 {
329 return this->BroadcastVoidArray(data, length, VTK_INT, srcProcessId);
330 }
331 int Broadcast(unsigned int* data, vtkIdType length, int srcProcessId)
332 {
333 return this->BroadcastVoidArray(data, length, VTK_UNSIGNED_INT, srcProcessId);
334 }
335 int Broadcast(short* data, vtkIdType length, int srcProcessId)
336 {
337 return this->BroadcastVoidArray(data, length, VTK_SHORT, srcProcessId);
338 }
339 int Broadcast(unsigned short* data, vtkIdType length, int srcProcessId)
340 {
341 return this->BroadcastVoidArray(data, length, VTK_UNSIGNED_SHORT, srcProcessId);
342 }
343 int Broadcast(long* data, vtkIdType length, int srcProcessId)
344 {
345 return this->BroadcastVoidArray(data, length, VTK_LONG, srcProcessId);
346 }
347 int Broadcast(unsigned long* data, vtkIdType length, int srcProcessId)
348 {
349 return this->BroadcastVoidArray(data, length, VTK_UNSIGNED_LONG, srcProcessId);
350 }
351 int Broadcast(unsigned char* data, vtkIdType length, int srcProcessId)
352 {
353 return this->BroadcastVoidArray(data, length, VTK_UNSIGNED_CHAR, srcProcessId);
354 }
355 int Broadcast(char* data, vtkIdType length, int srcProcessId)
356 {
357 return this->BroadcastVoidArray(data, length, VTK_CHAR, srcProcessId);
358 }
359 int Broadcast(signed char* data, vtkIdType length, int srcProcessId)
360 {
361 return this->BroadcastVoidArray(data, length, VTK_SIGNED_CHAR, srcProcessId);
362 }
363 int Broadcast(float* data, vtkIdType length, int srcProcessId)
364 {
365 return this->BroadcastVoidArray(data, length, VTK_FLOAT, srcProcessId);
366 }
367 int Broadcast(double* data, vtkIdType length, int srcProcessId)
368 {
369 return this->BroadcastVoidArray(data, length, VTK_DOUBLE, srcProcessId);
370 }
371 int Broadcast(long long* data, vtkIdType length, int srcProcessId)
372 {
373 return this->BroadcastVoidArray(data, length, VTK_LONG_LONG, srcProcessId);
374 }
375 int Broadcast(unsigned long long* data, vtkIdType length, int srcProcessId)
376 {
377 return this->BroadcastVoidArray(data, length, VTK_UNSIGNED_LONG_LONG, srcProcessId);
378 }
379 int Broadcast(vtkDataObject* data, int srcProcessId);
380 int Broadcast(vtkDataArray* data, int srcProcessId);
382
383 int Broadcast(vtkMultiProcessStream& stream, int srcProcessId);
384
386
395 int Gather(const int* sendBuffer, int* recvBuffer, vtkIdType length, int destProcessId)
396 {
397 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_INT, destProcessId);
398 }
400 const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length, int destProcessId)
401 {
402 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT, destProcessId);
403 }
404 int Gather(const short* sendBuffer, short* recvBuffer, vtkIdType length, int destProcessId)
405 {
406 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_SHORT, destProcessId);
407 }
408 int Gather(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length,
409 int destProcessId)
410 {
411 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT, destProcessId);
412 }
413 int Gather(const long* sendBuffer, long* recvBuffer, vtkIdType length, int destProcessId)
414 {
415 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_LONG, destProcessId);
416 }
418 const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length, int destProcessId)
419 {
420 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG, destProcessId);
421 }
423 const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length, int destProcessId)
424 {
425 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR, destProcessId);
426 }
427 int Gather(const char* sendBuffer, char* recvBuffer, vtkIdType length, int destProcessId)
428 {
429 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_CHAR, destProcessId);
430 }
432 const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length, int destProcessId)
433 {
434 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR, destProcessId);
435 }
436 int Gather(const float* sendBuffer, float* recvBuffer, vtkIdType length, int destProcessId)
437 {
438 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_FLOAT, destProcessId);
439 }
440 int Gather(const double* sendBuffer, double* recvBuffer, vtkIdType length, int destProcessId)
441 {
442 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_DOUBLE, destProcessId);
443 }
445 const long long* sendBuffer, long long* recvBuffer, vtkIdType length, int destProcessId)
446 {
447 return this->GatherVoidArray(sendBuffer, recvBuffer, length, VTK_LONG_LONG, destProcessId);
448 }
449 int Gather(const unsigned long long* sendBuffer, unsigned long long* recvBuffer, vtkIdType length,
450 int destProcessId)
451 {
452 return this->GatherVoidArray(
453 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG, destProcessId);
454 }
455 int Gather(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, int destProcessId);
457
470 int Gather(vtkDataObject* sendBuffer, std::vector<vtkSmartPointer<vtkDataObject>>& recvBuffer,
471 int destProcessId);
472
482 int Gather(const vtkMultiProcessStream& sendBuffer,
483 std::vector<vtkMultiProcessStream>& recvBuffer, int destProcessId);
484
486
497 int GatherV(const int* sendBuffer, int* recvBuffer, vtkIdType sendLength, vtkIdType* recvLengths,
498 vtkIdType* offsets, int destProcessId)
499 {
500 return this->GatherVVoidArray(
501 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_INT, destProcessId);
502 }
503 int GatherV(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType sendLength,
504 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
505 {
506 return this->GatherVVoidArray(
507 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_INT, destProcessId);
508 }
509 int GatherV(const short* sendBuffer, short* recvBuffer, vtkIdType sendLength,
510 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
511 {
512 return this->GatherVVoidArray(
513 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_SHORT, destProcessId);
514 }
515 int GatherV(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType sendLength,
516 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
517 {
518 return this->GatherVVoidArray(
519 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_SHORT, destProcessId);
520 }
521 int GatherV(const long* sendBuffer, long* recvBuffer, vtkIdType sendLength,
522 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
523 {
524 return this->GatherVVoidArray(
525 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_LONG, destProcessId);
526 }
527 int GatherV(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType sendLength,
528 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
529 {
530 return this->GatherVVoidArray(
531 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_LONG, destProcessId);
532 }
533 int GatherV(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType sendLength,
534 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
535 {
536 return this->GatherVVoidArray(
537 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_CHAR, destProcessId);
538 }
539 int GatherV(const char* sendBuffer, char* recvBuffer, vtkIdType sendLength,
540 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
541 {
542 return this->GatherVVoidArray(
543 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_CHAR, destProcessId);
544 }
545 int GatherV(const signed char* sendBuffer, signed char* recvBuffer, vtkIdType sendLength,
546 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
547 {
548 return this->GatherVVoidArray(
549 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_SIGNED_CHAR, destProcessId);
550 }
551 int GatherV(const float* sendBuffer, float* recvBuffer, vtkIdType sendLength,
552 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
553 {
554 return this->GatherVVoidArray(
555 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_FLOAT, destProcessId);
556 }
557 int GatherV(const double* sendBuffer, double* recvBuffer, vtkIdType sendLength,
558 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
559 {
560 return this->GatherVVoidArray(
561 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_DOUBLE, destProcessId);
562 }
563 int GatherV(const long long* sendBuffer, long long* recvBuffer, vtkIdType sendLength,
564 vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
565 {
566 return this->GatherVVoidArray(
567 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_LONG_LONG, destProcessId);
568 }
569 int GatherV(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
570 vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets, int destProcessId)
571 {
572 return this->GatherVVoidArray(sendBuffer, recvBuffer, sendLength, recvLengths, offsets,
573 VTK_UNSIGNED_LONG_LONG, destProcessId);
574 }
575
577
583 int GatherV(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, vtkIdTypeArray* recvLengths,
584 vtkIdTypeArray* offsets, int destProcessId);
589 int GatherV(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, int destProcessId);
595 int GatherV(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, vtkIdType* recvLengths,
596 vtkIdType* offsets, int destProcessId);
597
599
607 int GatherV(vtkDataObject* sendData, vtkSmartPointer<vtkDataObject>* recvData, int destProcessId);
608
610
617 int Scatter(const int* sendBuffer, int* recvBuffer, vtkIdType length, int srcProcessId)
618 {
619 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_INT, srcProcessId);
620 }
622 const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length, int srcProcessId)
623 {
624 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT, srcProcessId);
625 }
626 int Scatter(const short* sendBuffer, short* recvBuffer, vtkIdType length, int srcProcessId)
627 {
628 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_SHORT, srcProcessId);
629 }
630 int Scatter(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length,
631 int srcProcessId)
632 {
633 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT, srcProcessId);
634 }
635 int Scatter(const long* sendBuffer, long* recvBuffer, vtkIdType length, int srcProcessId)
636 {
637 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_INT, srcProcessId);
638 }
640 const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length, int srcProcessId)
641 {
642 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG, srcProcessId);
643 }
645 const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length, int srcProcessId)
646 {
647 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR, srcProcessId);
648 }
649 int Scatter(const char* sendBuffer, char* recvBuffer, vtkIdType length, int srcProcessId)
650 {
651 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_CHAR, srcProcessId);
652 }
654 const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length, int srcProcessId)
655 {
656 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR, srcProcessId);
657 }
658 int Scatter(const float* sendBuffer, float* recvBuffer, vtkIdType length, int srcProcessId)
659 {
660 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_FLOAT, srcProcessId);
661 }
662 int Scatter(const double* sendBuffer, double* recvBuffer, vtkIdType length, int srcProcessId)
663 {
664 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_DOUBLE, srcProcessId);
665 }
667 const long long* sendBuffer, long long* recvBuffer, vtkIdType length, int srcProcessId)
668 {
669 return this->ScatterVoidArray(sendBuffer, recvBuffer, length, VTK_LONG_LONG, srcProcessId);
670 }
671 int Scatter(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
672 vtkIdType length, int srcProcessId)
673 {
674 return this->ScatterVoidArray(
675 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG, srcProcessId);
676 }
677 int Scatter(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, int srcProcessId);
679
681
688 int ScatterV(const int* sendBuffer, int* recvBuffer, vtkIdType* sendLengths, vtkIdType* offsets,
689 vtkIdType recvLength, int srcProcessId)
690 {
691 return this->ScatterVVoidArray(
692 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_INT, srcProcessId);
693 }
694 int ScatterV(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType* sendLengths,
695 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
696 {
697 return this->ScatterVVoidArray(
698 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_UNSIGNED_INT, srcProcessId);
699 }
700 int ScatterV(const short* sendBuffer, short* recvBuffer, vtkIdType* sendLengths,
701 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
702 {
703 return this->ScatterVVoidArray(
704 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_SHORT, srcProcessId);
705 }
706 int ScatterV(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType* sendLengths,
707 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
708 {
709 return this->ScatterVVoidArray(
710 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_UNSIGNED_SHORT, srcProcessId);
711 }
712 int ScatterV(const long* sendBuffer, long* recvBuffer, vtkIdType* sendLengths, vtkIdType* offsets,
713 vtkIdType recvLength, int srcProcessId)
714 {
715 return this->ScatterVVoidArray(
716 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_LONG, srcProcessId);
717 }
718 int ScatterV(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType* sendLengths,
719 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
720 {
721 return this->ScatterVVoidArray(
722 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_UNSIGNED_LONG, srcProcessId);
723 }
724 int ScatterV(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType* sendLengths,
725 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
726 {
727 return this->ScatterVVoidArray(
728 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_UNSIGNED_CHAR, srcProcessId);
729 }
730 int ScatterV(const char* sendBuffer, char* recvBuffer, vtkIdType* sendLengths, vtkIdType* offsets,
731 vtkIdType recvLength, int srcProcessId)
732 {
733 return this->ScatterVVoidArray(
734 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_CHAR, srcProcessId);
735 }
736 int ScatterV(const signed char* sendBuffer, signed char* recvBuffer, vtkIdType* sendLengths,
737 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
738 {
739 return this->ScatterVVoidArray(
740 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_SIGNED_CHAR, srcProcessId);
741 }
742 int ScatterV(const float* sendBuffer, float* recvBuffer, vtkIdType* sendLengths,
743 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
744 {
745 return this->ScatterVVoidArray(
746 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_FLOAT, srcProcessId);
747 }
748 int ScatterV(const double* sendBuffer, double* recvBuffer, vtkIdType* sendLengths,
749 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
750 {
751 return this->ScatterVVoidArray(
752 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_DOUBLE, srcProcessId);
753 }
754 int ScatterV(const long long* sendBuffer, long long* recvBuffer, vtkIdType* sendLengths,
755 vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
756 {
757 return this->ScatterVVoidArray(
758 sendBuffer, recvBuffer, sendLengths, offsets, recvLength, VTK_LONG_LONG, srcProcessId);
759 }
760 int ScatterV(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
761 vtkIdType* sendLengths, vtkIdType* offsets, vtkIdType recvLength, int srcProcessId)
762 {
763 return this->ScatterVVoidArray(sendBuffer, recvBuffer, sendLengths, offsets, recvLength,
764 VTK_UNSIGNED_LONG_LONG, srcProcessId);
765 }
766
767
769
772 int AllGather(const int* sendBuffer, int* recvBuffer, vtkIdType length)
773 {
774 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_INT);
775 }
776 int AllGather(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length)
777 {
778 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT);
779 }
780 int AllGather(const short* sendBuffer, short* recvBuffer, vtkIdType length)
781 {
782 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_SHORT);
783 }
784 int AllGather(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length)
785 {
786 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT);
787 }
788 int AllGather(const long* sendBuffer, long* recvBuffer, vtkIdType length)
789 {
790 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_LONG);
791 }
792 int AllGather(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length)
793 {
794 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG);
795 }
796 int AllGather(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length)
797 {
798 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR);
799 }
800 int AllGather(const char* sendBuffer, char* recvBuffer, vtkIdType length)
801 {
802 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_CHAR);
803 }
804 int AllGather(const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length)
805 {
806 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR);
807 }
808 int AllGather(const float* sendBuffer, float* recvBuffer, vtkIdType length)
809 {
810 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_FLOAT);
811 }
812 int AllGather(const double* sendBuffer, double* recvBuffer, vtkIdType length)
813 {
814 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_DOUBLE);
815 }
816 int AllGather(const long long* sendBuffer, long long* recvBuffer, vtkIdType length)
817 {
818 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_LONG_LONG);
819 }
821 const unsigned long long* sendBuffer, unsigned long long* recvBuffer, vtkIdType length)
822 {
823 return this->AllGatherVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG);
824 }
825 int AllGather(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer);
827 const vtkMultiProcessStream& sendBuffer, std::vector<vtkMultiProcessStream>& recvBuffer);
829
840 int AllGather(vtkDataObject* sendBuffer, std::vector<vtkSmartPointer<vtkDataObject>>& recvBuffer);
841
843
846 int AllGatherV(const int* sendBuffer, int* recvBuffer, vtkIdType sendLength,
847 vtkIdType* recvLengths, vtkIdType* offsets)
848 {
849 return this->AllGatherVVoidArray(
850 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_INT);
851 }
852 int AllGatherV(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType sendLength,
853 vtkIdType* recvLengths, vtkIdType* offsets)
854 {
855 return this->AllGatherVVoidArray(
856 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_INT);
857 }
858 int AllGatherV(const short* sendBuffer, short* recvBuffer, vtkIdType sendLength,
859 vtkIdType* recvLengths, vtkIdType* offsets)
860 {
861 return this->AllGatherVVoidArray(
862 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_SHORT);
863 }
864 int AllGatherV(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType sendLength,
865 vtkIdType* recvLengths, vtkIdType* offsets)
866 {
867 return this->AllGatherVVoidArray(
868 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_SHORT);
869 }
870 int AllGatherV(const long* sendBuffer, long* recvBuffer, vtkIdType sendLength,
871 vtkIdType* recvLengths, vtkIdType* offsets)
872 {
873 return this->AllGatherVVoidArray(
874 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_LONG);
875 }
876 int AllGatherV(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType sendLength,
877 vtkIdType* recvLengths, vtkIdType* offsets)
878 {
879 return this->AllGatherVVoidArray(
880 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_LONG);
881 }
882 int AllGatherV(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType sendLength,
883 vtkIdType* recvLengths, vtkIdType* offsets)
884 {
885 return this->AllGatherVVoidArray(
886 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_CHAR);
887 }
888 int AllGatherV(const char* sendBuffer, char* recvBuffer, vtkIdType sendLength,
889 vtkIdType* recvLengths, vtkIdType* offsets)
890 {
891 return this->AllGatherVVoidArray(
892 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_CHAR);
893 }
894 int AllGatherV(const signed char* sendBuffer, signed char* recvBuffer, vtkIdType sendLength,
895 vtkIdType* recvLengths, vtkIdType* offsets)
896 {
897 return this->AllGatherVVoidArray(
898 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_CHAR);
899 }
900 int AllGatherV(const float* sendBuffer, float* recvBuffer, vtkIdType sendLength,
901 vtkIdType* recvLengths, vtkIdType* offsets)
902 {
903 return this->AllGatherVVoidArray(
904 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_FLOAT);
905 }
906 int AllGatherV(const double* sendBuffer, double* recvBuffer, vtkIdType sendLength,
907 vtkIdType* recvLengths, vtkIdType* offsets)
908 {
909 return this->AllGatherVVoidArray(
910 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_DOUBLE);
911 }
912 int AllGatherV(const long long* sendBuffer, long long* recvBuffer, vtkIdType sendLength,
913 vtkIdType* recvLengths, vtkIdType* offsets)
914 {
915 return this->AllGatherVVoidArray(
916 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_LONG_LONG);
917 }
918 int AllGatherV(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
919 vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets)
920 {
921 return this->AllGatherVVoidArray(
922 sendBuffer, recvBuffer, sendLength, recvLengths, offsets, VTK_UNSIGNED_LONG_LONG);
923 }
925 vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, vtkIdType* recvLengths, vtkIdType* offsets);
926 int AllGatherV(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer);
928
930
936 const int* sendBuffer, int* recvBuffer, vtkIdType length, int operation, int destProcessId)
937 {
938 return this->ReduceVoidArray(sendBuffer, recvBuffer, length, VTK_INT, operation, destProcessId);
939 }
940 int Reduce(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length,
941 int operation, int destProcessId)
942 {
943 return this->ReduceVoidArray(
944 sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT, operation, destProcessId);
945 }
947 const short* sendBuffer, short* recvBuffer, vtkIdType length, int operation, int destProcessId)
948 {
949 return this->ReduceVoidArray(
950 sendBuffer, recvBuffer, length, VTK_SHORT, operation, destProcessId);
951 }
952 int Reduce(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length,
953 int operation, int destProcessId)
954 {
955 return this->ReduceVoidArray(
956 sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT, operation, destProcessId);
957 }
959 const long* sendBuffer, long* recvBuffer, vtkIdType length, int operation, int destProcessId)
960 {
961 return this->ReduceVoidArray(
962 sendBuffer, recvBuffer, length, VTK_LONG, operation, destProcessId);
963 }
964 int Reduce(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length,
965 int operation, int destProcessId)
966 {
967 return this->ReduceVoidArray(
968 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG, operation, destProcessId);
969 }
970 int Reduce(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length,
971 int operation, int destProcessId)
972 {
973 return this->ReduceVoidArray(
974 sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR, operation, destProcessId);
975 }
977 const char* sendBuffer, char* recvBuffer, vtkIdType length, int operation, int destProcessId)
978 {
979 return this->ReduceVoidArray(
980 sendBuffer, recvBuffer, length, VTK_CHAR, operation, destProcessId);
981 }
982 int Reduce(const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length,
983 int operation, int destProcessId)
984 {
985 return this->ReduceVoidArray(
986 sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR, operation, destProcessId);
987 }
989 const float* sendBuffer, float* recvBuffer, vtkIdType length, int operation, int destProcessId)
990 {
991 return this->ReduceVoidArray(
992 sendBuffer, recvBuffer, length, VTK_FLOAT, operation, destProcessId);
993 }
994 int Reduce(const double* sendBuffer, double* recvBuffer, vtkIdType length, int operation,
995 int destProcessId)
996 {
997 return this->ReduceVoidArray(
998 sendBuffer, recvBuffer, length, VTK_DOUBLE, operation, destProcessId);
999 }
1000 int Reduce(const long long* sendBuffer, long long* recvBuffer, vtkIdType length, int operation,
1001 int destProcessId)
1002 {
1003 return this->ReduceVoidArray(
1004 sendBuffer, recvBuffer, length, VTK_LONG_LONG, operation, destProcessId);
1005 }
1006 int Reduce(const unsigned long long* sendBuffer, unsigned long long* recvBuffer, vtkIdType length,
1007 int operation, int destProcessId)
1008 {
1009 return this->ReduceVoidArray(
1010 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG, operation, destProcessId);
1011 }
1012 int Reduce(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, int operation, int destProcessId);
1014
1016
1020 int Reduce(const int* sendBuffer, int* recvBuffer, vtkIdType length, Operation* operation,
1021 int destProcessId)
1022 {
1023 return this->ReduceVoidArray(sendBuffer, recvBuffer, length, VTK_INT, operation, destProcessId);
1024 }
1025 int Reduce(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length,
1026 Operation* operation, int destProcessId)
1027 {
1028 return this->ReduceVoidArray(
1029 sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT, operation, destProcessId);
1030 }
1031 int Reduce(const short* sendBuffer, short* recvBuffer, vtkIdType length, Operation* operation,
1032 int destProcessId)
1033 {
1034 return this->ReduceVoidArray(
1035 sendBuffer, recvBuffer, length, VTK_SHORT, operation, destProcessId);
1036 }
1037 int Reduce(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length,
1038 Operation* operation, int destProcessId)
1039 {
1040 return this->ReduceVoidArray(
1041 sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT, operation, destProcessId);
1042 }
1043 int Reduce(const long* sendBuffer, long* recvBuffer, vtkIdType length, Operation* operation,
1044 int destProcessId)
1045 {
1046 return this->ReduceVoidArray(
1047 sendBuffer, recvBuffer, length, VTK_LONG, operation, destProcessId);
1048 }
1049 int Reduce(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length,
1050 Operation* operation, int destProcessId)
1051 {
1052 return this->ReduceVoidArray(
1053 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG, operation, destProcessId);
1054 }
1055 int Reduce(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length,
1056 Operation* operation, int destProcessId)
1057 {
1058 return this->ReduceVoidArray(
1059 sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR, operation, destProcessId);
1060 }
1061 int Reduce(const char* sendBuffer, char* recvBuffer, vtkIdType length, Operation* operation,
1062 int destProcessId)
1063 {
1064 return this->ReduceVoidArray(
1065 sendBuffer, recvBuffer, length, VTK_CHAR, operation, destProcessId);
1066 }
1067 int Reduce(const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length,
1068 Operation* operation, int destProcessId)
1069 {
1070 return this->ReduceVoidArray(
1071 sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR, operation, destProcessId);
1072 }
1073 int Reduce(const float* sendBuffer, float* recvBuffer, vtkIdType length, Operation* operation,
1074 int destProcessId)
1075 {
1076 return this->ReduceVoidArray(
1077 sendBuffer, recvBuffer, length, VTK_FLOAT, operation, destProcessId);
1078 }
1079 int Reduce(const double* sendBuffer, double* recvBuffer, vtkIdType length, Operation* operation,
1080 int destProcessId)
1081 {
1082 return this->ReduceVoidArray(
1083 sendBuffer, recvBuffer, length, VTK_DOUBLE, operation, destProcessId);
1084 }
1085 int Reduce(const long long* sendBuffer, long long* recvBuffer, vtkIdType length,
1086 Operation* operation, int destProcessId)
1087 {
1088 return this->ReduceVoidArray(
1089 sendBuffer, recvBuffer, length, VTK_LONG_LONG, operation, destProcessId);
1090 }
1091 int Reduce(const unsigned long long* sendBuffer, unsigned long long* recvBuffer, vtkIdType length,
1092 Operation* operation, int destProcessId)
1093 {
1094 return this->ReduceVoidArray(
1095 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG, operation, destProcessId);
1096 }
1098 vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, Operation* operation, int destProcessId);
1100
1102
1105 int AllReduce(const int* sendBuffer, int* recvBuffer, vtkIdType length, int operation)
1106 {
1107 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_INT, operation);
1108 }
1110 const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length, int operation)
1111 {
1112 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT, operation);
1113 }
1114 int AllReduce(const short* sendBuffer, short* recvBuffer, vtkIdType length, int operation)
1115 {
1116 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_SHORT, operation);
1117 }
1119 const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length, int operation)
1120 {
1121 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT, operation);
1122 }
1123 int AllReduce(const long* sendBuffer, long* recvBuffer, vtkIdType length, int operation)
1124 {
1125 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_LONG, operation);
1126 }
1128 const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length, int operation)
1129 {
1130 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG, operation);
1131 }
1133 const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length, int operation)
1134 {
1135 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR, operation);
1136 }
1137 int AllReduce(const char* sendBuffer, char* recvBuffer, vtkIdType length, int operation)
1138 {
1139 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_CHAR, operation);
1140 }
1142 const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length, int operation)
1143 {
1144 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR, operation);
1145 }
1146 int AllReduce(const float* sendBuffer, float* recvBuffer, vtkIdType length, int operation)
1147 {
1148 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_FLOAT, operation);
1149 }
1150 int AllReduce(const double* sendBuffer, double* recvBuffer, vtkIdType length, int operation)
1151 {
1152 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_DOUBLE, operation);
1153 }
1154 int AllReduce(const long long* sendBuffer, long long* recvBuffer, vtkIdType length, int operation)
1155 {
1156 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_LONG_LONG, operation);
1157 }
1158 int AllReduce(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
1159 vtkIdType length, int operation)
1160 {
1161 return this->AllReduceVoidArray(
1162 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG, operation);
1163 }
1164 int AllReduce(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, int operation);
1165 int AllReduce(const int* sendBuffer, int* recvBuffer, vtkIdType length, Operation* operation)
1166 {
1167 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_INT, operation);
1168 }
1169 int AllReduce(const unsigned int* sendBuffer, unsigned int* recvBuffer, vtkIdType length,
1170 Operation* operation)
1171 {
1172 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_INT, operation);
1173 }
1174 int AllReduce(const short* sendBuffer, short* recvBuffer, vtkIdType length, Operation* operation)
1175 {
1176 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_SHORT, operation);
1177 }
1178 int AllReduce(const unsigned short* sendBuffer, unsigned short* recvBuffer, vtkIdType length,
1179 Operation* operation)
1180 {
1181 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_SHORT, operation);
1182 }
1183 int AllReduce(const long* sendBuffer, long* recvBuffer, vtkIdType length, Operation* operation)
1184 {
1185 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_LONG, operation);
1186 }
1187 int AllReduce(const unsigned long* sendBuffer, unsigned long* recvBuffer, vtkIdType length,
1188 Operation* operation)
1189 {
1190 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG, operation);
1191 }
1192 int AllReduce(const unsigned char* sendBuffer, unsigned char* recvBuffer, vtkIdType length,
1193 Operation* operation)
1194 {
1195 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_UNSIGNED_CHAR, operation);
1196 }
1197 int AllReduce(const char* sendBuffer, char* recvBuffer, vtkIdType length, Operation* operation)
1198 {
1199 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_CHAR, operation);
1200 }
1202 const signed char* sendBuffer, signed char* recvBuffer, vtkIdType length, Operation* operation)
1203 {
1204 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_SIGNED_CHAR, operation);
1205 }
1206 int AllReduce(const float* sendBuffer, float* recvBuffer, vtkIdType length, Operation* operation)
1207 {
1208 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_FLOAT, operation);
1209 }
1211 const double* sendBuffer, double* recvBuffer, vtkIdType length, Operation* operation)
1212 {
1213 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_DOUBLE, operation);
1214 }
1216 const long long* sendBuffer, long long* recvBuffer, vtkIdType length, Operation* operation)
1217 {
1218 return this->AllReduceVoidArray(sendBuffer, recvBuffer, length, VTK_LONG_LONG, operation);
1219 }
1220 int AllReduce(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
1221 vtkIdType length, Operation* operation)
1222 {
1223 return this->AllReduceVoidArray(
1224 sendBuffer, recvBuffer, length, VTK_UNSIGNED_LONG_LONG, operation);
1225 }
1226 int AllReduce(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer, Operation* operation);
1228
1230
1234 virtual int BroadcastVoidArray(void* data, vtkIdType length, int type, int srcProcessId);
1235 virtual int GatherVoidArray(
1236 const void* sendBuffer, void* recvBuffer, vtkIdType length, int type, int destProcessId);
1237 virtual int GatherVVoidArray(const void* sendBuffer, void* recvBuffer, vtkIdType sendLength,
1238 vtkIdType* recvLengths, vtkIdType* offsets, int type, int destProcessId);
1239 virtual int ScatterVoidArray(
1240 const void* sendBuffer, void* recvBuffer, vtkIdType length, int type, int srcProcessId);
1241 virtual int ScatterVVoidArray(const void* sendBuffer, void* recvBuffer, vtkIdType* sendLengths,
1242 vtkIdType* offsets, vtkIdType recvLength, int type, int srcProcessId);
1244 const void* sendBuffer, void* recvBuffer, vtkIdType length, int type);
1245 virtual int AllGatherVVoidArray(const void* sendBuffer, void* recvBuffer, vtkIdType sendLength,
1246 vtkIdType* recvLengths, vtkIdType* offsets, int type);
1247 virtual int ReduceVoidArray(const void* sendBuffer, void* recvBuffer, vtkIdType length, int type,
1248 int operation, int destProcessId);
1249 virtual int ReduceVoidArray(const void* sendBuffer, void* recvBuffer, vtkIdType length, int type,
1250 Operation* operation, int destProcessId);
1252 const void* sendBuffer, void* recvBuffer, vtkIdType length, int type, int operation);
1254 const void* sendBuffer, void* recvBuffer, vtkIdType length, int type, Operation* operation);
1256
1265 virtual bool CanProbe() { return false; }
1266
1276 virtual int Probe(int vtkNotUsed(source), int vtkNotUsed(tag), int* vtkNotUsed(actualSource))
1277 {
1278 vtkErrorMacro("Probe not implemented for this controller.");
1279 return 0;
1280 }
1281
1282 static void SetUseCopy(int useCopy);
1283
1295 virtual int ComputeGlobalBounds(int processorId, int numProcesses, vtkBoundingBox* bounds,
1296 int* rightHasBounds = nullptr, int* leftHasBounds = nullptr, int hasBoundsTag = 288402,
1297 int localBoundsTag = 288403, int globalBoundsTag = 288404);
1298
1300
1305 static int GetParentProcessor(int pid);
1306 static int GetLeftChildProcessor(int pid);
1308
1310
1315 static int MarshalDataObject(vtkDataObject* object, vtkCharArray* buffer);
1316 static int UnMarshalDataObject(vtkCharArray* buffer, vtkDataObject* object);
1318
1326
1327protected:
1330
1333
1334 // Internal methods called by Send/Receive(vtkDataObject *... ) above.
1335 int SendElementalDataObject(vtkDataObject* data, int remoteHandle, int tag);
1337
1345 int GatherV(vtkDataArray* sendArray, vtkDataArray* recvArray,
1346 vtkSmartPointer<vtkDataArray>* recvArrays, int destProcessId);
1348 vtkDataObject* sendData, vtkSmartPointer<vtkDataObject>* receiveData, int destProcessId);
1350
1352 int AllGatherV(vtkDataArray* sendBuffer, vtkDataArray* recvBuffer,
1353 vtkIdTypeArray* recvLengthsArray, vtkIdTypeArray* offsetsArray);
1355 vtkDataArray* sendArray, vtkDataArray* recvArray, vtkSmartPointer<vtkDataArray>* recvArrays);
1357
1358 int ReceiveDataObject(vtkDataObject* data, int remoteHandle, int tag, int type = -1);
1359 int ReceiveElementalDataObject(vtkDataObject* data, int remoteHandle, int tag);
1360 int ReceiveMultiBlockDataSet(vtkMultiBlockDataSet* data, int remoteHandle, int tag);
1361
1364
1366
1367 static int UseCopy;
1368
1370
1371private:
1372 vtkCommunicator(const vtkCommunicator&) = delete;
1373 void operator=(const vtkCommunicator&) = delete;
1374};
1375
1376VTK_ABI_NAMESPACE_END
1377#endif // vtkCommunicator_h
Fast, simple class for representing and operating on 3D bounds.
dynamic, self-adjusting array of char
A custom operation to use in a reduce command.
virtual int Commutative()=0
Subclasses override this method to specify whether their operation is commutative.
virtual void Function(const void *A, void *B, vtkIdType length, int datatype)=0
Subclasses must overload this method, which performs the actual operations.
virtual ~Operation()=default
int Reduce(const long long *sendBuffer, long long *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllReduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int AllGatherV(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Send(const unsigned long long *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int AllReduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int Receive(vtkDataArray *data, int remoteHandle, int tag)
This method receives a data array from a corresponding send.
int Reduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer)
Same as GatherV except that the result is placed in all processes.
int Send(const short *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int Receive(long long *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int ScatterV(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int AllReduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int Receive(char *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
virtual void SetNumberOfProcesses(int num)
Set the number of processes you will be using.
int GatherV(vtkDataObject *sendData, vtkSmartPointer< vtkDataObject > *recvData, int destProcessId)
Collects data objects in the process with id destProcessId.
int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
For this overload, recvLengths and offsets known on destProcessId and are passed in as parameters.
int Scatter(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int AllGather(const long *sendBuffer, long *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int AllGather(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int ScatterV(const long *sendBuffer, long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int AllReduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int Receive(unsigned long long *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Reduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int ScatterV(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int AllGather(const float *sendBuffer, float *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Reduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int Gather(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int Gather(const short *sendBuffer, short *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int GatherV(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int Send(const char *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int AllGather(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Scatter(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int GatherV(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
virtual int GatherVVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int type, int destProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
int Scatter(const long *sendBuffer, long *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int ScatterV(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Broadcast(short *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Scatter(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int AllGather(const char *sendBuffer, char *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int destProcessId)
For this overload, the recvLengths and offsets parameters are still computed but not exposed.
int Scatter(const long long *sendBuffer, long long *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int AllGather(const short *sendBuffer, short *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Reduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllReduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
static void SetUseCopy(int useCopy)
int Send(const int *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int Send(vtkDataArray *data, int remoteHandle, int tag)
This method sends a data array to a destination.
int Reduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
virtual int Probe(int source, int tag, int *actualSource)
Blocking test for checking for a message tagged with tag from source process (if source == ANY_SOURCE...
int ScatterV(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Gather(const int *sendBuffer, int *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int WriteDataArray(vtkDataArray *object)
virtual int SendVoidArray(const void *data, vtkIdType length, int type, int remoteHandle, int tag)=0
Subclasses have to supply this method to send various arrays of data.
int Receive(float *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Send(const long long *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int ScatterV(const float *sendBuffer, float *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Gather(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int GatherV(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int Receive(vtkMultiProcessStream &stream, int remoteId, int tag)
int AllReduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
virtual int AllReduceVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type, Operation *operation)
Subclasses should reimplement these if they have a more efficient implementation.
int Reduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllReduce(const long long *sendBuffer, long long *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int Broadcast(unsigned char *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
virtual int AllReduceVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type, int operation)
Subclasses should reimplement these if they have a more efficient implementation.
int ScatterV(const short *sendBuffer, short *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Gather(vtkDataObject *sendBuffer, std::vector< vtkSmartPointer< vtkDataObject > > &recvBuffer, int destProcessId)
Gathers vtkDataObject (sendBuffer) from all ranks to the destProcessId.
int ReceiveElementalDataObject(vtkDataObject *data, int remoteHandle, int tag)
int ScatterV(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int ScatterV(const long long *sendBuffer, long long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Scatter(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int Broadcast(char *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Broadcast(unsigned long long *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int AllGatherV(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
virtual void Barrier()
Will block the processes until all other processes reach the Barrier function.
int ScatterV(const int *sendBuffer, int *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int AllReduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int Gather(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int SendElementalDataObject(vtkDataObject *data, int remoteHandle, int tag)
virtual int AllToAllVVoidArray(const void *sendBuffer, const int *sendCounts, const int *sendOffsets, void *recvBuffer, const int *recvCounts, const int *recvOffsets, int type)
Exchange variable-sized messages between all processes.
int Gather(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int Receive(long *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Reduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int Gather(const double *sendBuffer, double *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int Broadcast(vtkMultiProcessStream &stream, int srcProcessId)
int AllGatherV(const int *sendBuffer, int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int AllGather(const long long *sendBuffer, long long *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Reduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
static int UnMarshalDataObject(vtkCharArray *buffer, vtkDataObject *object)
Convert a data object into a string that can be transmitted and vice versa.
int Reduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int AllReduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int Reduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int Scatter(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int GatherV(const long *sendBuffer, long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int Reduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdTypeArray *recvLengths, vtkIdTypeArray *offsets, int destProcessId)
For this overload, recvLengths and offsets are not known on destProcessId.
int Gather(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int Broadcast(signed char *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int AllReduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
virtual int ReceiveVoidArray(void *data, vtkIdType maxlength, int type, int remoteHandle, int tag)=0
Subclasses have to supply this method to receive various arrays of data.
int Send(const unsigned long *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int GatherVElementalDataObject(vtkDataObject *sendData, vtkSmartPointer< vtkDataObject > *receiveData, int destProcessId)
GatherV collects arrays in the process with id destProcessId.
int AllReduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int AllReduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
static int GetParentProcessor(int pid)
Some helper functions when dealing with heap tree - based algorithms - we don't need a function for g...
int AllReduce(const long long *sendBuffer, long long *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int Reduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int Send(vtkDataObject *data, int remoteHandle, int tag)
This method sends a data object to a destination.
int Broadcast(long long *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Receive(vtkDataObject *data, int remoteHandle, int tag)
This method receives a data object from a corresponding send.
int ReceiveMultiBlockDataSet(vtkMultiBlockDataSet *data, int remoteHandle, int tag)
int GatherV(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int Reduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllGatherV(const double *sendBuffer, double *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int GatherV(vtkDataArray *sendArray, vtkDataArray *recvArray, vtkSmartPointer< vtkDataArray > *recvArrays, int destProcessId)
GatherV collects arrays in the process with id destProcessId.
int Scatter(const short *sendBuffer, short *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int Gather(const long *sendBuffer, long *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int AllGatherV(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int ReadDataArray(vtkDataArray *object)
int Broadcast(unsigned long *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int AllReduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int Broadcast(long *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int AllReduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int AllGatherV(vtkDataArray *sendArray, vtkDataArray *recvArray, vtkSmartPointer< vtkDataArray > *recvArrays)
int Scatter(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int Broadcast(int *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int AllReduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int AllGatherV(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Scatter(const int *sendBuffer, int *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
virtual int ReduceVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type, int operation, int destProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
int GatherV(const double *sendBuffer, double *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int Reduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int ScatterV(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Receive(unsigned char *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int AllGather(vtkDataObject *sendBuffer, std::vector< vtkSmartPointer< vtkDataObject > > &recvBuffer)
Gathers vtkDataObject (sendBuffer) from all ranks to all raks.
int Receive(signed char *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int AllReduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int Reduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int Reduce(const long long *sendBuffer, long long *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int ReceiveDataObject(vtkDataObject *data, int remoteHandle, int tag, int type=-1)
virtual int ComputeGlobalBounds(int processorId, int numProcesses, vtkBoundingBox *bounds, int *rightHasBounds=nullptr, int *leftHasBounds=nullptr, int hasBoundsTag=288402, int localBoundsTag=288403, int globalBoundsTag=288404)
Determine the global bounds for a set of processes.
int Send(const long *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int Gather(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Send(const double *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int Gather(const vtkMultiProcessStream &sendBuffer, std::vector< vtkMultiProcessStream > &recvBuffer, int destProcessId)
Gathers vtkMultiProcessStream (sendBuffer) from all ranks to the destProcessId.
int Receive(int *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Gather(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int AllReduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int ScatterV(const double *sendBuffer, double *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Gather(const char *sendBuffer, char *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int Reduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
virtual int ScatterVVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int type, int srcProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
int AllGatherV(const char *sendBuffer, char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Reduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllGather(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Gather(const long long *sendBuffer, long long *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int Scatter(const double *sendBuffer, double *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int GatherV(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
virtual int ScatterVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type, int srcProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
int AllReduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int GatherV(const int *sendBuffer, int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int Send(const unsigned char *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
virtual int ReduceVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type, Operation *operation, int destProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
vtkDataObject * ReceiveDataObject(int remoteHandle, int tag)
The caller does not have to know the data type before this call is made.
int AllGatherV(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int AllReduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int AllGather(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int AllGather(const double *sendBuffer, double *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Gather(const float *sendBuffer, float *recvBuffer, vtkIdType length, int destProcessId)
Gather collects arrays in the process with id destProcessId.
int AllReduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, Operation *operation)
Same as Reduce except that the result is placed in all of the processes.
int GatherV(const char *sendBuffer, char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int AllReduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int Scatter(const char *sendBuffer, char *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
~vtkCommunicator() override
int Receive(short *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Broadcast(vtkDataArray *data, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int GatherV(const float *sendBuffer, float *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
static vtkSmartPointer< vtkDataObject > UnMarshalDataObject(vtkCharArray *buffer)
Same as UnMarshalDataObject(vtkCharArray*, vtkDataObject*) except that this method doesn't need to kn...
int AllGatherV(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
virtual int GatherVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type, int destProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
int Reduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int Broadcast(double *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Broadcast(unsigned short *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Receive(double *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
static int GetLeftChildProcessor(int pid)
Some helper functions when dealing with heap tree - based algorithms - we don't need a function for g...
virtual int AllGatherVVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int type)
Subclasses should reimplement these if they have a more efficient implementation.
int AllReduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int GatherV(const short *sendBuffer, short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
virtual int AllGatherVoidArray(const void *sendBuffer, void *recvBuffer, vtkIdType length, int type)
Subclasses should reimplement these if they have a more efficient implementation.
int AllGather(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Receive(unsigned long *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int GatherV(const long long *sendBuffer, long long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int AllReduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int Reduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int GatherV(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
GatherV is the vector variant of Gather.
int AllGather(const vtkMultiProcessStream &sendBuffer, std::vector< vtkMultiProcessStream > &recvBuffer)
Same as gather except that the result ends up on all processes.
int AllGather(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer)
Same as gather except that the result ends up on all processes.
int AllReduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int Send(const signed char *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int AllGather(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int AllGather(const int *sendBuffer, int *recvBuffer, vtkIdType length)
Same as gather except that the result ends up on all processes.
int Send(const unsigned int *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
virtual int BroadcastVoidArray(void *data, vtkIdType length, int type, int srcProcessId)
Subclasses should reimplement these if they have a more efficient implementation.
int Receive(unsigned short *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Reduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int operation, int destProcessId)
Reduce an array to the given destination process.
int Broadcast(unsigned int *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Broadcast(vtkDataObject *data, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
int Reduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int Reduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
static int MarshalDataObject(vtkDataObject *object, vtkCharArray *buffer)
Convert a data object into a string that can be transmitted and vice versa.
int Reduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int Scatter(const float *sendBuffer, float *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int Send(const float *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int Send(const vtkMultiProcessStream &stream, int remoteId, int tag)
int AllReduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
virtual bool CanProbe()
Check if this communicator implements a probe operation.
int Reduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdTypeArray *recvLengthsArray, vtkIdTypeArray *offsetsArray)
int AllGatherV(const float *sendBuffer, float *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int AllReduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, int operation)
Same as Reduce except that the result is placed in all of the processes.
int AllGatherV(const long long *sendBuffer, long long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Scatter(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int srcProcessId)
Scatter takes an array in the process with id srcProcessId and distributes it.
int Reduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, Operation *operation, int destProcessId)
Reduce an array to the given destination process.
int AllGatherV(const short *sendBuffer, short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Send(const unsigned short *data, vtkIdType length, int remoteHandle, int tag)
Convenience methods for sending data arrays.
int AllReduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int operation)
Same as Reduce except that the result is placed in all of the processes.
int AllGatherV(const long *sendBuffer, long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
Same as GatherV except that the result is placed in all processes.
int Reduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, int operation, int destProcessId)
Reduce an array to the given destination process.
int ScatterV(const char *sendBuffer, char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
ScatterV is the vector variant of Scatter.
int Receive(unsigned int *data, vtkIdType maxlength, int remoteHandle, int tag)
Convenience methods for receiving data arrays.
int Broadcast(float *data, vtkIdType length, int srcProcessId)
Broadcast sends the array in the process with id srcProcessId to all of the other processes.
general representation of visualization data
abstract class to specify dataset behavior
Definition vtkDataSet.h:166
dynamic, self-adjusting array of vtkIdType
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
Composite dataset that organizes datasets into blocks.
stream used to pass data across processes using vtkMultiProcessController.
Hold a reference to a vtkObjectBase instance.
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
#define vtkDataArray
#define VTK_SHORT
Definition vtkType.h:37
int vtkIdType
Definition vtkType.h:363
#define VTK_UNSIGNED_INT
Definition vtkType.h:40
#define VTK_LONG_LONG
Definition vtkType.h:52
#define VTK_DOUBLE
Definition vtkType.h:44
#define VTK_UNSIGNED_CHAR
Definition vtkType.h:36
#define VTK_UNSIGNED_SHORT
Definition vtkType.h:38
#define VTK_INT
Definition vtkType.h:39
#define VTK_SIGNED_CHAR
Definition vtkType.h:35
#define VTK_FLOAT
Definition vtkType.h:43
#define VTK_CHAR
Definition vtkType.h:34
#define VTK_UNSIGNED_LONG
Definition vtkType.h:42
#define VTK_UNSIGNED_LONG_LONG
Definition vtkType.h:53
#define VTK_LONG
Definition vtkType.h:41