VTK
vtkMultiProcessController.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkMultiProcessController.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
54 #ifndef vtkMultiProcessController_h
55 #define vtkMultiProcessController_h
56 
57 #include "vtkParallelCoreModule.h" // For export macro
58 #include "vtkObject.h"
59 
60 #include "vtkCommunicator.h" // Needed for direct access to communicator
61 
62 class vtkCollection;
63 class vtkDataObject;
64 class vtkDataSet;
65 class vtkImageData;
68 class vtkOutputWindow;
69 class vtkProcessGroup;
70 class vtkProcess;
71 
72 //BTX
73 // The type of function that gets called when new processes are initiated.
75  void *userData);
76 
77 // The type of function that gets called when an RMI is triggered.
78 typedef void (*vtkRMIFunctionType)(void *localArg,
79  void *remoteArg, int remoteArgLength,
80  int remoteProcessId);
81 //ETX
82 
83 
85 {
86 public:
88  void PrintSelf(ostream& os, vtkIndent indent);
89 
93  virtual void Initialize(int* vtkNotUsed(argc), char*** vtkNotUsed(argv))=0;
94 
96 
99  virtual void Initialize(int* vtkNotUsed(argc), char*** vtkNotUsed(argv),
100  int initializedExternally)=0;
102 
105  virtual void Finalize()=0;
106 
110  virtual void Finalize(int finalizedExternally)=0;
111 
113 
116  void SetNumberOfProcesses(int num);
117  int GetNumberOfProcesses();
119 
120  //BTX
124  void SetSingleMethod(vtkProcessFunctionType, void *data);
125 
127 
130  void SetSingleProcessObject(vtkProcess *p);
131  //ETX
133 
137  virtual void SingleMethodExecute() = 0;
138 
139  //BTX
141 
145  void SetMultipleMethod(int index, vtkProcessFunctionType, void *data);
146  //ETX
148 
152  virtual void MultipleMethodExecute() = 0;
153 
155  int GetLocalProcessId();
156 
161  static vtkMultiProcessController *GetGlobalController();
162 
165  virtual void CreateOutputWindow() = 0;
166 
168 
177  virtual vtkMultiProcessController *CreateSubController(
178  vtkProcessGroup *group);
180 
182 
191  virtual vtkMultiProcessController *PartitionController(int localColor,
192  int localKey);
194 
195  //------------------ RMIs --------------------
196  //BTX
207  virtual unsigned long AddRMI(vtkRMIFunctionType, void *localArg, int tag);
208 
210  virtual int RemoveFirstRMI(int tag);
211 
214  virtual int RemoveRMI(unsigned long id);
215 
217 
218  virtual void RemoveRMI(vtkRMIFunctionType f, void *arg, int tag)
219  {(void)f; (void)arg; (void)tag; vtkErrorMacro("RemoveRMI Not Implemented Yet");};
221 
226  virtual unsigned long AddRMICallback(vtkRMIFunctionType, void* localArg, int tag);
227 
231  virtual void RemoveAllRMICallbacks(int tag);
232 
234  virtual bool RemoveRMICallback(unsigned long id);
235 
236  //ETX
237 
239  void TriggerRMI(int remoteProcessId, void *arg, int argLength, int tag);
240 
243  void TriggerBreakRMIs();
244 
246 
247  void TriggerRMI(int remoteProcessId, const char *arg, int tag)
248  { this->TriggerRMI(remoteProcessId, (void*)arg,
249  static_cast<int>(strlen(arg))+1, tag); }
251 
253 
254  void TriggerRMI(int remoteProcessId, int tag)
255  { this->TriggerRMI(remoteProcessId, NULL, 0, tag); }
257 
259 
265  void TriggerRMIOnAllChildren(void *arg, int argLength, int tag);
266  void TriggerRMIOnAllChildren(const char *arg, int tag)
267  {
268  this->TriggerRMIOnAllChildren(
269  (void*)arg, static_cast<int>(strlen(arg))+1, tag);
270  }
272  {
273  this->TriggerRMIOnAllChildren(NULL, 0, tag);
274  }
275  void BroadcastTriggerRMIOnAllChildren(void* arg, int argLength, int tag);
277 
279 
286  int ProcessRMIs(int reportErrors, int dont_loop = 0);
287  int ProcessRMIs();
288  int BroadcastProcessRMIs(int reportErrors, int dont_loop=0);
290 
292 
295  vtkSetMacro(BreakFlag, int);
296  vtkGetMacro(BreakFlag, int);
298 
300 
303  vtkSetMacro(BroadcastTriggerRMI,bool);
304  vtkGetMacro(BroadcastTriggerRMI,bool);
305  vtkBooleanMacro(BroadcastTriggerRMI,bool);
307 
309 
311  vtkGetObjectMacro(Communicator, vtkCommunicator);
313 
315 
316  static int GetBreakRMITag() { return BREAK_RMI_TAG; }
317  static int GetRMITag() { return RMI_TAG; }
318  static int GetRMIArgTag() { return RMI_ARG_TAG; }
320 
321 //BTX
322 
323  enum Errors
324  {
327  RMI_ARG_ERROR
328  };
329 
330  enum Consts
331  {
332  ANY_SOURCE = -1,
333  INVALID_SOURCE = -2
334  };
335 
336  enum Tags
337  {
338  RMI_TAG = 1,
339  RMI_ARG_TAG = 2,
340  BREAK_RMI_TAG = 3,
341  XML_WRITER_DATA_INFO = 4
342  };
343 
344 //ETX
345 
347  void Barrier();
348 
349  static void SetGlobalController(vtkMultiProcessController *controller);
350 
351  //------------------ Communication --------------------
352 
354 
359  int Send(const int* data, vtkIdType length, int remoteProcessId, int tag);
360  int Send(const short* data, vtkIdType length, int remoteProcessId, int tag);
361  int Send(const unsigned short* data, vtkIdType length, int remoteProcessId, int tag);
362  int Send(const unsigned int* data, vtkIdType length, int remoteProcessId, int tag);
363  int Send(const unsigned long* data, vtkIdType length, int remoteProcessId,
364  int tag);
365  int Send(const long* data, vtkIdType length, int remoteProcessId,
366  int tag);
367  int Send(const signed char* data, vtkIdType length, int remoteProcessId, int tag);
368  int Send(const char* data, vtkIdType length, int remoteProcessId, int tag);
369  int Send(const unsigned char* data, vtkIdType length, int remoteProcessId, int tag);
370  int Send(const float* data, vtkIdType length, int remoteProcessId, int tag);
371  int Send(const double* data, vtkIdType length, int remoteProcessId, int tag);
372 #ifdef VTK_USE_64BIT_IDS
373  int Send(const vtkIdType* data, vtkIdType length, int remoteProcessId, int tag);
374 #elif defined(VTK_TYPE_USE_LONG_LONG)
375  int Send(const long long* data, vtkIdType length, int remoteProcessId, int tag);
376 #endif
377 #ifdef VTK_TYPE_USE_LONG_LONG
378  int Send(const unsigned long long* data, vtkIdType length, int remoteProcessId, int tag);
379 #endif
380  int Send(vtkDataObject *data, int remoteId, int tag);
381  int Send(vtkDataArray *data, int remoteId, int tag);
383 
384 //BTX
386 
391  int Send(const vtkMultiProcessStream& stream, int remoteId, int tag);
392 //ETX
394 
396 
404  int Receive(int* data, vtkIdType maxlength, int remoteProcessId, int tag);
405  int Receive(unsigned int* data, vtkIdType maxlength, int remoteProcessId, int tag);
406  int Receive(short* data, vtkIdType maxlength, int remoteProcessId, int tag);
407  int Receive(unsigned short* data, vtkIdType maxlength, int remoteProcessId, int tag);
408  int Receive(long* data, vtkIdType maxlength, int remoteProcessId, int tag);
409  int Receive(unsigned long* data, vtkIdType maxlength, int remoteProcessId,
410  int tag);
411  int Receive(char* data, vtkIdType maxlength, int remoteProcessId, int tag);
412  int Receive(unsigned char* data, vtkIdType maxlength, int remoteProcessId, int tag);
413  int Receive(signed char* data, vtkIdType maxlength, int remoteProcessId, int tag);
414  int Receive(float* data, vtkIdType maxlength, int remoteProcessId, int tag);
415  int Receive(double* data, vtkIdType maxlength, int remoteProcessId, int tag);
416 #ifdef VTK_USE_64BIT_IDS
417  int Receive(vtkIdType* data, vtkIdType maxlength, int remoteProcessId, int tag);
418 #elif defined(VTK_TYPE_USE_LONG_LONG)
419  int Receive(long long* data, vtkIdType maxLength, int remoteProcessId, int tag);
420 #endif
421 #ifdef VTK_TYPE_USE_LONG_LONG
422  int Receive(unsigned long long* data, vtkIdType maxLength, int remoteProcessId, int tag);
423 #endif
424  int Receive(vtkDataObject* data, int remoteId, int tag);
425  int Receive(vtkDataArray* data, int remoteId, int tag);
426 //BTX
428 
429 
430  int Receive(vtkMultiProcessStream& stream, int remoteId, int tag);
431 //ETX
432  vtkDataObject *ReceiveDataObject(int remoteId, int tag);
434 
442  vtkIdType GetCount();
443 
444 
445  //---------------------- Collective Operations ----------------------
446 
448 
451  int Broadcast(int *data, vtkIdType length, int srcProcessId) {
452  return this->Communicator->Broadcast(data, length, srcProcessId);
453  }
454  int Broadcast(unsigned int *data, vtkIdType length, int srcProcessId) {
455  return this->Communicator->Broadcast(data, length, srcProcessId);
456  }
457  int Broadcast(short *data, vtkIdType length, int srcProcessId) {
458  return this->Communicator->Broadcast(data, length, srcProcessId);
459  }
460  int Broadcast(unsigned short *data, vtkIdType length, int srcProcessId) {
461  return this->Communicator->Broadcast(data, length, srcProcessId);
462  }
463  int Broadcast(long *data, vtkIdType length, int srcProcessId) {
464  return this->Communicator->Broadcast(data, length, srcProcessId);
465  }
466  int Broadcast(unsigned long *data, vtkIdType length, int srcProcessId) {
467  return this->Communicator->Broadcast(data, length, srcProcessId);
468  }
469  int Broadcast(unsigned char *data, vtkIdType length, int srcProcessId) {
470  return this->Communicator->Broadcast(data, length, srcProcessId);
471  }
472  int Broadcast(char *data, vtkIdType length, int srcProcessId) {
473  return this->Communicator->Broadcast(data, length, srcProcessId);
474  }
475  int Broadcast(signed char *data, vtkIdType length, int srcProcessId) {
476  return this->Communicator->Broadcast(data, length, srcProcessId);
477  }
478  int Broadcast(float *data, vtkIdType length, int srcProcessId) {
479  return this->Communicator->Broadcast(data, length, srcProcessId);
480  }
481  int Broadcast(double *data, vtkIdType length, int srcProcessId) {
482  return this->Communicator->Broadcast(data, length, srcProcessId);
483  }
484 #ifdef VTK_USE_64BIT_IDS
485  int Broadcast(vtkIdType *data, vtkIdType length, int srcProcessId) {
486  return this->Communicator->Broadcast(data, length, srcProcessId);
487  }
488 #elif defined(VTK_TYPE_USE_LONG_LONG)
489  int Broadcast(long long *data, vtkIdType length, int srcProcessId) {
490  return this->Communicator->Broadcast(data, length, srcProcessId);
491  }
492 #endif
493 #ifdef VTK_TYPE_USE_LONG_LONG
494  int Broadcast(unsigned long long *data, vtkIdType length, int srcProcessId) {
495  return this->Communicator->Broadcast(data, length, srcProcessId);
496  }
497 #endif
498  int Broadcast(vtkDataObject *data, int srcProcessId) {
499  return this->Communicator->Broadcast(data, srcProcessId);
500  }
501  int Broadcast(vtkDataArray *data, int srcProcessId) {
502  return this->Communicator->Broadcast(data, srcProcessId);
503  }
504 //BTX
505  int Broadcast(vtkMultiProcessStream& stream, int srcProcessId) {
506  return this->Communicator->Broadcast(stream, srcProcessId);
507  }
508 //ETX
510 
512 
520  int Gather(const int *sendBuffer, int *recvBuffer,
521  vtkIdType length, int destProcessId) {
522  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
523  destProcessId);
524  }
525  int Gather(const unsigned int *sendBuffer, unsigned int *recvBuffer,
526  vtkIdType length, int destProcessId) {
527  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
528  destProcessId);
529  }
530  int Gather(const short *sendBuffer, short *recvBuffer,
531  vtkIdType length, int destProcessId) {
532  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
533  destProcessId);
534  }
535  int Gather(const unsigned short *sendBuffer, unsigned short *recvBuffer,
536  vtkIdType length, int destProcessId) {
537  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
538  destProcessId);
539  }
540  int Gather(const long *sendBuffer, long *recvBuffer,
541  vtkIdType length, int destProcessId) {
542  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
543  destProcessId);
544  }
545  int Gather(const unsigned long *sendBuffer, unsigned long *recvBuffer,
546  vtkIdType length, int destProcessId) {
547  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
548  destProcessId);
549  }
550  int Gather(const unsigned char *sendBuffer, unsigned char *recvBuffer,
551  vtkIdType length, int destProcessId) {
552  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
553  destProcessId);
554  }
555  int Gather(const char *sendBuffer, char *recvBuffer,
556  vtkIdType length, int destProcessId) {
557  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
558  destProcessId);
559  }
560  int Gather(const signed char *sendBuffer, signed char *recvBuffer,
561  vtkIdType length, int destProcessId) {
562  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
563  destProcessId);
564  }
565  int Gather(const float *sendBuffer, float *recvBuffer,
566  vtkIdType length, int destProcessId) {
567  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
568  destProcessId);
569  }
570  int Gather(const double *sendBuffer, double *recvBuffer,
571  vtkIdType length, int destProcessId) {
572  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
573  destProcessId);
574  }
575 #ifdef VTK_USE_64BIT_IDS
576  int Gather(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
577  vtkIdType length, int destProcessId) {
578  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
579  destProcessId);
580  }
581 #elif defined(VTK_TYPE_USE_LONG_LONG)
582  int Gather(const long long *sendBuffer, long long *recvBuffer,
583  vtkIdType length, int destProcessId) {
584  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
585  destProcessId);
586  }
587 #endif
588 #ifdef VTK_TYPE_USE_LONG_LONG
589  int Gather(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
590  vtkIdType length, int destProcessId) {
591  return this->Communicator->Gather(sendBuffer, recvBuffer, length,
592  destProcessId);
593  }
594 #endif
595  int Gather(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
596  int destProcessId) {
597  return this->Communicator->Gather(sendBuffer, recvBuffer, destProcessId);
598  }
600 
602 
612  int GatherV(const int* sendBuffer, int* recvBuffer,
613  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
614  int destProcessId) {
615  return this->Communicator->GatherV(sendBuffer, recvBuffer,
616  sendLength, recvLengths,
617  offsets, destProcessId);
618  }
619  int GatherV(const unsigned int* sendBuffer, unsigned int* recvBuffer,
620  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
621  int destProcessId) {
622  return this->Communicator->GatherV(sendBuffer, recvBuffer,
623  sendLength, recvLengths,
624  offsets, destProcessId);
625  }
626  int GatherV(const short* sendBuffer, short* recvBuffer,
627  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
628  int destProcessId) {
629  return this->Communicator->GatherV(sendBuffer, recvBuffer,
630  sendLength, recvLengths,
631  offsets, destProcessId);
632  }
633  int GatherV(const unsigned short* sendBuffer, unsigned short* recvBuffer,
634  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
635  int destProcessId) {
636  return this->Communicator->GatherV(sendBuffer, recvBuffer,
637  sendLength, recvLengths,
638  offsets, destProcessId);
639  }
640  int GatherV(const long* sendBuffer, long* recvBuffer,
641  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
642  int destProcessId) {
643  return this->Communicator->GatherV(sendBuffer, recvBuffer,
644  sendLength, recvLengths,
645  offsets, destProcessId);
646  }
647  int GatherV(const unsigned long* sendBuffer, unsigned long* recvBuffer,
648  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
649  int destProcessId) {
650  return this->Communicator->GatherV(sendBuffer, recvBuffer,
651  sendLength, recvLengths,
652  offsets, destProcessId);
653  }
654  int GatherV(const unsigned char* sendBuffer, unsigned char* recvBuffer,
655  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
656  int destProcessId) {
657  return this->Communicator->GatherV(sendBuffer, recvBuffer,
658  sendLength, recvLengths,
659  offsets, destProcessId);
660  }
661  int GatherV(const char* sendBuffer, char* recvBuffer,
662  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
663  int destProcessId) {
664  return this->Communicator->GatherV(sendBuffer, recvBuffer,
665  sendLength, recvLengths,
666  offsets, destProcessId);
667  }
668  int GatherV(const signed char* sendBuffer, signed char* recvBuffer,
669  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
670  int destProcessId) {
671  return this->Communicator->GatherV(sendBuffer, recvBuffer,
672  sendLength, recvLengths,
673  offsets, destProcessId);
674  }
675  int GatherV(const float* sendBuffer, float* recvBuffer,
676  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
677  int destProcessId) {
678  return this->Communicator->GatherV(sendBuffer, recvBuffer,
679  sendLength, recvLengths,
680  offsets, destProcessId);
681  }
682  int GatherV(const double* sendBuffer, double* recvBuffer,
683  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
684  int destProcessId) {
685  return this->Communicator->GatherV(sendBuffer, recvBuffer,
686  sendLength, recvLengths,
687  offsets, destProcessId);
688  }
689 #ifdef VTK_USE_64BIT_IDS
690  int GatherV(const vtkIdType* sendBuffer, vtkIdType* recvBuffer,
691  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
692  int destProcessId) {
693  return this->Communicator->GatherV(sendBuffer, recvBuffer,
694  sendLength, recvLengths,
695  offsets, destProcessId);
696  }
697 #elif defined(VTK_TYPE_USE_LONG_LONG)
698  int GatherV(const long long* sendBuffer, long long* recvBuffer,
699  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
700  int destProcessId) {
701  return this->Communicator->GatherV(sendBuffer, recvBuffer,
702  sendLength, recvLengths,
703  offsets, destProcessId);
704  }
705 #endif
706 #ifdef VTK_TYPE_USE_LONG_LONG
707  int GatherV(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
708  vtkIdType sendLength, vtkIdType* recvLengths, vtkIdType* offsets,
709  int destProcessId) {
710  return this->Communicator->GatherV(sendBuffer, recvBuffer,
711  sendLength, recvLengths,
712  offsets, destProcessId);
713  }
715 
716 #endif
717  int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
718  vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId) {
719  return this->Communicator->GatherV(sendBuffer, recvBuffer,
720  recvLengths, offsets,
721  destProcessId);
722  }
723  int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
724  vtkIdTypeArray* recvLengths,
725  vtkIdTypeArray* offsets,
726  int destProcessId)
727  {
728  return this->Communicator->GatherV(sendBuffer, recvBuffer,
729  recvLengths, offsets, destProcessId);
730  }
731 
732 
734 
739  int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
740  int destProcessId) {
741  return this->Communicator->GatherV(sendBuffer, recvBuffer, destProcessId);
742  }
744  int destProcessId)
745  {
746  return this->Communicator->GatherV(sendData, recvData, destProcessId);
747  }
749 
751 
756  int Scatter(const int *sendBuffer, int *recvBuffer,
757  vtkIdType length, int srcProcessId) {
758  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
759  srcProcessId);
760  }
761  int Scatter(const unsigned int *sendBuffer, unsigned int *recvBuffer,
762  vtkIdType length, int srcProcessId) {
763  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
764  srcProcessId);
765  }
766  int Scatter(const short *sendBuffer, short *recvBuffer,
767  vtkIdType length, int srcProcessId) {
768  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
769  srcProcessId);
770  }
771  int Scatter(const unsigned short *sendBuffer, unsigned short *recvBuffer,
772  vtkIdType length, int srcProcessId) {
773  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
774  srcProcessId);
775  }
776  int Scatter(const long *sendBuffer, long *recvBuffer,
777  vtkIdType length, int srcProcessId) {
778  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
779  srcProcessId);
780  }
781  int Scatter(const unsigned long *sendBuffer, unsigned long *recvBuffer,
782  vtkIdType length, int srcProcessId) {
783  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
784  srcProcessId);
785  }
786  int Scatter(const unsigned char *sendBuffer, unsigned char *recvBuffer,
787  vtkIdType length, int srcProcessId) {
788  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
789  srcProcessId);
790  }
791  int Scatter(const char *sendBuffer, char *recvBuffer,
792  vtkIdType length, int srcProcessId) {
793  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
794  srcProcessId);
795  }
796  int Scatter(const signed char *sendBuffer, signed char *recvBuffer,
797  vtkIdType length, int srcProcessId) {
798  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
799  srcProcessId);
800  }
801  int Scatter(const float *sendBuffer, float *recvBuffer,
802  vtkIdType length, int srcProcessId) {
803  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
804  srcProcessId);
805  }
806  int Scatter(const double *sendBuffer, double *recvBuffer,
807  vtkIdType length, int srcProcessId) {
808  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
809  srcProcessId);
810  }
811 #ifdef VTK_USE_64BIT_IDS
812  int Scatter(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
813  vtkIdType length, int srcProcessId) {
814  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
815  srcProcessId);
816  }
817 #elif defined(VTK_TYPE_USE_LONG_LONG)
818  int Scatter(const long long *sendBuffer, long long *recvBuffer,
819  vtkIdType length, int srcProcessId) {
820  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
821  srcProcessId);
822  }
823 #endif
824 #ifdef VTK_TYPE_USE_LONG_LONG
825  int Scatter(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
826  vtkIdType length, int srcProcessId) {
827  return this->Communicator->Scatter(sendBuffer, recvBuffer, length,
828  srcProcessId);
829  }
830 #endif
831  int Scatter(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
832  int srcProcessId) {
833  return this->Communicator->Scatter(sendBuffer, recvBuffer, srcProcessId);
834  }
836 
838 
844  int ScatterV(const int *sendBuffer, int *recvBuffer,
845  vtkIdType *sendLengths, vtkIdType *offsets,
846  vtkIdType recvLength, int srcProcessId) {
847  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
848  sendLengths, offsets, recvLength,
849  srcProcessId);
850  }
851  int ScatterV(const unsigned int *sendBuffer, unsigned int *recvBuffer,
852  vtkIdType *sendLengths, vtkIdType *offsets,
853  vtkIdType recvLength, int srcProcessId) {
854  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
855  sendLengths, offsets, recvLength,
856  srcProcessId);
857  }
858  int ScatterV(const short *sendBuffer, short *recvBuffer,
859  vtkIdType *sendLengths, vtkIdType *offsets,
860  vtkIdType recvLength, int srcProcessId) {
861  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
862  sendLengths, offsets, recvLength,
863  srcProcessId);
864  }
865  int ScatterV(const unsigned short *sendBuffer, unsigned short *recvBuffer,
866  vtkIdType *sendLengths, vtkIdType *offsets,
867  vtkIdType recvLength, int srcProcessId) {
868  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
869  sendLengths, offsets, recvLength,
870  srcProcessId);
871  }
872  int ScatterV(const long *sendBuffer, long *recvBuffer,
873  vtkIdType *sendLengths, vtkIdType *offsets,
874  vtkIdType recvLength, int srcProcessId) {
875  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
876  sendLengths, offsets, recvLength,
877  srcProcessId);
878  }
879  int ScatterV(const unsigned long *sendBuffer, unsigned long *recvBuffer,
880  vtkIdType *sendLengths, vtkIdType *offsets,
881  vtkIdType recvLength, int srcProcessId) {
882  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
883  sendLengths, offsets, recvLength,
884  srcProcessId);
885  }
886  int ScatterV(const unsigned char *sendBuffer, unsigned char *recvBuffer,
887  vtkIdType *sendLengths, vtkIdType *offsets,
888  vtkIdType recvLength, int srcProcessId) {
889  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
890  sendLengths, offsets, recvLength,
891  srcProcessId);
892  }
893  int ScatterV(const char *sendBuffer, char *recvBuffer,
894  vtkIdType *sendLengths, vtkIdType *offsets,
895  vtkIdType recvLength, int srcProcessId) {
896  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
897  sendLengths, offsets, recvLength,
898  srcProcessId);
899  }
900  int ScatterV(const signed char *sendBuffer, signed char *recvBuffer,
901  vtkIdType *sendLengths, vtkIdType *offsets,
902  vtkIdType recvLength, int srcProcessId) {
903  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
904  sendLengths, offsets, recvLength,
905  srcProcessId);
906  }
907  int ScatterV(const float *sendBuffer, float *recvBuffer,
908  vtkIdType *sendLengths, vtkIdType *offsets,
909  vtkIdType recvLength, int srcProcessId) {
910  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
911  sendLengths, offsets, recvLength,
912  srcProcessId);
913  }
914  int ScatterV(const double *sendBuffer, double *recvBuffer,
915  vtkIdType *sendLengths, vtkIdType *offsets,
916  vtkIdType recvLength, int srcProcessId) {
917  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
918  sendLengths, offsets, recvLength,
919  srcProcessId);
920  }
921 #ifdef VTK_USE_64BIT_IDS
922  int ScatterV(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
923  vtkIdType *sendLengths, vtkIdType *offsets,
924  vtkIdType recvLength, int srcProcessId) {
925  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
926  sendLengths, offsets, recvLength,
927  srcProcessId);
928  }
929 #elif defined(VTK_TYPE_USE_LONG_LONG)
930  int ScatterV(const long long *sendBuffer, long long *recvBuffer,
931  vtkIdType *sendLengths, vtkIdType *offsets,
932  vtkIdType recvLength, int srcProcessId) {
933  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
934  sendLengths, offsets, recvLength,
935  srcProcessId);
936  }
937 #endif
938 #ifdef VTK_TYPE_USE_LONG_LONG
939  int ScatterV(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
940  vtkIdType *sendLengths, vtkIdType *offsets,
941  vtkIdType recvLength, int srcProcessId) {
942  return this->Communicator->ScatterV(sendBuffer, recvBuffer,
943  sendLengths, offsets, recvLength,
944  srcProcessId);
945  }
946 #endif
947 
948 
950 
951  int AllGather(const int *sendBuffer, int *recvBuffer, vtkIdType length) {
952  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
953  }
954  int AllGather(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length) {
955  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
956  }
957  int AllGather(const short *sendBuffer, short *recvBuffer, vtkIdType length) {
958  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
959  }
960  int AllGather(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length) {
961  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
962  }
963  int AllGather(const long *sendBuffer, long *recvBuffer, vtkIdType length) {
964  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
965  }
966  int AllGather(const unsigned long *sendBuffer,
967  unsigned long *recvBuffer, vtkIdType length) {
968  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
969  }
970  int AllGather(const unsigned char *sendBuffer,
971  unsigned char *recvBuffer, vtkIdType length) {
972  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
973  }
974  int AllGather(const char *sendBuffer, char *recvBuffer, vtkIdType length) {
975  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
976  }
977  int AllGather(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length) {
978  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
979  }
980  int AllGather(const float *sendBuffer, float *recvBuffer, vtkIdType length) {
981  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
982  }
983  int AllGather(const double *sendBuffer,
984  double *recvBuffer, vtkIdType length) {
985  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
986  }
987 #ifdef VTK_USE_64BIT_IDS
988  int AllGather(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
989  vtkIdType length) {
990  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
991  }
992 #elif defined(VTK_TYPE_USE_LONG_LONG)
993  int AllGather(const long long *sendBuffer, long long *recvBuffer, vtkIdType length) {
994  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
995  }
996 #endif
997 #ifdef VTK_TYPE_USE_LONG_LONG
998  int AllGather(const unsigned long long *sendBuffer, unsigned long long *recvBuffer, vtkIdType length) {
999  return this->Communicator->AllGather(sendBuffer, recvBuffer, length);
1000  }
1001 #endif
1002  int AllGather(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer) {
1003  return this->Communicator->AllGather(sendBuffer, recvBuffer);
1004  }
1006 
1008 
1009  int AllGatherV(const int* sendBuffer, int* recvBuffer,
1010  vtkIdType sendLength, vtkIdType* recvLengths,
1011  vtkIdType* offsets) {
1012  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1013  sendLength, recvLengths,
1014  offsets);
1015  }
1016  int AllGatherV(const unsigned int* sendBuffer, unsigned int* recvBuffer,
1017  vtkIdType sendLength, vtkIdType* recvLengths,
1018  vtkIdType* offsets) {
1019  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1020  sendLength, recvLengths,
1021  offsets);
1022  }
1023  int AllGatherV(const short* sendBuffer, short* recvBuffer,
1024  vtkIdType sendLength, vtkIdType* recvLengths,
1025  vtkIdType* offsets) {
1026  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1027  sendLength, recvLengths,
1028  offsets);
1029  }
1030  int AllGatherV(const unsigned short* sendBuffer, unsigned short* recvBuffer,
1031  vtkIdType sendLength, vtkIdType* recvLengths,
1032  vtkIdType* offsets) {
1033  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1034  sendLength, recvLengths,
1035  offsets);
1036  }
1037  int AllGatherV(const long* sendBuffer, long* recvBuffer,
1038  vtkIdType sendLength, vtkIdType* recvLengths,
1039  vtkIdType* offsets) {
1040  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1041  sendLength, recvLengths,
1042  offsets);
1043  }
1044  int AllGatherV(const unsigned long* sendBuffer, unsigned long* recvBuffer,
1045  vtkIdType sendLength, vtkIdType* recvLengths,
1046  vtkIdType* offsets) {
1047  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1048  sendLength, recvLengths,
1049  offsets);
1050  }
1051  int AllGatherV(const unsigned char* sendBuffer, unsigned char* recvBuffer,
1052  vtkIdType sendLength, vtkIdType* recvLengths,
1053  vtkIdType* offsets) {
1054  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1055  sendLength, recvLengths,
1056  offsets);
1057  }
1058  int AllGatherV(const char* sendBuffer, char* recvBuffer,
1059  vtkIdType sendLength, vtkIdType* recvLengths,
1060  vtkIdType* offsets) {
1061  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1062  sendLength, recvLengths,
1063  offsets);
1064  }
1065  int AllGatherV(const signed char* sendBuffer, signed char* recvBuffer,
1066  vtkIdType sendLength, vtkIdType* recvLengths,
1067  vtkIdType* offsets) {
1068  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1069  sendLength, recvLengths,
1070  offsets);
1071  }
1072  int AllGatherV(const float* sendBuffer, float* recvBuffer,
1073  vtkIdType sendLength, vtkIdType* recvLengths,
1074  vtkIdType* offsets) {
1075  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1076  sendLength, recvLengths,
1077  offsets);
1078  }
1079  int AllGatherV(const double* sendBuffer, double* recvBuffer,
1080  vtkIdType sendLength, vtkIdType* recvLengths,
1081  vtkIdType* offsets) {
1082  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1083  sendLength, recvLengths,
1084  offsets);
1085  }
1086 #ifdef VTK_USE_64BIT_IDS
1087  int AllGatherV(const vtkIdType* sendBuffer, vtkIdType* recvBuffer,
1088  vtkIdType sendLength, vtkIdType* recvLengths,
1089  vtkIdType* offsets) {
1090  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1091  sendLength, recvLengths,
1092  offsets);
1093  }
1094 #elif defined(VTK_TYPE_USE_LONG_LONG)
1095  int AllGatherV(const long long* sendBuffer, long long* recvBuffer,
1096  vtkIdType sendLength, vtkIdType* recvLengths,
1097  vtkIdType* offsets) {
1098  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1099  sendLength, recvLengths,
1100  offsets);
1101  }
1102 #endif
1103 #ifdef VTK_TYPE_USE_LONG_LONG
1104  int AllGatherV(const unsigned long long* sendBuffer, unsigned long long* recvBuffer,
1105  vtkIdType sendLength, vtkIdType* recvLengths,
1106  vtkIdType* offsets) {
1107  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1108  sendLength, recvLengths,
1109  offsets);
1110  }
1111 #endif
1112  int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
1113  vtkIdType *recvLengths, vtkIdType *offsets) {
1114  return this->Communicator->AllGatherV(sendBuffer, recvBuffer,
1115  recvLengths, offsets);
1116  }
1118 
1120 
1125  int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer) {
1126  return this->Communicator->AllGatherV(sendBuffer, recvBuffer);
1127  }
1129 
1131 
1134  int Reduce(const int *sendBuffer, int *recvBuffer,
1135  vtkIdType length, int operation, int destProcessId) {
1136  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1137  operation, destProcessId);
1138  }
1139  int Reduce(const unsigned int *sendBuffer, unsigned int *recvBuffer,
1140  vtkIdType length, int operation, int destProcessId) {
1141  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1142  operation, destProcessId);
1143  }
1144  int Reduce(const short *sendBuffer, short *recvBuffer,
1145  vtkIdType length, int operation, int destProcessId) {
1146  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1147  operation, destProcessId);
1148  }
1149  int Reduce(const unsigned short *sendBuffer, unsigned short *recvBuffer,
1150  vtkIdType length, int operation, int destProcessId) {
1151  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1152  operation, destProcessId);
1153  }
1154  int Reduce(const long *sendBuffer, long *recvBuffer,
1155  vtkIdType length, int operation, int destProcessId) {
1156  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1157  operation, destProcessId);
1158  }
1159  int Reduce(const unsigned long *sendBuffer, unsigned long *recvBuffer,
1160  vtkIdType length, int operation, int destProcessId) {
1161  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1162  operation, destProcessId);
1163  }
1164  int Reduce(const unsigned char *sendBuffer, unsigned char *recvBuffer,
1165  vtkIdType length, int operation, int destProcessId) {
1166  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1167  operation, destProcessId);
1168  }
1169  int Reduce(const char *sendBuffer, char *recvBuffer,
1170  vtkIdType length, int operation, int destProcessId) {
1171  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1172  operation, destProcessId);
1173  }
1174  int Reduce(const signed char *sendBuffer, signed char *recvBuffer,
1175  vtkIdType length, int operation, int destProcessId) {
1176  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1177  operation, destProcessId);
1178  }
1179  int Reduce(const float *sendBuffer, float *recvBuffer,
1180  vtkIdType length, int operation, int destProcessId) {
1181  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1182  operation, destProcessId);
1183  }
1184  int Reduce(const double *sendBuffer, double *recvBuffer,
1185  vtkIdType length, int operation, int destProcessId) {
1186  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1187  operation, destProcessId);
1188  }
1189 #ifdef VTK_USE_64BIT_IDS
1190  int Reduce(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
1191  vtkIdType length, int operation, int destProcessId) {
1192  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1193  operation, destProcessId);
1194  }
1195 #elif defined(VTK_TYPE_USE_LONG_LONG)
1196  int Reduce(const long long *sendBuffer, long long *recvBuffer,
1197  vtkIdType length, int operation, int destProcessId) {
1198  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1199  operation, destProcessId);
1200  }
1201 #endif
1202 #ifdef VTK_TYPE_USE_LONG_LONG
1203  int Reduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
1204  vtkIdType length, int operation, int destProcessId) {
1205  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1206  operation, destProcessId);
1207  }
1208 #endif
1209  int Reduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
1210  int operation, int destProcessId) {
1211  return this->Communicator->Reduce(sendBuffer, recvBuffer,
1212  operation, destProcessId);
1213  }
1215 
1216 //BTX
1218 
1221  int Reduce(const int *sendBuffer, int *recvBuffer,
1222  vtkIdType length, vtkCommunicator::Operation *operation,
1223  int destProcessId) {
1224  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1225  operation, destProcessId);
1226  }
1227  int Reduce(const unsigned int *sendBuffer, unsigned int *recvBuffer,
1228  vtkIdType length, vtkCommunicator::Operation *operation,
1229  int destProcessId) {
1230  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1231  operation, destProcessId);
1232  }
1233  int Reduce(const short *sendBuffer, short *recvBuffer,
1234  vtkIdType length, vtkCommunicator::Operation *operation,
1235  int destProcessId) {
1236  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1237  operation, destProcessId);
1238  }
1239  int Reduce(const unsigned short *sendBuffer, unsigned short *recvBuffer,
1240  vtkIdType length, vtkCommunicator::Operation *operation,
1241  int destProcessId) {
1242  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1243  operation, destProcessId);
1244  }
1245  int Reduce(const long *sendBuffer, long *recvBuffer,
1246  vtkIdType length, vtkCommunicator::Operation *operation,
1247  int destProcessId) {
1248  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1249  operation, destProcessId);
1250  }
1251  int Reduce(const unsigned long *sendBuffer, unsigned long *recvBuffer,
1252  vtkIdType length, vtkCommunicator::Operation *operation,
1253  int destProcessId) {
1254  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1255  operation, destProcessId);
1256  }
1257  int Reduce(const unsigned char *sendBuffer, unsigned char *recvBuffer,
1258  vtkIdType length, vtkCommunicator::Operation *operation,
1259  int destProcessId) {
1260  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1261  operation, destProcessId);
1262  }
1263  int Reduce(const char *sendBuffer, char *recvBuffer,
1264  vtkIdType length, vtkCommunicator::Operation *operation,
1265  int destProcessId) {
1266  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1267  operation, destProcessId);
1268  }
1269  int Reduce(const signed char *sendBuffer, signed char *recvBuffer,
1270  vtkIdType length, vtkCommunicator::Operation *operation,
1271  int destProcessId) {
1272  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1273  operation, destProcessId);
1274  }
1275  int Reduce(const float *sendBuffer, float *recvBuffer,
1276  vtkIdType length, vtkCommunicator::Operation *operation,
1277  int destProcessId) {
1278  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1279  operation, destProcessId);
1280  }
1281  int Reduce(const double *sendBuffer, double *recvBuffer,
1282  vtkIdType length, vtkCommunicator::Operation *operation,
1283  int destProcessId) {
1284  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1285  operation, destProcessId);
1286  }
1287 #ifdef VTK_USE_64BIT_IDS
1288  int Reduce(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
1289  vtkIdType length, vtkCommunicator::Operation *operation,
1290  int destProcessId) {
1291  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1292  operation, destProcessId);
1293  }
1294 #elif defined(VTK_TYPE_USE_LONG_LONG)
1295  int Reduce(const long long *sendBuffer, long long *recvBuffer,
1296  vtkIdType length, vtkCommunicator::Operation *operation,
1297  int destProcessId) {
1298  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1299  operation, destProcessId);
1300  }
1301 #endif
1302 #ifdef VTK_TYPE_USE_LONG_LONG
1303  int Reduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
1304  vtkIdType length, vtkCommunicator::Operation *operation,
1305  int destProcessId) {
1306  return this->Communicator->Reduce(sendBuffer, recvBuffer, length,
1307  operation, destProcessId);
1308  }
1309 #endif
1310  int Reduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
1311  vtkCommunicator::Operation *operation, int destProcessId) {
1312  return this->Communicator->Reduce(sendBuffer, recvBuffer,
1313  operation, destProcessId);
1314  }
1315 //ETX
1317 
1319 
1321  int AllReduce(const int *sendBuffer, int *recvBuffer,
1322  vtkIdType length, int operation) {
1323  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1324  operation);
1325  }
1326  int AllReduce(const unsigned int *sendBuffer, unsigned int *recvBuffer,
1327  vtkIdType length, int operation) {
1328  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1329  operation);
1330  }
1331  int AllReduce(const short *sendBuffer, short *recvBuffer,
1332  vtkIdType length, int operation) {
1333  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1334  operation);
1335  }
1336  int AllReduce(const unsigned short *sendBuffer, unsigned short *recvBuffer,
1337  vtkIdType length, int operation) {
1338  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1339  operation);
1340  }
1341  int AllReduce(const long *sendBuffer, long *recvBuffer,
1342  vtkIdType length, int operation) {
1343  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1344  operation);
1345  }
1346  int AllReduce(const unsigned long *sendBuffer, unsigned long *recvBuffer,
1347  vtkIdType length, int operation) {
1348  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1349  operation);
1350  }
1351  int AllReduce(const unsigned char *sendBuffer, unsigned char *recvBuffer,
1352  vtkIdType length, int operation) {
1353  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1354  operation);
1355  }
1356  int AllReduce(const char *sendBuffer, char *recvBuffer,
1357  vtkIdType length, int operation) {
1358  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1359  operation);
1360  }
1361  int AllReduce(const signed char *sendBuffer, signed char *recvBuffer,
1362  vtkIdType length, int operation) {
1363  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1364  operation);
1365  }
1366  int AllReduce(const float *sendBuffer, float *recvBuffer,
1367  vtkIdType length, int operation) {
1368  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1369  operation);
1370  }
1371  int AllReduce(const double *sendBuffer, double *recvBuffer,
1372  vtkIdType length, int operation) {
1373  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1374  operation);
1375  }
1376 #ifdef VTK_USE_64BIT_IDS
1377  int AllReduce(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
1378  vtkIdType length, int operation) {
1379  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1380  operation);
1381  }
1382 #elif defined(VTK_TYPE_USE_LONG_LONG)
1383  int AllReduce(const long long *sendBuffer, long long *recvBuffer,
1384  vtkIdType length, int operation) {
1385  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1386  operation);
1387  }
1388 #endif
1389 #ifdef VTK_TYPE_USE_LONG_LONG
1390  int AllReduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
1391  vtkIdType length, int operation) {
1392  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1393  operation);
1394  }
1395 #endif
1396  int AllReduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
1397  int operation) {
1398  return this->Communicator->AllReduce(sendBuffer, recvBuffer, operation);
1399  }
1400 //BTX
1401  int AllReduce(const int *sendBuffer, int *recvBuffer,
1402  vtkIdType length, vtkCommunicator::Operation *operation) {
1403  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1404  operation);
1405  }
1406  int AllReduce(const unsigned int *sendBuffer, unsigned int *recvBuffer,
1407  vtkIdType length, vtkCommunicator::Operation *operation) {
1408  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1409  operation);
1410  }
1411  int AllReduce(const short *sendBuffer, short *recvBuffer,
1412  vtkIdType length, vtkCommunicator::Operation *operation) {
1413  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1414  operation);
1415  }
1416  int AllReduce(const unsigned short *sendBuffer, unsigned short *recvBuffer,
1417  vtkIdType length, vtkCommunicator::Operation *operation) {
1418  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1419  operation);
1420  }
1421  int AllReduce(const long *sendBuffer, long *recvBuffer,
1422  vtkIdType length, vtkCommunicator::Operation *operation) {
1423  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1424  operation);
1425  }
1426  int AllReduce(const unsigned long *sendBuffer, unsigned long *recvBuffer,
1427  vtkIdType length, vtkCommunicator::Operation *operation) {
1428  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1429  operation);
1430  }
1431  int AllReduce(const unsigned char *sendBuffer, unsigned char *recvBuffer,
1432  vtkIdType length, vtkCommunicator::Operation *operation) {
1433  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1434  operation);
1435  }
1436  int AllReduce(const char *sendBuffer, char *recvBuffer,
1437  vtkIdType length, vtkCommunicator::Operation *operation) {
1438  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1439  operation);
1440  }
1441  int AllReduce(const signed char *sendBuffer, signed char *recvBuffer,
1442  vtkIdType length, vtkCommunicator::Operation *operation) {
1443  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1444  operation);
1445  }
1446  int AllReduce(const float *sendBuffer, float *recvBuffer,
1447  vtkIdType length, vtkCommunicator::Operation *operation) {
1448  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1449  operation);
1450  }
1451  int AllReduce(const double *sendBuffer, double *recvBuffer,
1452  vtkIdType length, vtkCommunicator::Operation *operation) {
1453  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1454  operation);
1455  }
1456 #ifdef VTK_USE_64BIT_IDS
1457  int AllReduce(const vtkIdType *sendBuffer, vtkIdType *recvBuffer,
1458  vtkIdType length, vtkCommunicator::Operation *operation) {
1459  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1460  operation);
1461  }
1462 #elif defined(VTK_TYPE_USE_LONG_LONG)
1463  int AllReduce(const long long *sendBuffer, long long *recvBuffer,
1464  vtkIdType length, vtkCommunicator::Operation *operation) {
1465  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1466  operation);
1467  }
1468 #endif
1469 #ifdef VTK_TYPE_USE_LONG_LONG
1470  int AllReduce(const unsigned long long *sendBuffer, unsigned long long *recvBuffer,
1471  vtkIdType length, vtkCommunicator::Operation *operation) {
1472  return this->Communicator->AllReduce(sendBuffer, recvBuffer, length,
1473  operation);
1474  }
1475 #endif
1476  int AllReduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer,
1477  vtkCommunicator::Operation *operation) {
1478  return this->Communicator->AllReduce(sendBuffer, recvBuffer, operation);
1479  }
1480 //ETX
1482 
1483 // Internally implemented RMI to break the process loop.
1484 
1485 protected:
1488 
1490 
1493  virtual void TriggerRMIInternal(int remoteProcessId,
1494  void* arg, int argLength, int rmiTag, bool propagate);
1496 
1498  void *SingleData;
1499 
1500  void GetMultipleMethod(int index, vtkProcessFunctionType &func, void *&data);
1501 
1502  // This is a flag that can be used by the ports to break
1503  // their update loop. (same as ProcessRMIs)
1505 
1506  void ProcessRMI(int remoteProcessId, void *arg, int argLength, int rmiTag);
1507 
1508  // This method implements "GetGlobalController".
1509  // It needs to be virtual and static.
1510  virtual vtkMultiProcessController *GetLocalController();
1511 
1512 
1513  // This flag can force deep copies during send.
1515 
1516  // This flag can be used to indicate that an MPI Broadcast will be used
1517  // when calling TriggerRMIOnAllChildren(), instead of the binary tree
1518  // propagation of the data to the sattelite ranks from rank 0.
1520 
1522 
1523  // Note that since the communicators can be created differently
1524  // depending on the type of controller, the subclasses are
1525  // responsible of deleting them.
1527 
1528  // Communicator which is a copy of the current user
1529  // level communicator except the context; i.e. even if the tags
1530  // are the same, the RMI messages will not interfere with user
1531  // level messages.
1532  // Note that since the communicators can be created differently
1533  // depending on the type of controller, the subclasses are
1534  // responsible of deleting them.
1536 
1537 private:
1538  vtkMultiProcessController(const vtkMultiProcessController&); // Not implemented.
1539  void operator=(const vtkMultiProcessController&); // Not implemented.
1540 
1541  unsigned long RMICount;
1542 
1543 //BTX
1544  class vtkInternal;
1545  vtkInternal *Internal;
1546 //ETX
1547 };
1548 
1549 
1551  int remoteProcessId, int tag)
1552 {
1553  if (this->Communicator)
1554  {
1555  return this->Communicator->Send(data, remoteProcessId, tag);
1556  }
1557  else
1558  {
1559  return 0;
1560  }
1561 }
1562 
1564  int remoteProcessId, int tag)
1565 {
1566  if (this->Communicator)
1567  {
1568  return this->Communicator->Send(data, remoteProcessId, tag);
1569  }
1570  else
1571  {
1572  return 0;
1573  }
1574 }
1575 
1576 inline int vtkMultiProcessController::Send(const int* data, vtkIdType length,
1577  int remoteProcessId, int tag)
1578 {
1579  if (this->Communicator)
1580  {
1581  return this->Communicator->Send(data, length, remoteProcessId, tag);
1582  }
1583  else
1584  {
1585  return 0;
1586  }
1587 }
1588 
1589 inline int vtkMultiProcessController::Send(const short* data, vtkIdType length,
1590  int remoteProcessId, int tag)
1591 {
1592  if (this->Communicator)
1593  {
1594  return this->Communicator->Send(data, length, remoteProcessId, tag);
1595  }
1596  else
1597  {
1598  return 0;
1599  }
1600 }
1601 
1602 inline int vtkMultiProcessController::Send(const unsigned short* data, vtkIdType length,
1603  int remoteProcessId, int tag)
1604 {
1605  if (this->Communicator)
1606  {
1607  return this->Communicator->Send(data, length, remoteProcessId, tag);
1608  }
1609  else
1610  {
1611  return 0;
1612  }
1613 }
1614 
1615 inline int vtkMultiProcessController::Send(const unsigned int* data, vtkIdType length,
1616  int remoteProcessId, int tag)
1617 {
1618  if (this->Communicator)
1619  {
1620  return this->Communicator->Send(data, length, remoteProcessId, tag);
1621  }
1622  else
1623  {
1624  return 0;
1625  }
1626 }
1627 
1628 inline int vtkMultiProcessController::Send(const unsigned long* data,
1629  vtkIdType length,
1630  int remoteProcessId,
1631  int tag)
1632 {
1633  if (this->Communicator)
1634  {
1635  return this->Communicator->Send(data, length, remoteProcessId, tag);
1636  }
1637  else
1638  {
1639  return 0;
1640  }
1641 }
1642 
1643 inline int vtkMultiProcessController::Send(const long* data,
1644  vtkIdType length,
1645  int remoteProcessId,
1646  int tag)
1647 {
1648  if (this->Communicator)
1649  {
1650  return this->Communicator->Send(data, length, remoteProcessId, tag);
1651  }
1652  else
1653  {
1654  return 0;
1655  }
1656 }
1657 
1658 inline int vtkMultiProcessController::Send(const signed char* data, vtkIdType length,
1659  int remoteProcessId, int tag)
1660 {
1661  if (this->Communicator)
1662  {
1663  return this->Communicator->Send(data, length, remoteProcessId, tag);
1664  }
1665  else
1666  {
1667  return 0;
1668  }
1669 }
1670 
1671 inline int vtkMultiProcessController::Send(const char* data, vtkIdType length,
1672  int remoteProcessId, int tag)
1673 {
1674  if (this->Communicator)
1675  {
1676  return this->Communicator->Send(data, length, remoteProcessId, tag);
1677  }
1678  else
1679  {
1680  return 0;
1681  }
1682 }
1683 
1684 inline int vtkMultiProcessController::Send(const unsigned char* data,
1685  vtkIdType length,
1686  int remoteProcessId, int tag)
1687 {
1688  if (this->Communicator)
1689  {
1690  return this->Communicator->Send(data, length, remoteProcessId, tag);
1691  }
1692  else
1693  {
1694  return 0;
1695  }
1696 }
1697 
1698 inline int vtkMultiProcessController::Send(const float* data, vtkIdType length,
1699  int remoteProcessId, int tag)
1700 {
1701  if (this->Communicator)
1702  {
1703  return this->Communicator->Send(data, length, remoteProcessId, tag);
1704  }
1705  else
1706  {
1707  return 0;
1708  }
1709 }
1710 
1711 inline int vtkMultiProcessController::Send(const double* data, vtkIdType length,
1712  int remoteProcessId, int tag)
1713 {
1714  if (this->Communicator)
1715  {
1716  return this->Communicator->Send(data, length, remoteProcessId, tag);
1717  }
1718  else
1719  {
1720  return 0;
1721  }
1722 }
1723 
1724 #ifdef VTK_USE_64BIT_IDS
1725 inline int vtkMultiProcessController::Send(const vtkIdType* data,
1726  vtkIdType length,
1727  int remoteProcessId, int tag)
1728 {
1729  if (this->Communicator)
1730  {
1731  return this->Communicator->Send(data, length, remoteProcessId, tag);
1732  }
1733  else
1734  {
1735  return 0;
1736  }
1737 }
1738 #elif defined(VTK_TYPE_USE_LONG_LONG)
1739 inline int vtkMultiProcessController::Send(const long long* data,
1740  vtkIdType length,
1741  int remoteProcessId, int tag)
1742 {
1743  if (this->Communicator)
1744  {
1745  return this->Communicator->Send(data, length, remoteProcessId, tag);
1746  }
1747  else
1748  {
1749  return 0;
1750  }
1751 }
1752 #endif
1753 #ifdef VTK_TYPE_USE_LONG_LONG
1754 
1755 inline int vtkMultiProcessController::Send(const unsigned long long* data,
1756  vtkIdType length,
1757  int remoteProcessId, int tag)
1758 {
1759  if (this->Communicator)
1760  {
1761  return this->Communicator->Send(data, length, remoteProcessId, tag);
1762  }
1763  else
1764  {
1765  return 0;
1766  }
1767 }
1768 
1769 #endif
1770 
1772  int remoteId, int tag)
1773 {
1774  if (this->Communicator)
1775  {
1776  return this->Communicator->Send(stream, remoteId, tag);
1777  }
1778  return 0;
1779 }
1780 
1782  int remoteProcessId, int tag)
1783 {
1784  if (this->Communicator)
1785  {
1786  return this->Communicator->Receive(data, remoteProcessId, tag);
1787  }
1788  else
1789  {
1790  return 0;
1791  }
1792 }
1793 
1795  int remoteProcessId, int tag)
1796 {
1797  if (this->Communicator)
1798  {
1799  return this->Communicator->ReceiveDataObject(remoteProcessId, tag);
1800  }
1801  else
1802  {
1803  return 0;
1804  }
1805 }
1806 
1808  int remoteProcessId, int tag)
1809 {
1810  if (this->Communicator)
1811  {
1812  return this->Communicator->Receive(data, remoteProcessId, tag);
1813  }
1814  else
1815  {
1816  return 0;
1817  }
1818 }
1819 
1820 inline int vtkMultiProcessController::Receive(int* data, vtkIdType length,
1821  int remoteProcessId, int tag)
1822 {
1823  if (this->Communicator)
1824  {
1825  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1826  }
1827  else
1828  {
1829  return 0;
1830  }
1831 }
1832 
1833 inline int vtkMultiProcessController::Receive(unsigned int* data, vtkIdType length,
1834  int remoteProcessId, int tag)
1835 {
1836  if (this->Communicator)
1837  {
1838  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1839  }
1840  else
1841  {
1842  return 0;
1843  }
1844 }
1845 
1846 inline int vtkMultiProcessController::Receive(short* data, vtkIdType length,
1847  int remoteProcessId, int tag)
1848 {
1849  if (this->Communicator)
1850  {
1851  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1852  }
1853  else
1854  {
1855  return 0;
1856  }
1857 }
1858 
1859 inline int vtkMultiProcessController::Receive(unsigned short* data, vtkIdType length,
1860  int remoteProcessId, int tag)
1861 {
1862  if (this->Communicator)
1863  {
1864  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1865  }
1866  else
1867  {
1868  return 0;
1869  }
1870 }
1871 
1872 inline int vtkMultiProcessController::Receive(long* data, vtkIdType length,
1873  int remoteProcessId, int tag)
1874 {
1875  if (this->Communicator)
1876  {
1877  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1878  }
1879  else
1880  {
1881  return 0;
1882  }
1883 }
1884 
1885 
1886 inline int vtkMultiProcessController::Receive(unsigned long* data,
1887  vtkIdType length,
1888  int remoteProcessId,
1889  int tag)
1890 {
1891  if (this->Communicator)
1892  {
1893  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1894  }
1895  else
1896  {
1897  return 0;
1898  }
1899 }
1900 
1901 inline int vtkMultiProcessController::Receive(char* data, vtkIdType length,
1902  int remoteProcessId, int tag)
1903 {
1904  if (this->Communicator)
1905  {
1906  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1907  }
1908  else
1909  {
1910  return 0;
1911  }
1912 }
1913 
1914 inline int vtkMultiProcessController::Receive(unsigned char* data,
1915  vtkIdType length,
1916  int remoteProcessId, int tag)
1917 {
1918  if (this->Communicator)
1919  {
1920  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1921  }
1922  else
1923  {
1924  return 0;
1925  }
1926 }
1927 
1928 inline int vtkMultiProcessController::Receive(signed char* data, vtkIdType length,
1929  int remoteProcessId, int tag)
1930 {
1931  if (this->Communicator)
1932  {
1933  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1934  }
1935  else
1936  {
1937  return 0;
1938  }
1939 }
1940 
1941 
1942 inline int vtkMultiProcessController::Receive(float* data, vtkIdType length,
1943  int remoteProcessId, int tag)
1944 {
1945  if (this->Communicator)
1946  {
1947  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1948  }
1949  else
1950  {
1951  return 0;
1952  }
1953 }
1954 
1955 inline int vtkMultiProcessController::Receive(double* data, vtkIdType length,
1956  int remoteProcessId, int tag)
1957 {
1958  if (this->Communicator)
1959  {
1960  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1961  }
1962  else
1963  {
1964  return 0;
1965  }
1966 }
1967 
1968 #ifdef VTK_USE_64BIT_IDS
1970  vtkIdType length,
1971  int remoteProcessId, int tag)
1972 {
1973  if (this->Communicator)
1974  {
1975  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1976  }
1977  else
1978  {
1979  return 0;
1980  }
1981 }
1982 #elif defined(VTK_TYPE_USE_LONG_LONG)
1983 inline int vtkMultiProcessController::Receive(long long* data, vtkIdType length,
1984  int remoteProcessId, int tag)
1985 {
1986  if (this->Communicator)
1987  {
1988  return this->Communicator->Receive(data, length, remoteProcessId, tag);
1989  }
1990  else
1991  {
1992  return 0;
1993  }
1994 }
1995 #endif
1996 
1997 #ifdef VTK_TYPE_USE_LONG_LONG
1998 inline int vtkMultiProcessController::Receive(unsigned long long* data, vtkIdType length,
1999  int remoteProcessId, int tag)
2000 {
2001  if (this->Communicator)
2002  {
2003  return this->Communicator->Receive(data, length, remoteProcessId, tag);
2004  }
2005  else
2006  {
2007  return 0;
2008  }
2009 }
2010 #endif
2011 
2012 
2014  int remoteId, int tag)
2015 {
2016  if (this->Communicator)
2017  {
2018  return this->Communicator->Receive(stream, remoteId, tag);
2019  }
2020  return 0;
2021 }
2022 
2024 {
2025  if (this->Communicator)
2026  {
2027  this->Communicator->Barrier();
2028  }
2029 }
2030 
2032 {
2033  if (this->Communicator)
2034  {
2035  return this->Communicator->GetCount();
2036  }
2037  return 0;
2038 }
2039 
2040 #endif
int AllGather(const float *sendBuffer, float *recvBuffer, vtkIdType length)
int Scatter(const int *sendBuffer, int *recvBuffer, vtkIdType length, int srcProcessId)
void TriggerRMI(int remoteProcessId, int tag)
void(* vtkProcessFunctionType)(vtkMultiProcessController *controller, void *userData)
int Broadcast(short *data, vtkIdType length, int srcProcessId)
int Reduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Reduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Send(vtkDataObject *data, int remoteHandle, int tag)
int Scatter(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int srcProcessId)
int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdType *recvLengths, vtkIdType *offsets)
int ScatterV(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int Reduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, int operation, int destProcessId)
int AllReduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int Reduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int Reduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int operation, int destProcessId)
abstract base class for most VTK objects
Definition: vtkObject.h:61
int Gather(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int destProcessId)
int AllGather(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length)
int AllGatherV(const double *sendBuffer, double *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int Scatter(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int srcProcessId)
int Reduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int AllReduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, int operation)
int Scatter(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int srcProcessId)
int Reduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, int operation, int destProcessId)
int AllGather(const long *sendBuffer, long *recvBuffer, vtkIdType length)
int GatherV(const int *sendBuffer, int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
stream used to pass data across processes using vtkMultiProcessController.
int Reduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
void TriggerRMIOnAllChildren(const char *arg, int tag)
int ScatterV(const double *sendBuffer, double *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
#define VTKPARALLELCORE_EXPORT
int Scatter(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int srcProcessId)
abstract class to specify dataset behavior
Definition: vtkDataSet.h:61
int AllGatherV(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int AllReduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, int operation)
int GatherV(vtkDataObject *sendData, vtkSmartPointer< vtkDataObject > *recvData, int destProcessId)
int AllGatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer)
int Gather(const long *sendBuffer, long *recvBuffer, vtkIdType length, int destProcessId)
int AllReduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkCommunicator::Operation *operation)
a process that can be launched by a vtkMultiProcessController
Definition: vtkProcess.h:48
int GatherV(const double *sendBuffer, double *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int AllReduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, int operation)
int Reduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int ScatterV(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int Gather(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int destProcessId)
int AllGatherV(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int Reduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Broadcast(int *data, vtkIdType length, int srcProcessId)
int AllReduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int AllGather(const short *sendBuffer, short *recvBuffer, vtkIdType length)
int AllReduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int operation)
dynamic, self-adjusting array of vtkIdType
int AllReduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int operation)
int AllGather(const double *sendBuffer, double *recvBuffer, vtkIdType length)
int AllGather(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length)
int vtkIdType
Definition: vtkType.h:275
int ScatterV(const char *sendBuffer, char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int Gather(const short *sendBuffer, short *recvBuffer, vtkIdType length, int destProcessId)
int AllReduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, int operation)
int Reduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int AllReduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int Receive(vtkDataObject *data, int remoteHandle, int tag)
int Broadcast(vtkMultiProcessStream &stream, int srcProcessId)
int Reduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int Scatter(const short *sendBuffer, short *recvBuffer, vtkIdType length, int srcProcessId)
int ScatterV(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int AllGather(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length)
int AllGather(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length)
int Reduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int AllGatherV(const int *sendBuffer, int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int Gather(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int destProcessId)
int AllReduce(const long *sendBuffer, long *recvBuffer, vtkIdType length, int operation)
int Broadcast(char *data, vtkIdType length, int srcProcessId)
int AllReduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int Scatter(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int srcProcessId)
vtkDataObject * ReceiveDataObject(int remoteHandle, int tag)
int Gather(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int destProcessId)
int AllReduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
void(* vtkRMIFunctionType)(void *localArg, void *remoteArg, int remoteArgLength, int remoteProcessId)
int Gather(const float *sendBuffer, float *recvBuffer, vtkIdType length, int destProcessId)
int Reduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int operation, int destProcessId)
void TriggerRMI(int remoteProcessId, const char *arg, int tag)
virtual void PrintSelf(ostream &os, vtkIndent indent)
int Reduce(const int *sendBuffer, int *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int AllReduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int Broadcast(float *data, vtkIdType length, int srcProcessId)
a simple class to control print indentation
Definition: vtkIndent.h:38
int GatherV(const short *sendBuffer, short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int AllReduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int operation)
int AllReduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int operation)
topologically and geometrically regular array of data
Definition: vtkImageData.h:44
virtual void RemoveRMI(vtkRMIFunctionType f, void *arg, int tag)
virtual vtkIdType GetCount()
abstract superclass for arrays of numeric data
Definition: vtkDataArray.h:54
A subgroup of processes from a communicator.
int AllReduce(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int AllGatherV(const long *sendBuffer, long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int Broadcast(vtkDataObject *data, int srcProcessId)
int Reduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
vtkDataObject * ReceiveDataObject(int remoteId, int tag)
int GatherV(const char *sendBuffer, char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int AllReduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int AllGather(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer)
int AllGather(const int *sendBuffer, int *recvBuffer, vtkIdType length)
int GatherV(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int ScatterV(const short *sendBuffer, short *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int Broadcast(unsigned int *data, vtkIdType length, int srcProcessId)
int GatherV(const long *sendBuffer, long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
base class for writing debug output to a console
int AllGatherV(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int AllReduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int operation)
int AllReduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int Broadcast(unsigned char *data, vtkIdType length, int srcProcessId)
int Reduce(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkCommunicator::Operation *operation, int destProcessId)
int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdTypeArray *recvLengths, vtkIdTypeArray *offsets, int destProcessId)
int GatherV(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int AllReduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, int operation)
int AllGatherV(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int AllReduce(const short *sendBuffer, short *recvBuffer, vtkIdType length, int operation)
int Reduce(const double *sendBuffer, double *recvBuffer, vtkIdType length, int operation, int destProcessId)
virtual void Barrier()
int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int GatherV(const float *sendBuffer, float *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int ScatterV(const float *sendBuffer, float *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int ScatterV(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int Send(const int *data, vtkIdType length, int remoteProcessId, int tag)
create and manipulate unsorted lists of objects
Definition: vtkCollection.h:52
int Scatter(const float *sendBuffer, float *recvBuffer, vtkIdType length, int srcProcessId)
int Gather(const double *sendBuffer, double *recvBuffer, vtkIdType length, int destProcessId)
int AllGatherV(const float *sendBuffer, float *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int Reduce(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int Broadcast(vtkDataArray *data, int srcProcessId)
int Receive(int *data, vtkIdType maxlength, int remoteProcessId, int tag)
int Reduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Broadcast(double *data, vtkIdType length, int srcProcessId)
int AllGather(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length)
int Broadcast(signed char *data, vtkIdType length, int srcProcessId)
int Reduce(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Reduce(const unsigned long *sendBuffer, unsigned long *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Gather(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, int destProcessId)
int Broadcast(unsigned long *data, vtkIdType length, int srcProcessId)
int Reduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation, int destProcessId)
int Broadcast(unsigned short *data, vtkIdType length, int srcProcessId)
int Scatter(const char *sendBuffer, char *recvBuffer, vtkIdType length, int srcProcessId)
int AllGatherV(const char *sendBuffer, char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int GatherV(const unsigned int *sendBuffer, unsigned int *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int AllGatherV(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int Reduce(const char *sendBuffer, char *recvBuffer, vtkIdType length, int operation, int destProcessId)
int Scatter(const double *sendBuffer, double *recvBuffer, vtkIdType length, int srcProcessId)
int ScatterV(const long *sendBuffer, long *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
Used to send/receive messages in a multiprocess environment.
general representation of visualization data
Definition: vtkDataObject.h:64
int Gather(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int destProcessId)
int ScatterV(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int AllGatherV(const short *sendBuffer, short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets)
int AllReduce(const float *sendBuffer, float *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int Broadcast(long *data, vtkIdType length, int srcProcessId)
int Gather(const int *sendBuffer, int *recvBuffer, vtkIdType length, int destProcessId)
int Scatter(const signed char *sendBuffer, signed char *recvBuffer, vtkIdType length, int srcProcessId)
int GatherV(const unsigned short *sendBuffer, unsigned short *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int GatherV(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType sendLength, vtkIdType *recvLengths, vtkIdType *offsets, int destProcessId)
int AllReduce(const unsigned char *sendBuffer, unsigned char *recvBuffer, vtkIdType length, vtkCommunicator::Operation *operation)
int GatherV(vtkDataArray *sendBuffer, vtkDataArray *recvBuffer, int destProcessId)
int Scatter(const long *sendBuffer, long *recvBuffer, vtkIdType length, int srcProcessId)
int ScatterV(const int *sendBuffer, int *recvBuffer, vtkIdType *sendLengths, vtkIdType *offsets, vtkIdType recvLength, int srcProcessId)
int Gather(const char *sendBuffer, char *recvBuffer, vtkIdType length, int destProcessId)
int AllGather(const char *sendBuffer, char *recvBuffer, vtkIdType length)
Multiprocessing communication superclass.