-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmpiRaw.nim
2388 lines (2052 loc) · 155 KB
/
mpiRaw.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
const hmpi = "mpi.h"
{.passC: "-I/usr/include/mpich -L/usr/lib/i386-linux-gnu".}
{.passL: "-Bsymbolic-functions -z,relro" &
"-I/usr/include/mpich -L/usr/lib/i386-linux-gnu -lmpich".}
type
int8_t* = cchar
int16_t* = cshort
int32_t* = cint
int64_t* = clonglong
uint8_t* = cuchar
uint16_t* = cushort
uint32_t* = cuint
uint64_t* = culonglong
int_least8_t* = cchar
int_least16_t* = cshort
int_least32_t* = cint
int_least64_t* = clonglong
uint_least8_t* = cuchar
uint_least16_t* = cushort
uint_least32_t* = cuint
uint_least64_t* = culonglong
int_fast8_t* = cchar
int_fast16_t* = cint
int_fast32_t* = cint
int_fast64_t* = clonglong
uint_fast8_t* = cuchar
uint_fast16_t* = cuint
uint_fast32_t* = cuint
uint_fast64_t* = culonglong
intptr_t* = cint
uintptr_t* = cuint
intmax_t* = clonglong
uintmax_t* = culonglong
MPI_Request* = cint
MPI_Message* = cint
MPI_User_function* = proc (a2: pointer; a3: pointer; a4: ptr cint; a5: ptr MPI_Datatype)
MPI_Copy_function* = proc (a2: MPI_Comm; a3: cint; a4: pointer; a5: pointer; a6: pointer;
a7: ptr cint): cint
MPI_Delete_function* = proc (a2: MPI_Comm; a3: cint; a4: pointer; a5: pointer): cint
MPI_Datatype* = cint
MPI_Comm* = cint
MPI_Group* = cint
MPI_Win* = cint
MPI_File* = pointer
MPI_Op* = cint
MPI_Errhandler* = cint
const MPI_COMM_NULL*: MPI_Comm = (cast[MPI_Comm](0x04000000))
const MPI_OP_NULL*: MPI_Op = (cast[MPI_Op](0x18000000))
const MPI_GROUP_NULL*: MPI_Group = (cast[MPI_Group](0x08000000))
const MPI_DATATYPE_NULL*: MPI_Datatype = (cast[MPI_Datatype](0x0C000000))
const MPI_REQUEST_NULL*: MPI_Request = (cast[MPI_Request](0x2C000000))
const MPI_ERRHANDLER_NULL*: MPI_Errhandler = (cast[MPI_Errhandler](0x14000000))
const MPI_MESSAGE_NULL*: MPI_Message = (cast[MPI_Message](0x2C000000))
const MPI_MESSAGE_NO_PROC*: MPI_Message = (cast[MPI_Message](0x6C000000))
const MPI_IDENT*: cint = 0
const MPI_CONGRUENT*: cint = 1
const MPI_SIMILAR*: cint = 2
const MPI_UNEQUAL*: cint = 3
const MPI_CHAR*: MPI_Datatype = (cast[MPI_Datatype](0x4C000101))
const MPI_SIGNED_CHAR*: MPI_Datatype = (cast[MPI_Datatype](0x4C000118))
const MPI_UNSIGNED_CHAR*: MPI_Datatype = (cast[MPI_Datatype](0x4C000102))
const MPI_BYTE*: MPI_Datatype = (cast[MPI_Datatype](0x4C00010D))
const MPI_WCHAR*: MPI_Datatype = (cast[MPI_Datatype](0x4C00040E))
const MPI_SHORT*: MPI_Datatype = (cast[MPI_Datatype](0x4C000203))
const MPI_UNSIGNED_SHORT*: MPI_Datatype = (cast[MPI_Datatype](0x4C000204))
const MPI_INT*: MPI_Datatype = (cast[MPI_Datatype](0x4C000405))
const MPI_UNSIGNED*: MPI_Datatype = (cast[MPI_Datatype](0x4C000406))
const MPI_LONG*: MPI_Datatype = (cast[MPI_Datatype](0x4C000407))
const MPI_UNSIGNED_LONG*: MPI_Datatype = (cast[MPI_Datatype](0x4C000408))
const MPI_FLOAT*: MPI_Datatype = (cast[MPI_Datatype](0x4C00040A))
const MPI_DOUBLE*: MPI_Datatype = (cast[MPI_Datatype](0x4C00080B))
const MPI_LONG_DOUBLE*: MPI_Datatype = (cast[MPI_Datatype](0x4C000C0C))
const MPI_LONG_LONG_INT*: MPI_Datatype = (cast[MPI_Datatype](0x4C000809))
const MPI_UNSIGNED_LONG_LONG*: MPI_Datatype = (cast[MPI_Datatype](0x4C000819))
const MPI_LONG_LONG*: MPI_Datatype = MPI_LONG_LONG_INT
const MPI_PACKED*: MPI_Datatype = (cast[MPI_Datatype](0x4C00010F))
const MPI_LB*: MPI_Datatype = (cast[MPI_Datatype](0x4C000010))
const MPI_UB*: MPI_Datatype = (cast[MPI_Datatype](0x4C000011))
const MPI_FLOAT_INT*: MPI_Datatype = (cast[MPI_Datatype](0x8C000000.toU32))
const MPI_DOUBLE_INT*: MPI_Datatype = (cast[MPI_Datatype](0x8C000001.toU32))
const MPI_LONG_INT*: MPI_Datatype = (cast[MPI_Datatype](0x8C000002.toU32))
const MPI_SHORT_INT*: MPI_Datatype = (cast[MPI_Datatype](0x8C000003.toU32))
const MPI_2INT*: MPI_Datatype = (cast[MPI_Datatype](0x4C000816))
const MPI_LONG_DOUBLE_INT*: MPI_Datatype = (cast[MPI_Datatype](0x8C000004.toU32))
const MPI_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](1275070494))
const MPI_DOUBLE_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](1275072546))
const MPI_LOGICAL*: MPI_Datatype = (cast[MPI_Datatype](1275069469))
const MPI_REAL*: MPI_Datatype = (cast[MPI_Datatype](1275069468))
const MPI_DOUBLE_PRECISION*: MPI_Datatype = (cast[MPI_Datatype](1275070495))
const MPI_INTEGER*: MPI_Datatype = (cast[MPI_Datatype](1275069467))
const MPI_2INTEGER*: MPI_Datatype = (cast[MPI_Datatype](1275070496))
const MPI_2REAL*: MPI_Datatype = (cast[MPI_Datatype](1275070497))
const MPI_2DOUBLE_PRECISION*: MPI_Datatype = (cast[MPI_Datatype](1275072547))
const MPI_CHARACTER*: MPI_Datatype = (cast[MPI_Datatype](1275068698))
const MPI_REAL4*: MPI_Datatype = (cast[MPI_Datatype](0x4C000427))
const MPI_REAL8*: MPI_Datatype = (cast[MPI_Datatype](0x4C000829))
const MPI_REAL16*: MPI_Datatype = (cast[MPI_Datatype](MPI_DATATYPE_NULL))
const MPI_COMPLEX8*: MPI_Datatype = (cast[MPI_Datatype](0x4C000828))
const MPI_COMPLEX16*: MPI_Datatype = (cast[MPI_Datatype](0x4C00102A))
const MPI_COMPLEX32*: MPI_Datatype = (cast[MPI_Datatype](MPI_DATATYPE_NULL))
const MPI_INTEGER1*: MPI_Datatype = (cast[MPI_Datatype](0x4C00012D))
const MPI_INTEGER2*: MPI_Datatype = (cast[MPI_Datatype](0x4C00022F))
const MPI_INTEGER4*: MPI_Datatype = (cast[MPI_Datatype](0x4C000430))
const MPI_INTEGER8*: MPI_Datatype = (cast[MPI_Datatype](0x4C000831))
const MPI_INTEGER16*: MPI_Datatype = (cast[MPI_Datatype](MPI_DATATYPE_NULL))
const MPI_INT8_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C000137))
const MPI_INT16_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C000238))
const MPI_INT32_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C000439))
const MPI_INT64_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C00083A))
const MPI_UINT8_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C00013B))
const MPI_UINT16_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C00023C))
const MPI_UINT32_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C00043D))
const MPI_UINT64_T*: MPI_Datatype = (cast[MPI_Datatype](0x4C00083E))
const MPI_C_BOOL*: MPI_Datatype = (cast[MPI_Datatype](0x4C00013F))
const MPI_C_FLOAT_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](0x4C000840))
const MPI_C_COMPLEX*: MPI_Datatype = MPI_C_FLOAT_COMPLEX
const MPI_C_DOUBLE_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](0x4C001041))
const MPI_C_LONG_DOUBLE_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](0x4C001842))
const MPI_AINT_DATATYPE*: MPI_Datatype = (cast[MPI_Datatype](0x4C000443))
const MPI_OFFSET_DATATYPE*: MPI_Datatype = (cast[MPI_Datatype](0x4C000844))
const MPI_COUNT_DATATYPE*: MPI_Datatype = (cast[MPI_Datatype](0x4C000845))
const MPI_CXX_BOOL*: MPI_Datatype = (cast[MPI_Datatype](0x4C000133))
const MPI_CXX_FLOAT_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](0x4C000834))
const MPI_CXX_DOUBLE_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](0x4C001035))
const MPI_CXX_LONG_DOUBLE_COMPLEX*: MPI_Datatype = (cast[MPI_Datatype](0x4C001836))
const MPI_TYPECLASS_REAL*: cint = 1
const MPI_TYPECLASS_INTEGER*: cint = 2
const MPI_TYPECLASS_COMPLEX*: cint = 3
const MPI_COMM_WORLD*: MPI_Comm = (cast[MPI_Comm](0x44000000))
const MPI_COMM_SELF*: MPI_Comm = (cast[MPI_Comm](0x44000001))
const MPI_GROUP_EMPTY*: MPI_Group = (cast[MPI_Group](0x48000000))
const MPI_WIN_NULL*: MPI_Win = (cast[MPI_Win](0x20000000))
const MPI_MAX*: MPI_Op = cast[MPI_Op](0x58000001)
const MPI_MIN*: MPI_Op = cast[MPI_Op](0x58000002)
const MPI_SUM*: MPI_Op = cast[MPI_Op](0x58000003)
const MPI_PROD*: MPI_Op = cast[MPI_Op](0x58000004)
const MPI_LAND*: MPI_Op = cast[MPI_Op](0x58000005)
const MPI_BAND*: MPI_Op = cast[MPI_Op](0x58000006)
const MPI_LOR*: MPI_Op = cast[MPI_Op](0x58000007)
const MPI_BOR*: MPI_Op = cast[MPI_Op](0x58000008)
const MPI_LXOR*: MPI_Op = cast[MPI_Op](0x58000009)
const MPI_BXOR*: MPI_Op = cast[MPI_Op](0x5800000A)
const MPI_MINLOC*: MPI_Op = cast[MPI_Op](0x5800000B)
const MPI_MAXLOC*: MPI_Op = cast[MPI_Op](0x5800000C)
const MPI_REPLACE*: MPI_Op = cast[MPI_Op](0x5800000D)
const MPI_NO_OP*: MPI_Op = cast[MPI_Op](0x5800000E)
const MPI_TAG_UB*: cint = 0x64400001
const MPI_HOST*: cint = 0x64400003
const MPI_IO*: cint = 0x64400005
const MPI_WTIME_IS_GLOBAL*: cint = 0x64400007
const MPI_UNIVERSE_SIZE*: cint = 0x64400009
const MPI_LASTUSEDCODE*: cint = 0x6440000B
const MPI_APPNUM*: cint = 0x6440000D
const MPI_WIN_BASE*: cint = 0x66000001
const MPI_WIN_SIZE*: cint = 0x66000003
const MPI_WIN_DISP_UNIT*: cint = 0x66000005
const MPI_WIN_CREATE_FLAVOR*: cint = 0x66000007
const MPI_WIN_MODEL*: cint = 0x66000009
const MPI_MAX_PROCESSOR_NAME*: cint = 128
const MPI_MAX_LIBRARY_VERSION_STRING*: cint = 8192
const MPI_MAX_ERROR_STRING*: cint = 512
const MPI_MAX_PORT_NAME*: cint = 256
const MPI_MAX_OBJECT_NAME*: cint = 128
const MPI_UNDEFINED*: cint = (-32766)
const MPI_KEYVAL_INVALID*: cint = 0x24000000
type
MPIR_Win_flavor_t* = enum
MPI_WIN_FLAVOR_CREATE = 1, MPI_WIN_FLAVOR_ALLOCATE = 2,
MPI_WIN_FLAVOR_DYNAMIC = 3, MPI_WIN_FLAVOR_SHARED = 4
MPIR_Win_model_t* = enum
MPI_WIN_SEPARATE = 1, MPI_WIN_UNIFIED = 2
const MPI_BSEND_OVERHEAD*: cint = 56
type
MPIR_Topo_type* = enum
MPI_GRAPH = 1, MPI_CART = 2, MPI_DIST_GRAPH = 3
const MPI_BOTTOM*: pointer = cast[pointer](0)
var MPI_UNWEIGHTED*: ptr cint
var MPI_WEIGHTS_EMPTY*: ptr cint
const MPI_PROC_NULL*: cint = (-1)
const MPI_ANY_SOURCE*: cint = (-2)
const MPI_ROOT*: cint = (-3)
const MPI_ANY_TAG*: cint = (-1)
const MPI_LOCK_EXCLUSIVE*: cint = 234
const MPI_LOCK_SHARED*: cint = 235
type
MPI_Handler_function* = proc (a2: ptr MPI_Comm; a3: ptr cint) {.varargs.}
MPI_Comm_copy_attr_function* = proc (a2: MPI_Comm; a3: cint; a4: pointer; a5: pointer;
a6: pointer; a7: ptr cint): cint
MPI_Comm_delete_attr_function* = proc (a2: MPI_Comm; a3: cint; a4: pointer; a5: pointer): cint
MPI_Type_copy_attr_function* = proc (a2: MPI_Datatype; a3: cint; a4: pointer;
a5: pointer; a6: pointer; a7: ptr cint): cint
MPI_Type_delete_attr_function* = proc (a2: MPI_Datatype; a3: cint; a4: pointer;
a5: pointer): cint
MPI_Win_copy_attr_function* = proc (a2: MPI_Win; a3: cint; a4: pointer; a5: pointer;
a6: pointer; a7: ptr cint): cint
MPI_Win_delete_attr_function* = proc (a2: MPI_Win; a3: cint; a4: pointer; a5: pointer): cint
MPI_Comm_errhandler_function* = proc (a2: ptr MPI_Comm; a3: ptr cint) {.varargs.}
MPI_File_errhandler_function* = proc (a2: ptr MPI_File; a3: ptr cint) {.varargs.}
MPI_Win_errhandler_function* = proc (a2: ptr MPI_Win; a3: ptr cint) {.varargs.}
MPI_Comm_errhandler_fn* = MPI_Comm_errhandler_function
MPI_File_errhandler_fn* = MPI_File_errhandler_function
MPI_Win_errhandler_fn* = MPI_Win_errhandler_function
const MPI_ERRORS_ARE_FATAL*: MPI_Errhandler = (cast[MPI_Errhandler](0x54000000))
const MPI_ERRORS_RETURN*: MPI_Errhandler = (cast[MPI_Errhandler](0x54000001))
const MPIR_ERRORS_THROW_EXCEPTIONS*: MPI_Errhandler = (
cast[MPI_Errhandler](0x54000002))
const MPI_NULL_COPY_FN*: ptr MPI_Copy_function = (cast[ptr MPI_Copy_function](0))
const MPI_NULL_DELETE_FN*: ptr MPI_Delete_function = (cast[ptr MPI_Delete_function](0))
const MPI_COMM_NULL_COPY_FN*: ptr MPI_Comm_copy_attr_function =
cast[ptr MPI_Comm_copy_attr_function](nil)
const MPI_COMM_NULL_DELETE_FN*: ptr MPI_Comm_delete_attr_function =
cast[ptr MPI_Comm_delete_attr_function](nil)
const MPI_WIN_NULL_COPY_FN*: ptr MPI_Win_copy_attr_function =
cast[ptr MPI_Win_copy_attr_function](nil)
const MPI_WIN_NULL_DELETE_FN*: ptr MPI_Win_delete_attr_function =
cast[ptr MPI_Win_delete_attr_function](nil)
const MPI_TYPE_NULL_COPY_FN*: ptr MPI_Type_copy_attr_function =
cast[ptr MPI_Type_copy_attr_function](nil)
const MPI_TYPE_NULL_DELETE_FN*: ptr MPI_Type_delete_attr_function =
cast[ptr MPI_Type_delete_attr_function](nil)
const MPI_VERSION*: cint = 3
const MPI_SUBVERSION*: cint = 1
const MPICH_NAME*: cint = 3
const MPICH*: cint = 1
const MPICH_HAS_C2F*: cint = 1
const MPICH_VERSION*: cstring = "3.2"
const MPICH_NUMVERSION*: cint = 30200300
const MPICH_RELEASE_TYPE_ALPHA*: cint = 0
const MPICH_RELEASE_TYPE_BETA*: cint = 1
const MPICH_RELEASE_TYPE_RC*: cint = 2
const MPICH_RELEASE_TYPE_PATCH*: cint = 3
type
MPIR_Combiner_enum* = enum
MPI_COMBINER_NAMED = 1, MPI_COMBINER_DUP = 2, MPI_COMBINER_CONTIGUOUS = 3,
MPI_COMBINER_VECTOR = 4, MPI_COMBINER_HVECTOR_INTEGER = 5,
MPI_COMBINER_HVECTOR = 6, MPI_COMBINER_INDEXED = 7,
MPI_COMBINER_HINDEXED_INTEGER = 8, MPI_COMBINER_HINDEXED = 9,
MPI_COMBINER_INDEXED_BLOCK = 10, MPI_COMBINER_STRUCT_INTEGER = 11,
MPI_COMBINER_STRUCT = 12, MPI_COMBINER_SUBARRAY = 13, MPI_COMBINER_DARRAY = 14,
MPI_COMBINER_F90_REAL = 15, MPI_COMBINER_F90_COMPLEX = 16,
MPI_COMBINER_F90_INTEGER = 17, MPI_COMBINER_RESIZED = 18,
MPI_COMBINER_HINDEXED_BLOCK = 19
type
MPI_Info* = cint
const MPI_INFO_NULL*: MPI_INFO = (cast[MPI_Info](0x1C000000))
const MPI_INFO_ENV*: MPI_INFO = (cast[MPI_Info](0x5C000001))
const MPI_MAX_INFO_KEY*: cint = 255
const MPI_MAX_INFO_VAL*: cint = 1024
const MPI_ORDER_C*: cint = 56
const MPI_ORDER_FORTRAN*: cint = 57
const MPI_DISTRIBUTE_BLOCK*: cint = 121
const MPI_DISTRIBUTE_CYCLIC*: cint = 122
const MPI_DISTRIBUTE_NONE*: cint = 123
const MPI_DISTRIBUTE_DFLT_DARG*: cint = -49767
const MPI_IN_PLACE*: pointer = cast[pointer](-1)
const MPI_MODE_NOCHECK*: cint = 1024
const MPI_MODE_NOSTORE*: cint = 2048
const MPI_MODE_NOPUT*: cint = 4096
const MPI_MODE_NOPRECEDE*: cint = 8192
const MPI_MODE_NOSUCCEED*: cint = 16384
const MPI_COMM_TYPE_SHARED*: cint = 1
type
MPI_Aint* = cint
MPI_Fint* = cint
MPI_Count* = culonglong
const MPI_AINT_FMT_DEC_SPEC*: cstring = "%d"
const MPI_AINT_FMT_HEX_SPEC*: cstring = "%x"
type
MPI_Offset* = culonglong
MPI_Status* {.bycopy, importC, header: hmpi.} = object
count_lo*: cint
count_hi_and_cancelled*: cint
MPI_SOURCE*: cint
MPI_TAG*: cint
MPI_ERROR*: cint
MPIR_T_enum_s* {.bycopy.} = object
MPIR_T_cvar_handle_s* {.bycopy.} = object
MPIR_T_pvar_handle_s* {.bycopy.} = object
MPIR_T_pvar_session_s* {.bycopy.} = object
MPI_T_enum* = ptr MPIR_T_enum_s
MPI_T_cvar_handle* = ptr MPIR_T_cvar_handle_s
MPI_T_pvar_handle* = ptr MPIR_T_pvar_handle_s
MPI_T_pvar_session* = ptr MPIR_T_pvar_session_s
var MPI_T_PVAR_ALL_HANDLES*: ptr MPIR_T_pvar_handle_s
const MPI_T_ENUM_NULL*: MPI_T_enum = (cast[MPI_T_enum](nil))
const MPI_T_CVAR_HANDLE_NULL*: MPI_T_cvar_handle = (cast[MPI_T_cvar_handle](nil))
const MPI_T_PVAR_HANDLE_NULL*: MPI_T_pvar_handle = (cast[MPI_T_pvar_handle](nil))
const MPI_T_PVAR_SESSION_NULL*: MPI_T_pvar_session = (cast[MPI_T_pvar_session](nil))
type
MPIR_T_verbosity_t* = enum
MPIX_T_VERBOSITY_INVALID = 0, MPI_T_VERBOSITY_USER_BASIC = 221,
MPI_T_VERBOSITY_USER_DETAIL, MPI_T_VERBOSITY_USER_ALL,
MPI_T_VERBOSITY_TUNER_BASIC, MPI_T_VERBOSITY_TUNER_DETAIL,
MPI_T_VERBOSITY_TUNER_ALL, MPI_T_VERBOSITY_MPIDEV_BASIC,
MPI_T_VERBOSITY_MPIDEV_DETAIL, MPI_T_VERBOSITY_MPIDEV_ALL
MPIR_T_bind_t* = enum
MPIX_T_BIND_INVALID = 0, MPI_T_BIND_NO_OBJECT = 9700, MPI_T_BIND_MPI_COMM,
MPI_T_BIND_MPI_DATATYPE, MPI_T_BIND_MPI_ERRHANDLER, MPI_T_BIND_MPI_FILE,
MPI_T_BIND_MPI_GROUP, MPI_T_BIND_MPI_OP, MPI_T_BIND_MPI_REQUEST,
MPI_T_BIND_MPI_WIN, MPI_T_BIND_MPI_MESSAGE, MPI_T_BIND_MPI_INFO
MPIR_T_scope_t* = enum
MPIX_T_SCOPE_INVALID = 0, MPI_T_SCOPE_CONSTANT = 60438, MPI_T_SCOPE_READONLY,
MPI_T_SCOPE_LOCAL, MPI_T_SCOPE_GROUP, MPI_T_SCOPE_GROUP_EQ, MPI_T_SCOPE_ALL,
MPI_T_SCOPE_ALL_EQ
MPIR_T_pvar_class_t* {.importC, header: hmpi.} = enum
MPIX_T_PVAR_CLASS_INVALID = 0, MPIR_T_PVAR_CLASS_FIRST = 240,
MPI_T_PVAR_CLASS_LEVEL, MPI_T_PVAR_CLASS_SIZE, MPI_T_PVAR_CLASS_PERCENTAGE,
MPI_T_PVAR_CLASS_HIGHWATERMARK, MPI_T_PVAR_CLASS_LOWWATERMARK,
MPI_T_PVAR_CLASS_COUNTER, MPI_T_PVAR_CLASS_AGGREGATE, MPI_T_PVAR_CLASS_TIMER,
MPI_T_PVAR_CLASS_GENERIC, MPIR_T_PVAR_CLASS_LAST,
MPIR_T_PVAR_CLASS_NUMBER
const
MPI_T_PVAR_CLASS_STATE* = MPIR_T_PVAR_CLASS_FIRST
template MPI_Comm_c2f*(comm: untyped): untyped =
cast[MPI_Fint](comm)
template MPI_Comm_f2c*(comm: untyped): untyped =
cast[MPI_Comm](comm)
template MPI_Type_c2f*(datatype: untyped): untyped =
cast[MPI_Fint](datatype)
template MPI_Type_f2c*(datatype: untyped): untyped =
cast[MPI_Datatype](datatype)
template MPI_Group_c2f*(group: untyped): untyped =
cast[MPI_Fint](group)
template MPI_Group_f2c*(group: untyped): untyped =
cast[MPI_Group](group)
template MPI_Info_c2f*(info: untyped): untyped =
cast[MPI_Fint](info)
template MPI_Info_f2c*(info: untyped): untyped =
cast[MPI_Info](info)
template MPI_Request_f2c*(request: untyped): untyped =
cast[MPI_Request](request)
template MPI_Request_c2f*(request: untyped): untyped =
cast[MPI_Fint](request)
template MPI_Op_c2f*(op: untyped): untyped =
cast[MPI_Fint](op)
template MPI_Op_f2c*(op: untyped): untyped =
cast[MPI_Op](op)
template MPI_Errhandler_c2f*(errhandler: untyped): untyped =
cast[MPI_Fint](errhandler)
template MPI_Errhandler_f2c*(errhandler: untyped): untyped =
cast[MPI_Errhandler](errhandler)
template MPI_Win_c2f*(win: untyped): untyped =
cast[MPI_Fint](win)
template MPI_Win_f2c*(win: untyped): untyped =
cast[MPI_Win](win)
template MPI_Message_c2f*(msg: untyped): untyped =
cast[MPI_Fint](msg)
template MPI_Message_f2c*(msg: untyped): untyped =
cast[MPI_Message](msg)
template PMPI_Comm_c2f*(comm: untyped): untyped =
cast[MPI_Fint](comm)
template PMPI_Comm_f2c*(comm: untyped): untyped =
cast[MPI_Comm](comm)
template PMPI_Type_c2f*(datatype: untyped): untyped =
cast[MPI_Fint](datatype)
template PMPI_Type_f2c*(datatype: untyped): untyped =
cast[MPI_Datatype](datatype)
template PMPI_Group_c2f*(group: untyped): untyped =
cast[MPI_Fint](group)
template PMPI_Group_f2c*(group: untyped): untyped =
cast[MPI_Group](group)
template PMPI_Info_c2f*(info: untyped): untyped =
cast[MPI_Fint](info)
template PMPI_Info_f2c*(info: untyped): untyped =
cast[MPI_Info](info)
template PMPI_Request_f2c*(request: untyped): untyped =
cast[MPI_Request](request)
template PMPI_Request_c2f*(request: untyped): untyped =
cast[MPI_Fint](request)
template PMPI_Op_c2f*(op: untyped): untyped =
cast[MPI_Fint](op)
template PMPI_Op_f2c*(op: untyped): untyped =
cast[MPI_Op](op)
template PMPI_Errhandler_c2f*(errhandler: untyped): untyped =
cast[MPI_Fint](errhandler)
template PMPI_Errhandler_f2c*(errhandler: untyped): untyped =
cast[MPI_Errhandler](errhandler)
template PMPI_Win_c2f*(win: untyped): untyped =
cast[MPI_Fint](win)
template PMPI_Win_f2c*(win: untyped): untyped =
cast[MPI_Win](win)
template PMPI_Message_c2f*(msg: untyped): untyped =
cast[MPI_Fint](msg)
template PMPI_Message_f2c*(msg: untyped): untyped =
cast[MPI_Message](msg)
const MPI_STATUS_IGNORE*: ptr MPI_Status = cast[ptr MPI_Status](1)
const MPI_STATUSES_IGNORE*: ptr MPI_Status = cast[ptr MPI_Status](1)
const MPI_ERRCODES_IGNORE*: ptr cint = cast[ptr cint](0)
var MPI_F_STATUS_IGNORE*: ptr MPI_Fint
var MPI_F_STATUSES_IGNORE*: ptr MPI_Fint
const MPI_ARGV_NULL*: cstringArray = cast[cstringArray](0)
const MPI_ARGVS_NULL*: ptr cstringArray = cast[ptr cstringArray](0)
type
MPI_F08_Status* {.bycopy.} = object
count_lo*: MPI_Fint
count_hi_and_cancelled*: MPI_Fint
MPI_SOURCE*: MPI_Fint
MPI_TAG*: MPI_Fint
MPI_ERROR*: MPI_Fint
var MPIR_F08_MPI_STATUS_IGNORE_OBJ*: MPI_F08_Status
var MPIR_F08_MPI_STATUSES_IGNORE_OBJ*: array[1, MPI_F08_Status]
var MPIR_F08_MPI_IN_PLACE*: cint
var MPIR_F08_MPI_BOTTOM*: cint
var MPI_F08_STATUS_IGNORE*: ptr MPI_F08_Status
var MPI_F08_STATUSES_IGNORE*: ptr MPI_F08_Status
const MPI_THREAD_SINGLE*: cint = 0
const MPI_THREAD_FUNNELED*: cint = 1
const MPI_THREAD_SERIALIZED*: cint = 2
const MPI_THREAD_MULTIPLE*: cint = 3
type
MPI_Grequest_cancel_function* = proc (a2: pointer; a3: cint): cint
MPI_Grequest_free_function* = proc (a2: pointer): cint
MPI_Grequest_query_function* = proc (a2: pointer; a3: ptr MPI_Status): cint
MPIX_Grequest_poll_function* = proc (a2: pointer; a3: ptr MPI_Status): cint
MPIX_Grequest_wait_function* = proc (a2: cint; a3: ptr pointer; a4: cdouble;
a5: ptr MPI_Status): cint
const MPI_SUCCESS*: cint = 0
const MPI_ERR_BUFFER*: cint = 1
const MPI_ERR_COUNT*: cint = 2
const MPI_ERR_TYPE*: cint = 3
const MPI_ERR_TAG*: cint = 4
const MPI_ERR_COMM*: cint = 5
const MPI_ERR_RANK*: cint = 6
const MPI_ERR_ROOT*: cint = 7
const MPI_ERR_TRUNCATE*: cint = 14
const MPI_ERR_GROUP*: cint = 8
const MPI_ERR_OP*: cint = 9
const MPI_ERR_REQUEST*: cint = 19
const MPI_ERR_TOPOLOGY*: cint = 10
const MPI_ERR_DIMS*: cint = 11
const MPI_ERR_ARG*: cint = 12
const MPI_ERR_OTHER*: cint = 15
const MPI_ERR_UNKNOWN*: cint = 13
const MPI_ERR_INTERN*: cint = 16
const MPI_ERR_IN_STATUS*: cint = 17
const MPI_ERR_PENDING*: cint = 18
const MPI_ERR_ACCESS*: cint = 20
const MPI_ERR_AMODE*: cint = 21
const MPI_ERR_BAD_FILE*: cint = 22
const MPI_ERR_CONVERSION*: cint = 23
const MPI_ERR_DUP_DATAREP*: cint = 24
const MPI_ERR_FILE_EXISTS*: cint = 25
const MPI_ERR_FILE_IN_USE*: cint = 26
const MPI_ERR_FILE*: cint = 27
const MPI_ERR_IO*: cint = 32
const MPI_ERR_NO_SPACE*: cint = 36
const MPI_ERR_NO_SUCH_FILE*: cint = 37
const MPI_ERR_READ_ONLY*: cint = 40
const MPI_ERR_UNSUPPORTED_DATAREP*: cint = 43
const MPI_ERR_INFO*: cint = 28
const MPI_ERR_INFO_KEY*: cint = 29
const MPI_ERR_INFO_VALUE*: cint = 30
const MPI_ERR_INFO_NOKEY*: cint = 31
const MPI_ERR_NAME*: cint = 33
const MPI_ERR_NO_MEM*: cint = 34
const MPI_ERR_NOT_SAME*: cint = 35
const MPI_ERR_PORT*: cint = 38
const MPI_ERR_QUOTA*: cint = 39
const MPI_ERR_SERVICE*: cint = 41
const MPI_ERR_SPAWN*: cint = 42
const MPI_ERR_UNSUPPORTED_OPERATION*: cint = 44
const MPI_ERR_WIN*: cint = 45
const MPI_ERR_BASE*: cint = 46
const MPI_ERR_LOCKTYPE*: cint = 47
const MPI_ERR_KEYVAL*: cint = 48
const MPI_ERR_RMA_CONFLICT*: cint = 49
const MPI_ERR_RMA_SYNC*: cint = 50
const MPI_ERR_SIZE*: cint = 51
const MPI_ERR_DISP*: cint = 52
const MPI_ERR_ASSERT*: cint = 53
const MPI_ERR_RMA_RANGE*: cint = 55
const MPI_ERR_RMA_ATTACH*: cint = 56
const MPI_ERR_RMA_SHARED*: cint = 57
const MPI_ERR_RMA_FLAVOR*: cint = 58
const MPI_T_ERR_MEMORY*: cint = 59
const MPI_T_ERR_NOT_INITIALIZED*: cint = 60
const MPI_T_ERR_CANNOT_INIT*: cint = 61
const MPI_T_ERR_INVALID_INDEX*: cint = 62
const MPI_T_ERR_INVALID_ITEM*: cint = 63
const MPI_T_ERR_INVALID_HANDLE*: cint = 64
const MPI_T_ERR_OUT_OF_HANDLES*: cint = 65
const MPI_T_ERR_OUT_OF_SESSIONS*: cint = 66
const MPI_T_ERR_INVALID_SESSION*: cint = 67
const MPI_T_ERR_CVAR_SET_NOT_NOW*: cint = 68
const MPI_T_ERR_CVAR_SET_NEVER*: cint = 69
const MPI_T_ERR_PVAR_NO_STARTSTOP*: cint = 70
const MPI_T_ERR_PVAR_NO_WRITE*: cint = 71
const MPI_T_ERR_PVAR_NO_ATOMIC*: cint = 72
const MPI_T_ERR_INVALID_NAME*: cint = 73
const MPI_T_ERR_INVALID*: cint = 74
const MPI_ERR_LASTCODE*: cint = 0x3FFFFFFF
const MPICH_ERR_LAST_CLASS*: cint = 74
const MPICH_ERR_FIRST_MPIX*: cint = 100
const MPIX_ERR_PROC_FAILED*: cint = MPICH_ERR_FIRST_MPIX + 1
const MPIX_ERR_PROC_FAILED_PENDING*: cint = MPICH_ERR_FIRST_MPIX + 2
const MPIX_ERR_REVOKED*: cint = MPICH_ERR_FIRST_MPIX + 3
const MPICH_ERR_LAST_MPIX*: cint = MPICH_ERR_FIRST_MPIX + 3
type
MPI_Datarep_conversion_function* = proc (a2: ptr; a3: MPI_Datatype; a4: cint;
a5: ptr; a6: MPI_Offset; a7: ptr): cint
MPI_Datarep_extent_function* = proc (datatype: MPI_Datatype; a3: ptr MPI_Aint;
a4: pointer): cint
const MPI_CONVERSION_FN_NULL*: ptr MPI_Datarep_conversion_function = nil
proc MPI_Send*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint; tag: cint;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Recv*(buf: pointer; count: cint; datatype: MPI_Datatype; source: cint;
tag: cint; comm: MPI_Comm; status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Get_count*(status: ptr MPI_Status; datatype: MPI_Datatype; count: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Bsend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint; tag: cint;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Ssend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint; tag: cint;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Rsend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint; tag: cint;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Buffer_attach*(buffer: pointer; size: cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Buffer_detach*(buffer_addr: pointer; size: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Isend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint; tag: cint;
comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Ibsend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Issend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Irsend*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Irecv*(buf: pointer; count: cint; datatype: MPI_Datatype; source: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Wait*(request: ptr MPI_Request; status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Test*(request: ptr MPI_Request; flag: ptr cint; status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Request_free*(request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Waitany*(count: cint; array_of_requests: ptr MPI_Request; indx: ptr cint;
status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Testany*(count: cint; array_of_requests: ptr MPI_Request; indx: ptr cint;
flag: ptr cint; status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Waitall*(count: cint; array_of_requests: ptr MPI_Request;
array_of_statuses: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Testall*(count: cint; array_of_requests: ptr MPI_Request; flag: ptr cint;
array_of_statuses: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Waitsome*(incount: cint; array_of_requests: ptr MPI_Request;
outcount: ptr cint; array_of_indices: ptr cint;
array_of_statuses: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Testsome*(incount: cint; array_of_requests: ptr MPI_Request;
outcount: ptr cint; array_of_indices: ptr cint;
array_of_statuses: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Iprobe*(source: cint; tag: cint; comm: MPI_Comm; flag: ptr cint;
status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Probe*(source: cint; tag: cint; comm: MPI_Comm; status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Cancel*(request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Test_cancelled*(status: ptr MPI_Status; flag: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Send_init*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Bsend_init*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Ssend_init*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Rsend_init*(buf: pointer; count: cint; datatype: MPI_Datatype; dest: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Recv_init*(buf: pointer; count: cint; datatype: MPI_Datatype; source: cint;
tag: cint; comm: MPI_Comm; request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Start*(request: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Startall*(count: cint; array_of_requests: ptr MPI_Request): cint {.cdecl, importC, header: hmpi.}
proc MPI_Sendrecv*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
dest: cint; sendtag: cint; recvbuf: pointer; recvcount: cint;
recvtype: MPI_Datatype; source: cint; recvtag: cint; comm: MPI_Comm;
status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Sendrecv_replace*(buf: pointer; count: cint; datatype: MPI_Datatype;
dest: cint; sendtag: cint; source: cint; recvtag: cint;
comm: MPI_Comm; status: ptr MPI_Status): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_contiguous*(count: cint; oldtype: MPI_Datatype;
newtype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_vector*(count: cint; blocklength: cint; stride: cint;
oldtype: MPI_Datatype; newtype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_hvector*(count: cint; blocklength: cint; stride: MPI_Aint;
oldtype: MPI_Datatype; newtype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_indexed*(count: cint; array_of_blocklengths: ptr cint;
array_of_displacements: ptr cint; oldtype: MPI_Datatype;
newtype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_hindexed*(count: cint; array_of_blocklengths: ptr cint;
array_of_displacements: ptr MPI_Aint; oldtype: MPI_Datatype;
newtype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_struct*(count: cint; array_of_blocklengths: ptr cint;
array_of_displacements: ptr MPI_Aint;
array_of_types: ptr MPI_Datatype; newtype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Address*(location: pointer; address: ptr MPI_Aint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_extent*(datatype: MPI_Datatype; extent: ptr MPI_Aint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_size*(datatype: MPI_Datatype; size: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_lb*(datatype: MPI_Datatype; displacement: ptr MPI_Aint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_ub*(datatype: MPI_Datatype; displacement: ptr MPI_Aint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_commit*(datatype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Type_free*(datatype: ptr MPI_Datatype): cint {.cdecl, importC, header: hmpi.}
proc MPI_Get_elements*(status: ptr MPI_Status; datatype: MPI_Datatype; count: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Pack*(inbuf: pointer; incount: cint; datatype: MPI_Datatype; outbuf: pointer;
outsize: cint; position: ptr cint; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Unpack*(inbuf: pointer; insize: cint; position: ptr cint; outbuf: pointer;
outcount: cint; datatype: MPI_Datatype; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Pack_size*(incount: cint; datatype: MPI_Datatype; comm: MPI_Comm;
size: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Barrier*(comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Bcast*(buffer: pointer; count: cint; datatype: MPI_Datatype; root: cint;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Gather*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
recvbuf: pointer; recvcount: cint; recvtype: MPI_Datatype; root: cint;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Gatherv*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
recvbuf: pointer; recvcounts: ptr cint; displs: ptr cint;
recvtype: MPI_Datatype; root: cint; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Scatter*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
recvbuf: pointer; recvcount: cint; recvtype: MPI_Datatype;
root: cint; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Scatterv*(sendbuf: pointer; sendcounts: ptr cint; displs: ptr cint;
sendtype: MPI_Datatype; recvbuf: pointer; recvcount: cint;
recvtype: MPI_Datatype; root: cint; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Allgather*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
recvbuf: pointer; recvcount: cint; recvtype: MPI_Datatype;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Allgatherv*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
recvbuf: pointer; recvcounts: ptr cint; displs: ptr cint;
recvtype: MPI_Datatype; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Alltoall*(sendbuf: pointer; sendcount: cint; sendtype: MPI_Datatype;
recvbuf: pointer; recvcount: cint; recvtype: MPI_Datatype;
comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Alltoallv*(sendbuf: pointer; sendcounts: ptr cint; sdispls: ptr cint;
sendtype: MPI_Datatype; recvbuf: pointer; recvcounts: ptr cint;
rdispls: ptr cint; recvtype: MPI_Datatype; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Alltoallw*(sendbuf: pointer; sendcounts: ptr cint; sdispls: ptr cint;
sendtypes: ptr MPI_Datatype; recvbuf: pointer;
recvcounts: ptr cint; rdispls: ptr cint;
recvtypes: ptr MPI_Datatype; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Exscan*(sendbuf: pointer; recvbuf: pointer; count: cint;
datatype: MPI_Datatype; op: MPI_Op; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Reduce*(sendbuf: pointer; recvbuf: pointer; count: cint;
datatype: MPI_Datatype; op: MPI_Op; root: cint; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Op_create*(user_fn: ptr MPI_User_function; commute: cint; op: ptr MPI_Op): cint {.cdecl, importC, header: hmpi.}
proc MPI_Op_free*(op: ptr MPI_Op): cint {.cdecl, importC, header: hmpi.}
proc MPI_Allreduce*(sendbuf: pointer; recvbuf: pointer; count: cint;
datatype: MPI_Datatype; op: MPI_Op; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Reduce_scatter*(sendbuf: pointer; recvbuf: pointer; recvcounts: ptr cint;
datatype: MPI_Datatype; op: MPI_Op; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Scan*(sendbuf: pointer; recvbuf: pointer; count: cint; datatype: MPI_Datatype;
op: MPI_Op; comm: MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_size*(group: MPI_Group; size: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_rank*(group: MPI_Group; rank: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_translate_ranks*(group1: MPI_Group; n: cint; ranks1: ptr cint;
group2: MPI_Group; ranks2: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_compare*(group1: MPI_Group; group2: MPI_Group; result: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_group*(comm: MPI_Comm; group: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_union*(group1: MPI_Group; group2: MPI_Group; newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_intersection*(group1: MPI_Group; group2: MPI_Group;
newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_difference*(group1: MPI_Group; group2: MPI_Group;
newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_incl*(group: MPI_Group; n: cint; ranks: ptr cint; newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_excl*(group: MPI_Group; n: cint; ranks: ptr cint; newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_range_incl*(group: MPI_Group; n: cint; ranges: ptr array[3, cint];
newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_range_excl*(group: MPI_Group; n: cint; ranges: ptr array[3, cint];
newgroup: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Group_free*(group: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_size*(comm: MPI_Comm; size: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_rank*(comm: MPI_Comm; rank: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_compare*(comm1: MPI_Comm; comm2: MPI_Comm; result: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_dup*(comm: MPI_Comm; newcomm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_dup_with_info*(comm: MPI_Comm; info: MPI_Info; newcomm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_create*(comm: MPI_Comm; group: MPI_Group; newcomm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_split*(comm: MPI_Comm; color: cint; key: cint; newcomm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_free*(comm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_test_inter*(comm: MPI_Comm; flag: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_remote_size*(comm: MPI_Comm; size: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Comm_remote_group*(comm: MPI_Comm; group: ptr MPI_Group): cint {.cdecl, importC, header: hmpi.}
proc MPI_Intercomm_create*(local_comm: MPI_Comm; local_leader: cint;
peer_comm: MPI_Comm; remote_leader: cint; tag: cint;
newintercomm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Intercomm_merge*(intercomm: MPI_Comm; high: cint; newintracomm: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Keyval_create*(copy_fn: ptr MPI_Copy_function;
delete_fn: ptr MPI_Delete_function; keyval: ptr cint;
extra_state: pointer): cint {.cdecl, importC, header: hmpi.}
proc MPI_Keyval_free*(keyval: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Attr_put*(comm: MPI_Comm; keyval: cint; attribute_val: pointer): cint {.cdecl, importC, header: hmpi.}
proc MPI_Attr_get*(comm: MPI_Comm; keyval: cint; attribute_val: pointer; flag: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Attr_delete*(comm: MPI_Comm; keyval: cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Topo_test*(comm: MPI_Comm; status: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Cart_create*(comm_old: MPI_Comm; ndims: cint; dims: ptr cint;
periods: ptr cint; reorder: cint; comm_cart: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Dims_create*(nnodes: cint; ndims: cint; dims: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Graph_create*(comm_old: MPI_Comm; nnodes: cint; indx: ptr cint;
edges: ptr cint; reorder: cint; comm_graph: ptr MPI_Comm): cint {.cdecl, importC, header: hmpi.}
proc MPI_Graphdims_get*(comm: MPI_Comm; nnodes: ptr cint; nedges: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Graph_get*(comm: MPI_Comm; maxindex: cint; maxedges: cint; indx: ptr cint;
edges: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Cartdim_get*(comm: MPI_Comm; ndims: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Cart_get*(comm: MPI_Comm; maxdims: cint; dims: ptr cint; periods: ptr cint;
coords: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Cart_rank*(comm: MPI_Comm; coords: ptr cint; rank: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Cart_coords*(comm: MPI_Comm; rank: cint; maxdims: cint; coords: ptr cint): cint {.cdecl, importC, header: hmpi.}
proc MPI_Graph_neighbors_count*(comm: MPI_Comm; rank: cint; nneighbors: ptr cint): cint {.cdecl, importC, header: hmpi.}