-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathChangeLog
More file actions
3013 lines (2537 loc) · 146 KB
/
ChangeLog
File metadata and controls
3013 lines (2537 loc) · 146 KB
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
GASNet-EX ChangeLog
-------------------
GASNet-EX is a work-in-progress.
Many features remain to be specified, implemented, and/or tuned.
Feedback or questions on any matters related to the EX project are
welcomed at: gasnet-devel@lbl.gov
GASNet-EX currently implements the following conduits:
- InfiniBand Verbs (ibv-conduit)
- Libfabric (ofi-conduit)
- Shared-memory (smp-conduit)
- Portable UDP (udp-conduit)
- Portable MPI (mpi-conduit)
- Unified Communication X (ucx-conduit) [EXPERIMENTAL]
----------------------------------------------------------------------
20XX-YY-ZZ: PENDING
* Unified Communication X framework (details in ucx-conduit README) [EXPERIMENTAL]
- New configure option `--disable-ucx-atomics` can be used to disable
compilation of offloaded atomics in ucx-conduit.
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4811 - ofi: startup crashes with --enable-segment-everything
----------------------------------------------------------------------
2025-08-28: GASNet-EX 2025.8.0
* Memory Kinds (support for non-host memory)
- Fixed support for device memory allocated via cuMemMap (bug 4767)
* Cray XC uGNI (aries-conduit)
- This conduit, deprecated since 2023.9.0, has been removed.
- Users of Cray XC systems are advised to use the renamed cross-configure
scripts `cross-configure-cray-xc-slurm` and `cross-configure-cray-xc-alps`,
which enable ofi-conduit with libfabric's "gni" provider.
* Libfabric (details in ofi-conduit README)
- Updates for compatibility of ofi-conduit CUDA UVA memory kinds with
HPE's Slingshot Host Software (SHS) 12.0.1.
* InfiniBand Verbs (details in ibv-conduit README)
- Setting `GASNET_IBV_PORTS_TYPE=auto` can now be used to automate
topology-aware assignment of HCAs to processes on a multi-rail system.
See the description of the `GASNET_IBV_PORTS_*` family of environment
variables in the conduit `README` for more details.
- Support for `GEX_FLAG_IMMEDIATE` with AM injection (both FPAM and NPAM) has
been improved to detect full send queues and completion queues, conditions
which previously could have resulted in stalls rather than immediate return.
- NEW: Support for network offload of atomic operations. See the
ibv-conduit README for more information, such as supported op/type pairs.
* Unified Communication X framework (details in ucx-conduit README) [EXPERIMENTAL]
- Reduced on-the-wire overheads of Active Messages
- Improved AM Medium bandwidth (bug 4165)
- Increased default GASNET_UCX_MAX_MEDIUM to 65456
* Shared-memory without a network (details in smp-conduit README)
- New `gasnetrun_smp` script provides consistency with most other conduits.
This enables launch of (single-node) smp-conduit jobs using the ssh-, mpi-
and pmi-spawners, in addition to legacy fork-based job launch.
* Intra-node Shared Memory (PSHM)
- Existing support for libhugetlbfs can now use an installation outside of
the default header and library search paths via a the configure option
`--with-hugetlbfs-home=`, or via the environment variable `HUGETLBFS_HOME`
set at configure time.
- The configure option `--enable-hugetlbfs-whole-archive` has been deprecated,
having been supersede by the more general `--with-hugetlbfs-libs` option.
- The implementation of PSHM now defaults to avoiding allocation of shared
memory when there can be no sharing (i.e. in a single-process neighborhood),
instead using `mmap(MAP_ANONYNOUS)` or similar.
See the description of the environment variable `GASNET_USE_PSHM_SINGLETON`
in `README` for more details, including use of this variable to restore
the old behavior.
* GASNet-EX Spec v0.19: (details in docs/GASNet-EX.txt)
- Experimental new `gex_AM_Cancel{Request,Reply}{Medium,Long}()` APIs enable
a client to abandon a Prepare (called instead of the matching Commit).
- Experimental new `gex_AM_Commit*_v2()` APIs extend the `Commit` API
family with a `commit_flags` argument and an `int` return type. This
enables use of `GEX_FLAG_IMMEDIATE` at commit time.
* General and Misc.
- Support for hwloc, used conditionally by ibv- and ofi-conduits, now
defaults to thread-scope (not process-scope) for the cpuset query.
See GASNET_HWLOC_QUERY in the top-level GASNet README for details.
- Improved tracing and statistics support for the `gex_AD_*()` APIs
- Improved pseudo-random number generation used in many tests.
- Support for compilation of GASNet-EX with GCC-15
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4165 - ucx: AMMediumRequest bandwidth problems
- bug4280 - ucx: investigate use of is_sync in AM injection
- bug4335 - ucx: inefficient AM header layout
- bug4718 - Diagnose invalid segment binding to primordial endpoint
- bug4723 - (partial fix) Chapel over ssh-spawner w/ environment modules chokes tcsh
- bug4726 - RFE: smp-conduit support for conduit-independent spawner
- bug4732 - configure not respecting disable-auto-conduit-detect for ofi-conduit on Cray EX
- bug4733 - Intermittent exitcode=9 from ssh-spawner
- bug4734 - incorrect hwloc-based NIC selection with cxi provider
- bug4743 - prohibit space characters in $(prefix) and $(DESTDIR) for `make install`
- bug4744 - uninitialized use of PRNG in some tests
- bug4746 - support pedantic compiler options in gasnet_portable_platform.h
- bug4749 - ofi-conduit NPAM support broken on ILP32
- bug4751 - incorrect segment limit computation on ILP32
- bug4752 - Incomplete work-around for bug 4376 (FI_EAGAIN when reposting multi-recv buffer)
- bug4753 - ofi: race condition in multi-receive message accounting
- bug4754 - intermittent testratomic validation failures on Apple M1 h/w
- bug4757 - Undefined behavior in ibv-conduit legacy initialization
- bug4760 - ibv: assertion failure with single-process and GASNET_NUM_QPS>1
- bug4764 - ibv: progress functions may send AMs in an NPAM prepare/commit interval
- bug4765 - ucx-conduit flaw in gex_AD_OpNBI for GEX_OP_SET and _GET
- bug4766 - Executing a NULL pointer via gasnete_barrier_pf
- bug4767 - CUDA framebuffer memory allocated by cuMemMap failed when registering with GASNet-EX
- bug4768 - memcpy with NULL destination in collectives
- bug4772 - regression in low-memory error handling with single-process runs
- bug4773 - (partial fix) improved error handling in segment allocation
- bug4774 - Add argument-checking to GASNet object query accessors
- bug4787 - GCC-15 errors and warnings regarding incompatible pointers-to-function
- bug4788 - amx/testam.c not C23-compatible
- bug4797 - Intermittent init-time crash inside gasneti_bootstrapBarrier_am()
- bug4808 - gex_EP_BindSegment failures with CUDA device memory and SHS 12.0.1
----------------------------------------------------------------------
2024-05-23: GASNet-EX 2024.5.0
* Memory Kinds (support for non-host memory)
- Memory Kinds support for AMD GPUs extended to ROCm-6 (bug 4686)
- Use of new option `--enable-memory-kinds=force` makes it an error if
`configure` cannot detect at least one supported memory kind.
See docs/memory_kinds_implementation.md for more info on the status of Memory Kinds.
* Libfabric (details in ofi-conduit README)
- Negotiated-Payload Active Message (NPAM) Mediums are implemented natively
for ofi-conduit, replacing use of a portable reference implementation.
This was measured to improve bandwidth on the HPE Slingshot network when
using NPAM interfaces with a GASNet-allocated buffer.
- Output generated by setting `GASNET_OFI_LIST_DEVICES` now includes
information ranking the distance of a device from the generating process,
when hwloc 2.0 libraries (or newer) are located by `configure`.
* InfiniBand Verbs (details in ibv-conduit README)
- A new send progress thread can be enabled to process completion events
related to communication injection, potentially reducing the cost of
`gasnet_AMPoll()` calls by application threads. See the ibv-conduit README
for information on the `GASNET_SND_THREAD*` family of environment variables.
- The receive and send progress threads can now be kept active for some period
of time while their completion queues test as empty. See the ibv-conduit
README for information on the `GASNET_RCV_THREAD_IDLE` and
`GASNET_SND_THREAD_IDLE` environment variables.
- Previously, setting environment variable `GASNET_RCV_THREAD` to a true
value with a library build configured using `--disable-ibv-rcv-thread`
was a fatal error. It now produces a suppressible warning.
- Output generated by setting `GASNET_IBV_LIST_PORTS` now includes information
ranking the distance of a device from the generating process, when hwloc
2.0 libraries (or newer) are located by `configure`.
* Portable UDP support (details in udp-conduit README)
- Correct the behavior of the `dest_addr` of Long AMs when `nbytes==0`
* Portable MPI support (details in mpi-conduit README)
- Correct the behavior of the `dest_addr` of Long AMs when `nbytes==0`
* GASNet-EX Spec v0.18: (details in docs/GASNet-EX.txt)
- Specification for AM Longs has been clarified to explicitly permit
`nbytes==0` even when the destination EP lacks a bound segment.
- Preprocessor identifiers `GASNET_RCV_THREAD` and `GASNET_SND_THREAD`
are now available to indicate library builds with the respective
capabilities.
- New `GEX_FLAG_DEFER_THREADS` and `gex_System_QueryProgressThreads()`
provide a mechanism for a client to control launch of a conduit's
progress thread(s), enabling client control over CPU affinity, among
other properties.
- The 'VIS Put Peer Completion' feature is now DEPRECATED and may be
removed in a future release.
- The following functions, constants and type are no longer considered EXPERIMENTAL:
+ gex_System_QueryNbrhdInfo()
+ gex_System_QueryHostInfo()
+ gex_System_QueryMyPosition()
+ GEX_FLAG_AM_PREPARE_LEAST_CLIENT
+ GEX_FLAG_AM_PREPARE_LEAST_ALLOC
+ gex_Addr_t
* General and Misc.
- Off-node algorithms for non-contiguous vector RMA (i.e. `gex_VIS_Vector{Put,Get}*()`
AKA `gasnet_{putv,getv}_*()`) have been re-designed to leverage piecewise
RMA (now respecting GASNET_VIS_MAXCHUNK) and streamline transfer throughput.
- Disable "threadinfo-opt" by default on aarch64 (Linux and macOS)
- Install a script implementation of the `ident` utility in $prefix/bin
- Avoid an assertion regarding an unpublished segment when it would mask a more
informative bounds-checking failure.
- Reorganization of GASNet-EX and implementation documentation (docs directory):
+ Added new file `memory_kinds.pdf`
Provides the memory kinds API documentation which was previously available
only upon request
+ Added new file `implementation_defined.md`
Describes behaviors of this implemention which are outside the specification
+ Renamed `memory_kinds.md` to `memory_kinds_implementation.md`
Describes the implemention status of the memory kinds (and related) APIs
+ Updates to `GASNet-EX.txt` provide references to the documents above, and
remove a section which provided a summary of `memory_kinds.pdf`.
+ Moved list of public header files from `README` to `GASNet-EX.txt`.
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug3421: putv/getv should respect GASNET_VIS_MAXCHUNK
- bug3559: Fix GASNET_PSHM feature definition (predicate #defines)
- bug4617: SEGV in remote firehose, NDEBUG and clang-16.0.0+
- bug4682: ibv: rare failure of bogus assertion
- bug4683: GASNET_FREEZE ignored by udp-conduit with ssh spawn
- bug4686: Configure failure with ROCm 6
- bug4688: Incorrect CPU mask computation on 64-bit systems
- bug4689: GASNET_GET_THREADINFO() assumed non-NULL in `test{gasnet,legacy}.c`
- bug4690: no actual multi-threaded coverage in PAR builds of `test{gasnet,legacy}.c`
- bug4709: Incorrect behavior with zero-byte Longs (udp and mpi conduits)
- bug4712: gasneti_mutex operations crash in pthread_equal() on NetBSD + PAR/DEBUG
- bug4716: Poor error behavior when hugetlbfs is requested, but unavailable
----------------------------------------------------------------------
2023-12-15: GASNet-EX 2023.9.0
* Memory Kinds (support for non-host memory)
- This release adds *experimental* memory kinds support for the oneAPI Level
Zero API of Intel GPUs to ofi-conduit with the cxi libfabric provider (for
the Slingshot-11 network on HPE Cray EX systems).
See docs/memory_kinds_implementation.md for more info on the status of Memory Kinds.
* Libfabric (details in ofi-conduit README)
- Add initial/experimental support for the AWS Elastic Fabric Adapter via
"efa" provider. Operation with this provider remains untuned and is not
yet officially supported.
- Add `GASNET_OFI_SET_UNIVERSE_SIZE` environment variable to opt-in to
automatic setting of `FI_UNIVERSE_SIZE` to the job size.
This partially addresses Bug 4413.
- The recommendations regarding running MPI hybrid applications on the HPE
Slingshot-11 network have changed. Please see the conduit README for details.
- ofi-conduit now defaults to setting envvars FI_MR_CACHE_MAX_COUNT and
FI_MR_CACHE_MAX_SIZE for cxi and verbs providers, partially addressing bug 4676.
- Active message injections now use tx_addr flag FI_INJECT_COMPLETE
- Transmit CQs now use cq_attr FI_CQ_FORMAT_CONTEXT instead of FI_CQ_FORMAT_DATA
* InfiniBand Verbs (details in ibv-conduit README)
- Calls to `gex_MK_Create()` for CUDA UVA or HIP memory kinds will no longer
fail if the necessary kernel support cannot be positively identified, and
a subsequent `gex_Segment_Create()` will fail instead if the driver support
is absent.
- Will now attempt to maximize the `RLIMIT_MEMLOCK` limit of processes by
default. Set `GASNET_MAXIMIZE_MEMLOCK=0` to disable the new behavior.
* Unified Communication X framework (details in ucx-conduit README) [EXPERIMENTAL]
- `GEX_FLAG_AD_FAVOR_*` flags passed to `gex_AD_Create()` now guide
algorithmic selection of atomic operations.
- Support for optional `GEX_TI_{ENTRY,IS_REQ,IS_LONG}` in `gex_Token_Info()`
- Use of `GASNET_UCX_` or `UCX_GASNET_` to prefix UCX (non-GASNet) environment
variables has been removed. It had never functioned as documented.
- Fix a packaging error that omitted the conduit license file in previous releases.
* Portable UDP support (details in udp-conduit README)
- Support for optional `GEX_TI_{ENTRY,IS_REQ,IS_LONG}` in `gex_Token_Info()`
- Improve warning messages about environment variables to more uniformly
reference the GASNET_-prefixed variable name.
* Portable MPI support (details in mpi-conduit README)
- Support for optional `GEX_TI_{ENTRY,IS_REQ,IS_LONG}` in `gex_Token_Info()`
- Finalize MPI more cautiously at exit, in case the client has already done so.
* Cray XC uGNI (details in aries-conduit README)
- This conduit is now DEPRECATED and will be removed in a future release
(see aries-conduit/README).
* Platform support/portability
- configure no longer requires the `cray-pmi` module to be loaded on HPE
Cray EX systems, although the underlying dependency on Cray PMI remains.
- Configure will no longer add `-multiply_defined,suppress` to `LDFLAGS` on
macOS Ventura and newer (bug 4677). Users may reintroduce it via
`--with-ldflags=`, if necessary.
- mpi-spawner: Finalize MPI more cautiously at exit, in case the client has already done so.
* GASNet-EX Spec v0.17: (details in docs/GASNet-EX.txt)
- Add new `GASNET_SUPPORTS_TI_*` feature macros
- Add constants and data type for experimental oneAPI Level Zero "ZE" memory kind.
* General and Misc.
- New options to `testlarge` and `testsmall` enable testing a wider
range of conditions.
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4172: crash in ucx-conduit atexit handlers when mpi interop is enabled
- bug4363: ibv-conduit assertion failures regarding incorrect opcode
- bug4413: (partial fix) set FI_UNIVERSE_SIZE (conflicting provider requirements)
- bug4594: UCX should not enable native atomics unconditionally
- bug4598: ucx-conduit + ssh-spawner GASNET_FREEZE support is unusable
- bug4654: RFE: feature macros for optional GET_TI_* queries
- bug4655: ucx: bad exits on Summit
- bug4663: failure compiling pmi-spawner with PMIx 4.2.0 and higher
- bug4665: Cray PMI configure detection logic should be smarter
- bug4669: Some GASNET_OFI_DEVICE_* and GASNET_IBV_PORTS_* settings ignored
- bug4670: UCX environment personalized prefix not working as we document
- bug4676: (partial fix) ofi-conduit RMA performance issues (cxi & verbs providers)
- bug4677: Linker warnings from Xcode 15
----------------------------------------------------------------------
2023-03-31: GASNet-EX 2023.3.0
* Libfabric (details in ofi-conduit README)
- Now requires libfabric 1.5 or newer
- Now enforces documented minimum libfabric versions for certain providers
- The --{en,dis}able-ofi-mr-scalable configure options have been deprecated
in favor of newer alternatives which provide finer-grained control.
- Restore default use of the "RDMADISSEM" barrier, which had been previously
disabled in favor of a slower barrier implementation due to bug 4427.
- New envvars GASNET_OFI_LIST_DEVICES{,_NODES} to request a list of
the available network devices.
- New opt-in work-around for bug 4461 (failure of the Slingshot-11 cxi
provider under certain AM traffic patterns) replaces a less effective
workaround introduced in GASNet-EX 2022.9.0.
* InfiniBand Verbs (details in ibv-conduit README)
- The conduit-specific "IBDISSEM" barrier implementation has been removed.
The default barrier is now "RDMADISSEM", and "IBDISSEM" is accepted as
an alias for it.
* GASNet tools (spec v1.20): (details in README-tools)
- Support specifying the complement of a desired trace or stats mask (via the
environment variables and library interfaces) by prefixing "^" to the string
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4157: ibv XRC deadlock under certain loads
- bug4170: RFE: mod and div operations in gasneti_getenv_hwloc_withdefault()
- bug4171: RFE: support local ranks in gasneti_getenv_hwloc_withdefault()
- bug4179: ofi: failures specific to verbs provider
- bug4427: ofi-conduit failures with RDMADISSEM barrier
- bug4468: RFE: negative form of GASNET_TRACEMASK
- bug4507: ofi "message too long" errors on enormous RMA
- bug4517: ofi/verbs 'no associated AM handler function' errors with libfabric 1.11 or older
- bug4527: Erroneous/confusing startup warning with psm2 provider
- bug4538: gasnet_client_attach_hook called after registering memory in ofi conduit
- bug4542: ibv-conduit failures with IBDISSEM and RDMADISSEM barriers
- bug4561: cxi provider performance regression
- bug4567: broken support for psm2 provider in libfabric < 1.10
- bug4568: RFE: support for FI_AV_MAP
- bug4569: RFE: per-provider version
- bug4574: RFE: support per-endpoint AVs
- bug4579: Document tcp provider floor
- bug4587: Undefined behavior in testinternal
- bug4591: Fix confusing documentation regarding True Scale IB hardware
- bug4596: smp-conduit lacks multi-process GASNET_FREEZE support
- bug4597: ofi-conduit + ssh-spawner GASNET_FREEZE support is unusable
- bug4606: current aprun not recognized by gasnetrun
----------------------------------------------------------------------
2023-01-13: GASNet-EX 2022.9.2 Release (bug fix release)
This bug fix release addresses issues on HPE Cray EX platforms
discovered since the 2022.9.0 release.
* Libfabric (details in ofi-conduit README)
- Add support for providers (including cxi in HPE's libfabric 1.15.2.0)
in which the FI_MR_PROV_KEY and FI_MR_VIRT_ADDR bits of mr_mode differ.
* General and Misc.
- Add a new GASNET_USE_HUGEPAGES environment variable to control run-time use
of hugepages (assuming configure-time support).
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4533: RFE: run-time disable for hugepage support
- bug4553: cxi provider assertion failure with libfabric/1.15.2.0
----------------------------------------------------------------------
2022-09-30: GASNet-EX 2022.9.0, 20th Anniversary Release
The GASNet team is proudly celebrating **20 years** of providing
high-quality/high-performance middleware for alternative HPC programming
models; the GASNet specification was first published in October, 2002
(https://doi.org/10.25344/S4MW28). Such a long lifetime for a software
project is only possible with a supportive community of users and
contributors. Most of you reading this are a part of that community and
have our sincere thanks for making this milestone possible.
* General and Misc.
- Add a new GASNET_SPAWN_VERBOSE mode that provides more debugging
information about job creation and teardown operations.
- gasnetrun*/amudprun now accept `-v` multiple times to increase verbosity
- envvar `GASNET_VERBOSEENV` now recognizes 'N|n|NO|no|0' to mean false
- Scaling improvements to startup costs (memory and time) in all conduits
- New options (and changed defaults) for `testalltoall`
- More detailed reporting for certain job spawning failure scenarios
* Memory Kinds (support for non-host memory)
- This release adds Memory Kinds support to ofi-conduit with certain
libfabric providers, for both Nvidia and AMD GPUs. Support includes the
Slingshot-10 and Slingshot-11 networks on HPE Cray EX systems.
See docs/memory_kinds_implementation.md for more info on the status of Memory Kinds.
* Libfabric (details in ofi-conduit README)
- The ofi-conduit is no longer "experimental", with caveats:
+ Its use is only recommended on HPE Cray EX (Shasta) systems and
Linux clusters with Intel Omni-Path (with the psm2 provider)
+ Performance has not been tuned and further enhancements are planned
Please see the conduit README for more details
- New support for memory kinds `GEX_MK_CLASS_CUDA_UVA` and `GEX_MK_CLASS_HIP`
- On HPE Cray EX (aka Shasta) systems, huge pages are now used for
GASNet-allocated host memory segments by default (where supported) for
both PSHM and non-PSHM configurations.
- A new environment variable `GASNET_OFI_MAX_MEDIUM` enables setting the
size of AM Medium buffers at job launch, and the preexisting configure
option `--with-ofi-max-medium` is now used to set the default value.
In the absence of these settings, the default buffer size remains unchanged.
- Improvements to `--with-ofi-provider` argument handling, as documented
in the conduit README.
- --with-ofi-provider=default has been renamed to --with-ofi-provider=generic
- Opt-in work-around for bugs 4179 (verbs provider) and 4461 (cxi provider)
in which certain AM traffic patterns may lead to various failures.
See "Bug 4179" and "Bug 4461" in the conduit README.
- New support for immediate operations (GEX_FLAG_IMMEDIATE) for most AM and
RMA operations
- New support for asynchronous local completion for RMA puts
- Support for optional `GEX_TI_{ENTRY,IS_REQ,IS_LONG}` in `gex_Token_Info()`
- Numerous maintainability improvements
- Support for multiple endpoints
* Platform support/portability
- System-specific defaults for many configure options have been adjusted
to align with recommended values when run on an HPE Cray EX platform.
- `PLATFORM_OS_CNL` and `PLATFORM_OS_WSL` macros have been renamed to
`PLATFORM_OS_SUBFAMILY_CNL` and `PLATFORM_OS_SUBFAMILY_WSL`.
These platforms now ALSO define `PLATFORM_OS_LINUX`.
- Additional variables from *.mak fragments now appear in pkg-config *.pc files
- Timer calibration output is now controlled by envvar `GASNET_TSC_VERBOSE`
- Improvements to the startup logic for network hardware detection,
resulting in more accurate warnings about inadvisable configurations.
- Added initial/experimental support for RISC-V architecture
* GASNet-EX Spec v0.16: (details in docs/GASNet-EX.txt)
- The return type of `gex_EP_BindSegment()` has changed from `void` to `int`
and this function is now permitted to return non-zero on failure.
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4083: incorrect GatherAll algorithm selection at large scale
- bug4305: Remove GASNETI_SUPPORTS_OUTOFSEGMENT_PUTGET
- bug4379: HIP support using deprecated context functionality
- bug4392: Warn when running with --disable-pshm and multiple PPN
- bug4434: RFE: runtime adjustment of ofi-conduit MaxMedium
- bug4432: OFI provider selection issues
- bug4447: GASNET_VERBOSEENV doesn't have an explicit false setting
- bug4448: smp-conduit incorrectly duplicates GASNET_VERBOSEENV output
- bug4453: gex_Coll_* should trace more information
- bug4454: Scaling issues in gasneti_segmentLimit()
- bug4462: testcoll_p-par validation failures on Summit
- bug4475: configure --disable-full-path-expansion breaks default MPI_CC
- bug4483: gethostid() on Perlmutter rarely returns 0, breaking PSHM detection
- bug4490: startup hang for large GASNET_MAX_SEGSIZE and huge pages > 4MB
- bug4496: SEGV in gasnete_coll_pf_tm_reduce_TreePutSeg for reduce-to-all
- bug4509: Non-scalable reduction temporaries
----------------------------------------------------------------------
2022-03-31: GASNet-EX 2022.3.0 Release
* General and Misc.
- Add docs/gasnet1_differences.md guide for legacy GASNet-1 clients
- Reduce locking overheads inside AMPoll for single-node runs of
{udp,mpi}-conduit in PAR mode.
- A new environment variable `GASNET_HOST_DETECT` controls the
algorithm used for detecting compute node boundaries in a job.
* InfiniBand Verbs (details in ibv-conduit README)
- Improved reporting of fatal errors reported via IBV completion queues
* Unified Communication X framework (details in ucx-conduit README) [EXPERIMENTAL]
- A new environment variable `GASNET_UCX_MAX_MEDIUM` enables setting the
size of AM Medium buffers at job launch, and a new configure option
`--with-ucx-max-medium` can be used to set the default value.
In the absence of these settings, default buffer size remains unchanged.
- `GASNET_DISABLE_MUNMAP=1` is now the default for ucx-conduit.
* Libfabric [EXPERIMENTAL] (details in ofi-conduit README)
- Initial support for the "cxi" provider for the HPE Slingshot-11 network.
+ Added support for providers which set the `FI_MR_ENDPOINT` memory mode bit
+ Added support for providers which do not support multiple endpoints
reporting TX completions to a single completion queue
- ofi-conduit is now the recommended conduit for HPE Slingshot (such as
present in HPE Cray EX systems) and Intel Omni-Path (OPA) networks
- A new family of `GASNET_OFI_DEVICE*` environment variables provide
control over which device is used by a given process. When configure can
find (optional) hwloc, this can be based on a process's location in the node
architecture (e.g. by socket or numa node).
- The implementation now includes a native implementation of the
Extended API (Put and Get) in terms of `fi_write()` and `fi_read()`.
* GASNet-EX Spec v0.15: (details in docs/GASNet-EX.txt)
- Clarify that src/dst overlap within one operation yields undefined behavior
- Initial implementation of gex_Segment_Destroy()
* GASNet tools (spec v1.19): (details in README-tools)
- Add gasnett_exe_name() for exposing the current executable name
- gasnett_gethostname() now normalizes hostnames to lowercase
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug4211: intermittent udp-conduit exit-time hangs on macOS
- bug4227: Bogus maybe-uninit warning building libgasnet with GCC-11.1+
- bug4297: incorrect nbrhd construction for some multi-homed hosts
- bug4321: Intermittent "EBADENDPOINT" failures in single-node udp-conduit
- bug4339: ucx: many-to-one deadlock
- bug4345: Multiply defined symbols in aries-conduit w/ recent compilers
- bug4355: Erroneous memory access when deleting a segment
- bug4356: Missing bounds checks for Long payloads
- bug4360: Insufficient fixed exit timeouts (ucx, ibv, ofi)
- bug4361: (partial fix) reductions on DT_USER of unbounded length
- bug4366: intermittent exit-time assertion failures from debug memcheck
- bug4373: ofi: FI_MR_ENDPOINT support
- bug4374: Update mr_mode handling to OFI 1.5 API spec (or newer?)
- bug4375: ofi: support multiple tx CQs
- bug4376: ofi: infrequent FI_EAGAIN when reposting multi-recv buffer
- bug4399: (partial fix) stronger local address range checks when using kinds
----------------------------------------------------------------------
2021-09-30: GASNet-EX 2021.9.0 Release
* General and Misc.
- Improved latency for shared-memory RMA operations in all conduits.
- Improved performance of the conduit-independent RDMA-based barrier,
used by default by ucx-conduit.
- NEW: configure options `--enable-rpath` and `--enable-[pkg]-rpath` can
request addition of directories containing required libraries to the
runtime library search path (a.k.a. "rpath") via `$(GASNET_LDFLAGS)`.
- Environment variable GASNET_BACKTRACE_MT is now available to force
multi-threaded or single-threaded backtraces (where supported).
- Improved code factorization to ease addition of new network conduits.
* Memory Kinds (support for non-host memory)
- This release adds Memory Kinds support for AMD GPUs via the HIP API.
- This release adds ucx-conduit support for `GEX_MK_CLASS_CUDA_UVA` and
`GEX_MK_CLASS_HIP` on supported hardware and software.
- Fixed bugs 4148 and 4150, which had significant impact on the usability
of RMA Put operations involving device memory.
See docs/memory_kinds_implementation.md for more info on the status of Memory Kinds.
* InfiniBand Verbs (details in ibv-conduit README)
- Performance improvement for RMA Put and AM Long utilizing asynchronous
local completion and payloads in (roughly) the 4KiB to 64KiB range.
- Improved memory utilization at large scale.
- SEQ and PARSYNC builds now set MLX{4,5}_SINGLE_THREADED under
appropriate conditions to elide locking overheads in libibverbs.
- Improved scaling with large thread counts by serializing CQ polling.
- NEW: configure option --with-ibv-fenced-puts=... can be used to set the
default value for the GASNET_USE_FENCED_PUTS environment variable.
- Added feature macros to advertise multi-rail configuration to clients.
* Cray XC uGNI (details in aries-conduit README)
- Fix leak of gex_Event_t for explicit-event local completion of AM Long (bug 4292)
* Unified Communication X framework (details in ucx-conduit README) [EXPERIMENTAL]
- New support for Memory kinds: `GEX_MK_CLASS_CUDA_UVA` and `GEX_MK_CLASS_HIP`
- Improvements to AM Long payload handling
+ Fix corruption when using UCX-level shared memory communication (bug 4155)
+ Fix crashes when using synchronous local completion (bug 4277)
+ Fix leak of gex_Event_t for explicit-event local completion (bug 4292)
- Improved handling of non-collective exits
- Support for multiple endpoints
* Shared-memory without a network (details in smp-conduit README)
- Performance improvements to remote (inter-process) atomics
* Platform support/portability
- Made Cray PMI support conduit-independent, allowing it to function on
non-aries Cray systems like the new "HPE Cray EX" (aka Shasta).
- This release adds Intel oneAPI as a supported compiler family.
- This release adds NVHPC (NVIDIA HPC SDK) as a supported compiler family
on x86-64 and ppc64le, starting at version 20.9.
- Improved support for GCC 11 by suppressing spurious warnings.
* GASNet-EX Spec v0.14: (details in docs/GASNet-EX.txt)
- Allow mixing of root and leaf events in array-based NB event APIs.
- Add GEX_FLAG_PEER_NEVER_{SELF,NBRHD}
- Add gex_System_QueryHiddenAMConcurrencyLevel()
- Add constants and data type for "HIP" memory kind
* GASNet tools (spec v1.18): (details in README-tools)
- Add gasnett_assume, for exposing annotations to guide optimization
- gasnett_spinloop_hint() now includes a compiler fence on all CPU
architectures, not just those with a "pause" instruction (or similar).
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug3420: use -rpath when linking
- bug3535: additional restrictions for coding standards
- bug3936: Problems with multi-rail and GASNET_{AM_CREDITS,NETWORKDEPTH}_PP
- bug4053: ibv: Default to setting MLX5_SINGLE_THREADED=1 for SEQ builds
- bug4148: ibv/GDR completion issues with multiple communication paths
- bug4150: ibv/GDR premature local completion of Puts from device memory
- bug4155: ucx: AM Long test failures when PSHM is disabled
- bug4162: incorrect return value from gasnet_get_nbi on ucx-conduit
- bug4178: ofi: testsegment crash with MR_BASIC
- bug4209: ibv: improve ALC with respect to bounce buffer use
- bug4212: build failure for ibv conduit with "--with-ibv-max-hcas=1"
- bug4213: trace AM handler registration
- bug4215: testslice enhancements to test cross-nbrhd RMA
- bug4218: Support root/leaf mixing in array-based NB event APIs
- bug4223: Problems in VIS PSHM handling with non-primordial segments
- bug4228: Bogus stringop-overflow warnings from GCC-11.1 LTO
- bug4230: ssh-spawer de-duplication logic is flawed
- bug4232: Bogus array-bounds warning from GCC 11.1 on ILP32/NDEBUG
- bug4237: Option for backtrace to provide the stack on all threads even in threadmode=seq
- bug4240: ibv: optimize layout of gasnetc_cep_t
- bug4246: ibv: better behavior of single-rail build on multi-rail system
- bug4255: Intel 2021.2.0+ erroneous __has_{,cpp_}attribute(__fallthrough__)
- bug4259/4260/4261/4262: update spinloop constructs in native conduits
- bug4263: remove "AD_MY_NBRHD" check on smp-conduit
- bug4264: simplify implementation of GEX_FLAG_AD_{ACQ,REL}
- bug4265: Collective scratch management is not thread safe
- bug4266: gex_Coll_ReduceToAllNB is not thread safe
- bug4277: ucx testam hang with Cray and AMD compilers
- bug4278: improvements to RDMADISSEM barrier
- bug4281: Display glitch in VERBOSEENV console reporting
- bug4291: Configure barfs on balanced double-quotes in arguments
- bug4292: ucx and aries can leak events from AM Long
- bug4298: ucx persona_example hang w/o PSHM
- bug4299: Non-fatal error on BAR1 resource exhaustion in gex_Segment_Create
- bug4303: Inaccurate expectations regarding GASNET_IBV_PORTS
- bug4310: use of deprecated Intel compiler options
- bug4328: ucx: erroneous loop in gasnetc_poll_sndrcv()
- bug4330: ibv conduit incorrectly implements HIDDEN_AM_CONCURRENCY_LEVEL
----------------------------------------------------------------------
2021-03-31: GASNet-EX 2021.3.0 Release
* General and Misc.
- Performance improvement for Negotiated-Payload Active Message (NPAM) Long
with GASNet-allocated buffer over shared-memory (PSHM) and the reference
implementation of NPAM (Medium and Long) used by ucx, udp and mpi conduits.
- Calls to gex_EP_Create() which would exceed GASNET_MAXEPS now return
GASNET_ERR_RESOURCE rather than aborting.
- NEW: configure option `--with-maxeps=N` permits setting GASNET_MAXEPS,
subject to per-conduit limits.
- Additional debug checks for use of calls which are prohibited in an
AM handler context, and in the NPAM Prepare/Commit interval.
- The `GASNetGitHash` ident string is now available in most development builds,
and `pkg-config --modversion` installed from a development build should
include the GASNet git hash.
* Memory Kinds (support for non-host memory)
- This is the first production release to include "Memory Kinds", the GASNet
feature supporting communication using non-host memory (such as GPU memory).
See docs/memory_kinds_implementation.md for more information.
- Users of the "GASNet-2020.11.0-memory_kinds_prototype" release should be
aware that the behavior of configure in this release differs in that one
must enable memory kinds explicitly using `--enable-memory-kinds` or an
`--enable-kind-[...]` option for a specific kind.
- New preprocessor identifier 'GASNET_HAVE_MK_CLASS_MULTIPLE' (undefined or
defined to '1') indicates whether kinds support for anything other than
host memory has been compiled-in.
* InfiniBand Verbs (details in ibv-conduit README)
- NPAM Long is implemented natively for ibv-conduit in the default FAST
segment mode, replacing use of the portable reference implementation.
- Add support for ODP APIs from the Linux "RDMA Core" distribution, where
previously only the Mellanox variant was supported (bug 4122).
- Improved startup times on jobs larger than a few tens of nodes with
multiple processes per-node (bug 4194).
- A new family of `GASNET_IBV_PORTS_*` environment variables provides more
control over which InfiniBand ports are used by which processes.
Support is conditional on configure finding hwloc lib, which is optional.
- NEW: configure option --with-ibv-ports=... can be used to set a default
value for the GASNET_IBV_PORTS environment variable.
- GASNET_DISABLE_MUNMAP=1 is now the ibv-conduit default on 64-bit platforms,
regardless of whether ODP is enabled or not. Previously, enabling ODP
would change the default to 0.
- Improved handling of non-default parameter settings for the firehose
dynamic memory registration library. Corner cases with default settings
are also handled better. See GASNET_FIREHOSE_* in ibv-conduit README.
- Significantly increase the default firehose resources on modern InfiniBand
HCAs, leading to improved performance in various circumstances.
- A new GASNET_PINNED_REGIONS_MAX environment variable allows control over
the host-wide number of pinned regions (a bounded HCA resource) which may
be used by ibv-conduit.
* Cray XC uGNI (details in aries-conduit README)
- A new environment variable GASNET_GNI_MAX_MEDIUM enables selecting the
size of AM Medium buffers at job launch, and the existing configure
option `--with-aries-max-medium` now sets the default value.
* Libfabric [EXPERIMENTAL] (details in ofi-conduit README)
- NEW ofi-conduit, previously available only in GASNet-1, has been partially
ported to GASNet-EX where it now holds "experimental" status.
- The work completed to date is believed to be functionally complete and
correct when run with OFI's sockets provider and default settings.
* Portable UDP support (details in udp-conduit README)
- udp-conduit now defaults to grouping co-located processes into
contiguous rank ids.
- Interfaces have been added for explicit control over rank assignment
* Platform support/portability
- This release adds support for macOS on AARCH64 (aka ARM64, "Apple M1" and
"Apple Silicon").
* GASNet-EX Spec v0.13: (details in docs/GASNet-EX.txt)
- Add GASNET_NATIVE_NP_ALLOC_{REQ,REP}_{MEDIUM,LONG} defines
- Add gex_System_{Get,Set}VerboseErrors()
- Add gex_System_QueryMaxThreads()
- Add gex_EP_QueryBoundSegmentNB()
* GASNet tools (spec v1.17): (details in README-tools)
- Add GASNETT_UNUSED_ARGS*() family of macros
- Added documentation for an interface providing programmatic control
of stats/trace features in conduit-mode libraries.
- Add GASNETT_STATS_DUMP() to allow dumping and optionally resetting stats
counters at runtime.
- Add GASNETT_STATS_PRINTF(_FORCE)() to generate stats output.
* GASNet-1 legacy API
- Calls to the legacy gasnet_attach() requesting a zero-length segment are
now silently rounded up to one page.
* Notable bugs fixed in this release: (details at https://gasnet-bugs.lbl.gov)
- bug2036: Teach AMUDP to respect externally-imposed node ids
- bug4122: ODP support broken with recent libibverbs releases
- bug4126: ibv: debug-only exit timeout for large multi-rail jobs on Summit
- bug4141: SRQ-specific test failures
- bug4145: Vector/Indexed incorrect with non-primordial teams and loopback/PSHM
- bug4159: AM max-payload queries do not evaluate arguments
- bug4166: ibv: debug-only crash at exit from an MPI hybrid application
- bug4173: ibv: race in firehose on powerpc
- bug4175: thread-safety of gex_EP_RegisterHandlers()
- bug4193: Firehose env var "misbehavior"
- bug4194: ibv: unnecessarily slow startup
- bug4195: ibv dynamic connection support broken
- bug4203: Improve error message when passwordless ssh isn't set up
- bug4208: unfortunate multi-rail interactions with PSHM and XRC
* Removal of unmaintained platform support
- This release no longer supports the following platforms:
+ IA-64 (aka Itanium)
----------------------------------------------------------------------
2020-10-30: GASNet-EX 2020.11.0 "Memory Kinds" Prototype Release
* General and Misc.
- Initial implementation of "Memory Kinds": support for GASNet-EX remote
segments comprised of non-host memory. This initial version supports only
UVA-based CUDA device memory and the GASNet-EX RMA APIs. The file
docs/memory_kinds_implementation.md provides an up-to-date summary of the
status of the memory kinds implementation.
- New GASNet trace/stats tracemask categories:
+ O - Object creation, modification and destruction
+ X - AMPoll
* GASNet-EX Spec v0.11:
- Deprecate GEX_FLAG_TM_SCRATCH_SIZE_MIN flag and remove the corresponding
GASNET_COLL_MIN_SCRATCH_SIZE environment variable.
- Add GEX_FLAG_TM_NO_SCRATCH support in gex_TM_{Split,Create}(), eliminating
the requirement that a client always provide a collectives scratch space.
* GASNet-EX Spec v0.12:
- Add the following APIs, types and constants as documented in "GASNet-EX API
Proposal: Memory Kinds, Revision 2020.11.0" (available on request):
+ gex_TM_Pair()
+ gex_Segment_Create()
+ gex_EP_Create()
+ gex_EP_BindSegment()
+ gex_EP_PublishBoundSegment()
+ gex_MK_t
+ gex_MK_Class_t
+ gex_MK_Create_args_t
+ gex_MK_Create()
+ gex_MK_Destroy()
+ GEX_MK_HOST
- Add the following constants (zero values of the appropriate types)
+ GEX_CLIENT_INVALID
+ GEX_EP_INVALID
+ GEX_MK_INVALID
- Add constants and data type for "CUDA UVA" memory kind
----------------------------------------------------------------------
2020-10-30: GASNet-EX 2020.10.0 Release
* General and Misc.
- NEW: Improved compatibility with heap analysis tools like Valgrind
using new configure option --enable-valgrind. GASNet's valgrind
suppression file now lives in other/valgrind/gasnet.supp.
- GASNet trace/stats now categorize AMPoll calls in tracemask category 'X'
- BLCR integration, deprecated since 1.32.0 (July 2018), has been removed.
- Improved memory and communication requirements in gex_TM_Split().
- Improved memory scaling in management of collectives scratch spaces.
- Initial implementation of gex_TM_Create() sufficient for implementation
of (at least) efficient Split-like operations with computable membership,
using less communication than gex_TM_Split.
* Cray XC uGNI (aries-conduit)
- The parameter GASNET_NETWORKDEPTH is now honored for both the Eager and
RVous AM algorithms, resulting in GASNET_NETWORKDEPTH_SPACE now being
rounded down to a multiple of GASNET_NETWORKDEPTH and a power-of-two.
Connected to this change, the default GASNET_NETWORKDEPTH_SPACE has
increased from 12K to 16K, resulting in an increased default per-peer
memory consumption for the Eager AM algorithm (not used at large scale).
- The parameter GASNET_GNI_ROUTING_MODE is now available to set the
Aries routing mode, accepting the same values as the parameter
MPICH_GNI_ROUTING_MODE used by Cray MPICH (see the intro_mpi manpage).
* Portable UDP support (udp-conduit)
- The amudprun spawning protocol has changed slightly, breaking backwards
compatibility for amudprun binaries built against earlier versions.
* Unified Communication X framework (ucx-conduit) [EXPERIMENTAL]
- Tune the Active Message buffer handling, resulting in improved performance
- Fix an unreported defect in AM injection with asynchronous LC
- For details, see ucx-conduit/README
* Platform support/portability
- Installs on Cray XC systems now default to using linker options for
low-level libraries that are more resilient to minor system upgrades.
- PMI-based spawner cleanups to reduce memory use and improve robustness
* SSH-based job-launch (ssh-spawner)
- The default scheme for process layout has changed to ignore duplicates
in a host list (such as GASNET_SSH_SERVERS). Setting the environment
variable GASNET_SSH_KEEPDUP=1 restores the previous behavior.
See other/ssh-spawner/README for details.
- Job exit no longer runs atexit handlers and static destructors on
the "hidden" processes used to implement ssh-spawner.
* GASNet-EX Spec v0.9:
- Restrict scratch sizes (query outputs and split inputs) for gex_TM_Split()
to be single-valued over members of each output team.
- Add gex_TM_Create() and an associated family of flags
GEX_FLAG_TM_{GLOBAL,LOCAL,SYMMETRIC}_SCRATCH.
* GASNet-EX Spec v0.10:
- Add gex_TM_Destroy() and associated GEX_FLAG_GLOBALLY_QUIESCED flag.
* GASNet tools (spec v1.16)
- Add gasnett_fatalerror_nopos
- In some cases, code including gasnet_tools.h (but not gasnetex.h or
gasnet.h) must now be explicitly compiled with `-DGASNETT_THREAD_SINGLE`
if it is to be linked with a PARSYNC conduit library, due to changes in
how PARSYNC libraries are built.
* Notable bugs fixed in this release:
- bug3806: workaround xpmem startup failures while profiling (eg CrayPat)
- bug4060: tools atomics using constructs deprecated in C++20
- bug4061: aries-conduit startup time regression
- bug4074: cross-configure scripts for KNL now default to --enable-large-pshm
- bug4075: gex_TM_Split is not thread-safe
- bug4076: valgrind 'invalid read' errors on GASNet/UPC++ startup
- bug4079: udp-conduit localhost spawn fails to search PATH for wrappers
- bug4081: Oversubscription warnings from jsrun
- bug4086: AM performance bug for --enable-{debug,trace}
- bug4089: gex_Coll_ReduceToOne failures under some conditions
- bug4093: partial fix to scale "p2p" data with team size, not job size
- bug4095: Incorrect algorithms for small scratch and/or large data
- bug4103: Configure failures with -ffat-lto-objects in CFLAGS
- bug4127: Overflow for >2G pre-pinned memory (ibv-conduit)
- bug4135: Aries CE use with multi-domain support hangs
- bug4138: gasneti_argv_from_sysctl() failure for UPC++ codes on macOS 11
- bug4143: ibv-conduit GASNET_USE_FIREHOSE=0 support broken
- bug3630/3828/3842: Various failures on testvis, testratomic, testslice
----------------------------------------------------------------------
2020-03-12: GASNet-EX 2020.3.0 Release
* InfiniBand Verbs (ibv-conduit)
- Negotiated-Payload Active Messages are implemented natively for ibv-conduit,
replacing use of a portable reference implementation.
- New environment variable GASNET_AM_GATHER_MIN controls use of gather-on-send
for AM Medium (and small Long) payloads. See details in the conduit README.
- The gather-on-send optimization for AM Medium (and small Long) payloads is
now applied to out-of-segment sources when using ODP.
- A new `configure --with-ibv-max-medium` can set the size of AM Medium buffers.
See details, including supported values, in the conduit README.
- The default AM Max Medium is now 64KB minus space for headers (up from 4KB).
- Code paths for AM Long and RDMA Put have been separated, leading to simpler
(faster and more maintainable) logic for each.
- Code paths for AM and RMA have been revised to eliminate certain global
state in favor of per-endpoint state. This is work toward multi-endpoint and
multi-segment support to appear in a later release.
- AM-over-RDMA (not compiled by default since 2019.6.0) has been removed.
- The environment variable GASNET_PIN_MAXSZ has been removed. This variable
was introduced to help work-around a misbehavior not seen in modern HCAs,
and its support added significant complexity to the critical code paths
for RMA.
* Cray XC uGNI (aries-conduit)
- AM Long request injection using GEX_EVENT_NOW may now service incoming AMs
while stalling for local completion of the outgoing payload.
* Unified Communication X framework (ucx-conduit) [EXPERIMENTAL]
- This NEW conduit is now available for experimental use on Mellanox
InfiniBand devices including ConnectX-5 or newer.
The ucx-conduit code was contributed by Mellanox Technologies Ltd.
- For details, see ucx-conduit/README
* IBM PAMI (pami-conduit)
- This conduit, deprecated since 2019.9.0, has been removed.
* Portable UDP support (udp-conduit)
- Provide more robust default detection of shared-memory peers
(see GASNET_USE_GETHOSTID in udp-conduit/README for details).
- Improved startup error checking and reporting for DNS problems
* GASNet tools (spec v1.15)
- Add runtime version queries gasnett_release_version*()
* Platform support/portability
- PMI-based spawning now supports PMIx
- Improve portable_inttypes to be more trusting of C99/C++11 compilers
- Improved warning behavior with recent versions of PGI
- Support for IBM BlueGene/Q has been removed.
- Support for native atomics on IBM XL compilers for big-endian PPC has been
removed. These platforms now default to compiler-provided atomics.
Little-endian PPC platforms remain unchanged.
* General and Misc.
- New make targets (run-)tests-installed-{seq,par,parsync} have been
added for use in post-install validation of the library.
- Now document and enforce use of GNU make version 3.79 or newer.
* Notable bugs fixed in this release:
- bug4022: rare resource leak in aries-conduit AM Long protocol
- bug4024: erroneous behavior from `testam -async-req -np-cb`
- bug4025: erroneous assertion failure from loopback NPAM
- bug4035: link failures with GCC 10 or -fno-common
- bug4042: errors when configured using --with-aries-max-medium=65472
----------------------------------------------------------------------
2019-09-14: GASNet-EX 2019.9.0 Release
* Cray XE/XK uGNI gemini-conduit
- This conduit, deprecated since 2019.6.0, has been removed.
- The aries-conduit remains supported and under active development.
* Cray XC uGNI aries-conduit
- The performance of AMLong with payload of 4KB or larger has been
significantly improved. The overhead of injection with synchronous
local completion is reduced. The cases of asynchronous local
completion (both explicit and implicit event) are properly implemented
where previously they were strengthened to synchronous.
- New environment variables GASNET_GNI_PACKEDLONG_CUTOVER,
GASNET_LONG_DEPTH and GASNET_GNI_AMPOLL_BURST provide finer-grained
control over the AM protocol. See details in the conduit README.
* InfiniBand Verbs (ibv-conduit)
- New envvars GASNET_IBV_LIST_PORTS{,_NODES} to request a list of
available InfiniBand HCAs, ports, and their respective status.
- Internal streamlining of AM paths to reduce code bloat (bug1879)
* IBM PAMI (pami-conduit)
- This conduit is now DEPRECATED and will be removed in a future release
(see pami-conduit/README).
* GASNet tools (spec v1.14)
- Add GASNETT_FALLTHROUGH
* MPI-based job-launch (mpi-spawner)
- Improved logic for IBM's jsrun
* Notable bugs fixed in this release:
- bug3338: ibv_reg_mr failure (EFAULT/Bad address) on read-only data
- bug3957: GASNET_DISABLE_MUNMAP_DEFAULT=0 when using ODP
- bug3994: backtrace hangs for forthcoming macOS 10.15
- bug3995: configure fails sizeof(ptrdiff_t) on Catalina/gcc
- bug4002: ibv-conduit: XRC and ODP are mutually exclusive
----------------------------------------------------------------------
2019-06-14: GASNet-EX 2019.6.0 Release
* InfiniBand Verbs (ibv-conduit)
- NEW: Improved support for correct operation on multi-rail InfiniBand systems
- New envvar GASNET_USE_FENCED_PUTS controls the strictness of ordering
guarantees for put RMA completion on multi-rail hardware, addressing bug 3447.
- Compilation of AM-over-RDMA support is now disabled by default
- Improve error messages for some cases.
* Cray XC uGNI aries-conduit
- The Aries Collective Engine, if available, is now used to accelerate
gex_Coll_BarrierNB().
* Cray XE/XK uGNI gemini-conduit
- This conduit is now DEPRECATED and will be removed in a future release.
- The aries-conduit remains supported and under active development.
* GASNet-EX Spec v0.8:
- Add GASNET_HIDDEN_AM_CONCURRENCY_LEVEL
- The EX spec file has been renamed to docs/GASNet-EX.txt
* Notable bugs fixed in this release:
- bug3880: XLC 16.1.x ICE compiling ibv-conduit for Power9
- bug3943: infrequent startup hang with PSHM and over 62 PPN
- bug3946: Improve gasnetrun support for CPU binding esp with Open MPI
----------------------------------------------------------------------
2019-05-27: GASNet-EX 2019.3.2 Release (bug fix release)
* Notable bugs fixed in this release:
- bug3943: infrequent startup hang with PSHM and over 62 PPN
----------------------------------------------------------------------
2019-03-15: GASNet-EX 2019.3.0 Release
* Legacy backward-compatibility layer: