forked from simgrid/simgrid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
3108 lines (2708 loc) · 143 KB
/
ChangeLog
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
SimGrid (3.14) UNRELEASED; urgency=low
SMPI
* Call-location tracing for SMPI.
You can add the exact location (filename / linenumber) of an MPI call to
your trace files and slow down or speed up the simulation between two
consecutive calls by using an adjustment file. (See the documentation.)
* Fixed computation of timings for MPI_Send, MPI_Recv but possibly also others
We've found a bug that prevented SMPI to account for MPI_Send, MPI_Recv
and others (in some cases) in a correct way. That is, the smpi/os, smpi/or
values were ignored in some cases. The timings of these functions can now
be significantly different.
-- $date Da SimGrid team <[email protected]>
SimGrid (3.13) stable; urgency=low
The Half Release, a.k.a. the Zealous Easter Trim.
- We removed half of the lines, that were mostly experimental cruft.
v3.12 lasted 286000 lines of code, v3.13 is only 142000 lines
(not counting blanks and comments -- according to openhub.net)
- The internals are now compiled in C++ (and will soon be clean C++)
- We removed 75 klines of XML, 12 klines of Java, 5 klines of cmake,
59 klines of C, etc. We added only 29 klines of C++ in replacement.
* Backwards Compatibility breaks
- Removed Lua simulation bindings (switch to C or Java for that).
Lua can still be used to describe platforms
- Removed Java kernel plug-ins.
Will be reintroduced after the ongoing major internals reorg.
- In MSG
- the following functions were removed.
They were too specific and should be reimplemented in a generic
way, with filter function.
- MSG_task_listen_from_host
- MSG_mailbox_get_count_host_waiting_tasks
- MSG_mailbox_put_with_timeout was removed.
Please use MSG_task_send_with_timeout instead.
- In SimDag
- the SD_application_reinit function was removed. It has been a noop for a while.
- The ACCESS_MODE of SD_workstation has been removed. This feature was not really usable and should soon be
replaced by a more flexible mechanism.
- The following functions thus do not exist anymore
- SD_workstation_get_access_mode
- SD_workstation_set_access_mode
- SD_workstation_get_current_task
- Basic estimation functions have been removed but can easily be replaced
- SD_route_get_communication_time => SG_route_get_latency() + amount / SD_route_get_bandwidth()
- SD_workstation_get_computation_time => amount / sg_host_speed()
- In Java
- VM.setBound(int load) is now VM.setBound(double bound) to meet the MSG semantics.
Use VM.getSpeed()*load/100 for the legacy behavior.
- In CMake
- option enable_tracing was removed. It was not doing anything for a while.
- In the ModelChecker:
- the model-checker now ptraces the model-checked process which means
you cannot use a debugger on the latter anymore (we might make this
optional in the feature);
- removed soft-dirty page tracking;
- remove model-checked side snapshot management,
MC_snapshot() and MC_compare_snapshot();
- keep the MC_cut() function as a stub (it was not really working
in the previous release).
Options:
* All options are consistently in kebab-case. Old names are kept as alias.
XML platforms:
* Switch to platform v4 format.
- Rename from 'power' to 'speed' the attributes describing the amount of
flops that a <host>, <peer>, <cluster> or <cabinet> can deliver per second.
- In <trace_connect>, attribute kind="POWER" is now kind="SPEED".
- In <host> and <link>, attributes availability and state are gone.
It was redundent with state and availability traces, and with peak values.
- In <cluster>, attributes availability_file and state_file are gone.
It was too complex and unused.
- Kill <gpu>. Was not doing anything.
- The DOCTYPE points to the right URL:
http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd
(the file at this address now documents the changelog since its v1)
- A warning is emitted for unit-less values (they are still accepted).
- speed. Default: 'f' or 'flops'. Also defined:
'Yf', 'Zf', 'Ef', 'Pf', 'Tf', 'Gf', 'Mf', 'kf'
'yottaflops', 'zettaflops', 'exaflops', 'petaflops', 'teraflops', 'gigaflops', 'megaflops', 'kiloflops'
- bandwidth. Default: 'Bps' bytes per second (or 'bps' for bits but 1 Bps = 8 bps)
Also defined in bytes: 'TiBps', 'GiBps', 'MiBps', 'KiBps', 'TBps', 'GBps', 'MBps', 'kBps', 'Bps'
And the same in bits: 'Tibps', 'Gibps', 'Mibps', 'Kibps', 'Tbps', 'Gbps', 'Mbps', 'kbps', 'bps'
- latency. Default: 's' second. Also defined:
'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond
* bin/simgrid_update_xml can upgrade your files automatically (won't convert unit-less values)
tools/sg_xml_unit_converter.py may help (but it's just a warning and will probably ever be).
S4U
* s4u::Host is now the preferred public interface to the Host features.
sg_host_* functions are C bindings to the exact same behavior
MSG_host_* and SD_workstation_* are #define to the sg_host_* ones
MSG
* The examples were completely reorganized (in C and Java), for your browsing pleasure.
* Kill all deprecated functions (the ones you had when declaring MSG_DEPRECATED).
They were deprecated since a few years, and probably did not even compile anymore.
SimDag
* The API has been profoundly modified to directly use the core objects instead of redefining its own.
SD_Workstation_t and SD_link_t are now sg_host_t and sg_link_t respectively.
Some functions have also been renamed for consistency. Backward compatibility is maintained, but users are
encouraged to update their codes. A list of the modified functions can be found at the end of
include/simgrid/simdag.h
Simix
* simgrid::simix::kernelImmediate() is the closure callback. It ensures that
the lambda or closure passed as a parameter will run in kernel mode.
All the callback functions should be rewritten to that interface at some point.
Surf
* Reorganizing and cleaning the internals all around the place.
SMPI
* Remove old default barrier/bcast buggy algorithms (see #18407)
* Various bug fixes to handle more codes
* Remove the need for the --foreground option of smpirun (it is still
accepted for backward compatibility).
XBT
* Kill the setset data container: MC don't use it anymore.
* Kill the queue data container: it made more sense with GRAS.
* Kill the xbt_peer_t data type: it's useless without GRAS.
* Kill rm_cb feature of config sets: it was never useful.
* Kill graphxml parsing feature. It was not used.
* Kill the deprecated code protected by XBT_USE_DEPRECATED
* New functions:
- xbt_dynar_sort_strings(), when the content is char*
- xbt_str_parse_int / xbt_str_parse_double, wrapping strtol/strtod
They throw exceptions on invalid input;
* C++ support for declaring CLI flags (simgrid::config::Flag);
* class for abstracting different signal backends (simgrid::xbt::signal).
with no external dependencies (we need very simple signals).
MC
* refactoring and cleanup of the code;
* ongoing process to cleanly separate the model-checking algorithms
from the code model-checking support.
-- Wed Apr 27 21:00:53 CEST 2016 Da SimGrid team <[email protected]>
SimGrid (3.12) stable; urgency=low
The Facelift Release.
Build System
* Require g++ v4.7 at least to not speak prehistorical C++.
* Require Boost 1.48 (for signal2 component).
* Java must be version 7 at least when activated.
* Builds on Windows again (including Java bindings).
* Tracing is now always enabled (no way to turn it out)
* Remove GTNetS. It was not working anyway.
* Various cleanups in the cmake scripts.
* Move headers around to sort them out on installed systems:
- instr/instr.h -> simgrid/instr.h
- instr/jedule/* -> simgrid/jedule
- simdag/datatypes.h was removed
- simdag/simdag.h -> simgrid/simdag.h
- msg/datatypes.h was removed
- msg/msg.h -> simgrid/msg.h
cMSG:
* Interface improvement:
- Rename MSG_host_is_avail(h) to MSG_host_is_on(h)
- Sanitize the interface in MSG_task_ module:
- Merge two functions that were close enough but misleading:
set_compute_duration(t) -> set_flops_amount(t)
get_remaining_computation(t) -> get_flops_amount(t)
- set_data_size(t) -> set_bytes_amount(t)
get_data_size(t) -> get_bytes_amount(t)
- Massive cleanups in the functions related to the energy
- MSG_host_get_pstate_number() -> MSG_host_get_nb_pstates()
- New: MSG_host_get_pstate()
* New example:
- msg/energy/onoff: switching hosts on and off
jMSG:
* Interface improvement:
- Rename Host.isAvail() to Host.isOn()
- Rename Process.currentProcess() to Process.getCurrentProcess()
- Rename Task.setDataSize() to Task.setBytesAmount()
- Merge Task.getRemainingDuration() and Task.getComputeDuration() into Task.getFlopsAmount()
* Bug fixes:
- #18874: Actually allows the GC to reclaim tasks
SIMIX:
* New functions
- SIMIX_process_throw: raises an exception in a remote process
* Refactoring: Separate sub-modules
- libsmx: the public interface, as libc in a real system
- popping: the strange dance that converts a user request into a kernel handling
- smx_context_*: the virtualization mechanisms that embed the user code
- smx_*: the handling of each simcalls
* Interface cleanup:
- simcall_host_set_power_peak_at -> simcall_host_set_pstate
* Rename smx_action_t into smx_synchro_t, making explicit that these
things are used to synchronize processes with their environment.
For example, a communication is a sort of synchronization involving
the communicating processes (that may block until the exchange) and
the platform. The same can be said from computations, etc.
* Bug fixes:
- #18888: segfault when a process ends before its kill_time
SMPI:
* New functions
- Onesided early support for : MPI_Win_(create, free, fence, get_name, set_name, get_group), MPI_Get, MPI_Put, MPI_Accumulate, MPI_Alloc_mem, MPI_Free_mem.
- MPI_Keyval*, MPI_Attr* functions, as well as MPI_Comm_attr*, MPI_Type_attr* variants (C only, no Fortran support yet)
- MPI_Type_set_name, MPI_Type_get_name
- MPI_*_c2f and MPI_*_f2c functions
- MPI_Info_* functions (beware, get_nthkey may not follow the insertion order)
- MPI_Pack, MPI_Unpack and MPI_Pack_size functions
- Activate a lot of new tests from the mpich 3 testsuite
* Features
- Constant times can be injected inside MPI_Wtime and MPI_Test through options smpi/wtime and smpi/test
- InfiniBand network model added : Based on the works of Jerome Vienne
http://mescal.imag.fr/membres/jean-marc.vincent/index.html/PhD/Vienne.pdf
- When smpi/display_timing is set, also display global simulation time and application times
- Have smpirun, smpicc and friends display the simgrid git hash version on --git-version
* Collective communications
- SMP-aware algorithms are now dynamically handled. An internal communicator is created for each node, and an external one to handle communications between "leaders" of each node
- MVAPICH2 (1.9) collective algorithms selector : normal and SMP algorithms are handled, and selection logic is based on the one used on TACC's Stampede cluster (https://www.tacc.utexas.edu/stampede/).
- Support for Rabenseifner Reduce/Allreduce algorithms (https://fs.hlrs.de/projects/par/mpi//myreduce.html)
* Replay
- Replay now uses algorithms from wanted collective selector
- Replay can be used with SMP-aware algorithms
- Memory occupation of replay should now be contained (temporary buffers allocated in collective algorithms should be shared between processes)
- Replay can now replay several traces at the same time (check examples/smpi/replay_multiple example), to simulate interactions between several applications on a given platform. User can specify the start time of each instance. This should also allow replay + actual applications to run.
* Bug fixes
- [#17799] : have mpi_group_range_incl and mpi_group_range_excl better test some corner cases
- Correctly use loopback on fat-tree clusters
- Asynchronous small messages shouldn't trigger deadlocks anymore
* Energy/DVFS cleanup and improvement
- smpi_set_host_power_peak_at() -> smpi_set_host_pstate()
- new: smpi_get_host_pstate()
SURF
* Bug fixes
- "Full" network optimization flag was broken since Surf++
- Better handling of precision flags in maxmin
- Fix bug causing sometimes "Impossible" errors
- Properly pass cluster properties to included hosts
* Improvement of the Energy plugin.
- Always update the consumption before returning that value
- New property: watt_off to denote the dissipation when the host is off
- New functions getWattMinAt and getWattMaxAt to retrieve the
dissipation of pstates that we are not currently at.
* Java: class NetworkLink renamed to Link
* New function: simcall_process_get_kill_time()
* Massive rename s/workstation/host/
- That's intrusive, but that's good for the project consistency. Sorry.
- Change config option "workstation/model" into "host/model"
XBT
* New functions
- Add a xbt_heap_update function, to avoid costly xbt_heap_remove+xbt_heap_insert use
- Add a xbt wrapper for simcall_mutex_trylock (asked in [#17878])
- Add two new log appenders : rollfile and splitfile. Patch by Fabien Chaix.
- xbt_dirname and xbt_basename for non-POSIX systems
MC
* The model checker now runs as a separate process.
* The model checker runs must now be launched with the new simgrid-mc program.
* Record/Replay: the MC can display a textual representation of a path in the
execution graph. It can then be replayed outside of the model checker.
-- Mon Oct 12 06:02:41 CEST 2015 Da SimGrid team <[email protected]>
SimGrid (3.11) stable; urgency=low
The Class Release.
Tools:
* Normalizing pointers addresses tool for better diff between logs
Examples:
* Add cloud examples using new VMs
- examples/msg/cloud/two_tasks_vm.tesh
- examples/msg/cloud/simple_vm.tesh
- examples/java/cloud/cloud.tesh
- examples/java/cloud/migration/migration.tesh
* Add java surf examples:
- examples/java/surfPlugin/surf_plugin.tesh
- examples/java/reservationSurfPlugin/reservation_surf_plugin.tes
- examples/java/surfCpuModel/surf_cpu_model.tesh
* Add SMPI+MSG example:
- examples/smpi/smpi_msg_masterslave/
TeshSuite:
* Add tests:
- msg process test
- msg task destroy cancel test
- msg_host on/off test
* Move all tests in testsuite to teshsuite (adding tesh files)
* Restructure teshsuites
- one folder for each kind of test
* Restructure AddTests.cmake
- unify tests names
- structure the order of tests (with sections)
MSG:
* Add virtual machine
- creation of a VM on a PM
- migration of a VM from a PM to another PM
* New functions
- MSG_process_join(msg_process_t process, double timeout)
- msg_bar_t MSG_barrier_init(unsigned int count)
- int MSG_barrier_wait(msg_bar_t barrier)
- void MSG_barrier_destroy(msg_bar_t barrier)
- msg_as_t MSG_environment_as_get_by_name(const char * name)
* New option "msg/debug_multiple_use" to help debugging when a task is used
several times
* MSG IO
- Improvements and finalization of MSG_storage, MSG_file APIs and their
documentation
- Increase code coverage in test suites
- Bug fixes
SIMIX:
* Protect context stacks against stack overflow. The number of protected memory
pages allocated on the top of each stack (1 by default) can be configured
with the new command line option --cfg=contexts/guard_size:<value>.
* Simcalls are now generated by a python script that
- generates files included by SimGrid
- checks that all the functions exist, and proposes prototypes
* Clean simcalls
- remove sem_destroy, file_set_data, comm_destroy, vm_set_state,
host_set_data, host_get_data
* New simcalls
- simcall_process_join(smx_process_t process, double timeout)
* Fix bug where sleeping processing could not be suspended.
SURF:
* Translate surf models from C to C++
- Generic classes for all models: Model, Resource, Action
- A generic interface for each kind of model (CPU, Network, Storage
Workstation, WorkstationVM)
- C bindings
* Translate surf routings from C to C++
* Add callbacks using sigc++ or boost::signals2
- Add callback functions for resource creation/destruction
- Add callback functions for action state change
- Handle Energy as a plugin
* Replace swag by boost::intrusive
* Add new routing models for clusters. For documentation, see
http://simgrid.gforge.inria.fr/simgrid/latest/doc/platform.html#pf_cluster
- tori, with topology="TORUS" and topo_parameters="ndim1,ndim2,...,ndimn"
parameters for cluster tag
- Fat trees, with topology="FAT_TREE" and
topo_parameters="h;m1,...,mh;w1,...,wh;p1,...,ph" parameters for cluster tag
- see examples/platforms/torus_cluster.xml and
examples/platforms/fat_tree_cluster.xml
* More documentation
SMPI:
* Hostfiles support host:nb_processes construct to deploy several processes on
one node.
* Collective communication algorithms should not crash if used with
improper number of nodes and report the error.
* SMPI now partially supports MPI_Topologies : MPI_Cart_create, MPI_Cart_shift,
MPI_Cart_rank, MPI_Cart_get, MPI_Cart_coords, MPI_Cartdim_get,
MPI_Dims_create, MPI_Cart_sub are supported.
* New interface to use SMPI programmatically (still depends on MSG for
some parts, see examples/smpi/smpi_msg_masterslave) :
- SMPI_app_instance_register(const char *name, xbt_main_func_t code,
int num_processes)
- SMPI_init()
- SMPI_finalize();
* Global variables privatization in MPI executables is now performed at runtime
with the option smpi/privatize_global_variables (default:no).
Limitations : Linux/BSD only, with mmap enabled. Global variables inside
dynamic libraries loaded by the application are not privatized (static
linking with these libraries is advised in this case)
Tracing:
* Options defined in XML work correctly now.
Java:
* New cmake option, enable_lib_in_jar, to control whether native libraries are
copied into simgrid.jar or not (ON by default). Use this option if you want
to reduce the size of the installed simgrid.jar, *and* the native libraries
are kept installed elsewhere.
* Surf binding with SWIG (code generated in maintainer mode only):
- plugin to handle callbacks
- CPU model only for the moment
Build System:
* Supernovae build mode is definitively removed. It was used to improve
inlining and inter-module optimizations. It is nowadays superseded by
link-time optimizations commonly available in compilers.
* Update ns-3 find lib. Bindings for ns-3 should work again now.
* Add boost dependency for surf++
* Add new macro for tests
- ADD_TESH(name <tesh_args>)
- ADD_TESH_FACTORIES(name "thread;ucontext;raw" <tesh_args>)
XBT:
* New functions
- xbt_bar_t XBT_barrier_init(unsigned int count)
- int XBT_barrier_wait(xbt_bar_t barrier)
- void XBT_barrier_destroy(xbt_bar_t barrier)
* Make the xbt_os_time module public
-- Sat May 31 22:39:38 CEST 2014 Da SimGrid team <[email protected]>
SimGrid (3.10) stable; urgency=low
The Clean Diaper Release, a.k.a. SimGrid is leak-free.
Java:
* Reintegrate Java to the main archive as desynchronizing these
package is not acceptable anymore (Java is now considered stable)
* Add explicit synchronization facilities through semaphores
* Bug fix: Task.setDataSize() only changed the C world, not the value
cached in the Java world
MSG:
* Dramatically change the way files are handled. API and internals changed, but
this part of MSG was not considered as production grade either.
* Add explicit synchronization facilities through semaphores
* Add a new function MSG_host_get_process_list()
* Preliminary DVFS support (see examples/msg/energy/ for details)
SMPI:
* SMPI is now included directly in the libsimgrid as the windows
linker doesn't force us on splitting it anymore.
* Improvements of the SMPI replay tool:
- Most of the collective communications are now rooted in the same process as
in the original application.
- Traces now rely on the same MPI data type as the application (MPI_BYTE was
used until now). Multiple data types can now be used in a trace.
- The replay tool now supports traces produce either by TAU or a modified
version of MPE.
- Bug Fix: the compute part of the reduce action is now taken into account.
- Gatherv collective is now supported
- SimGrid (SMPI for now) can generate replay traces as well. Option -trace-ti
of smpirun outputs time independent traces for the current run. One file
is created per process. If too many processes are simulated, this behavior
can be changed to one file for all processes by using the
tracing/smpi/format/ti_one_file flag
* smpirun generates the host file if needed (with given host count and platform)
* Integration of more than 100 STAR-MPI, MPICH, OpenMPI collective algorithms
- allows to select one in particular with --cfg=smpi/coll_name:algorithm
- allows to use the decision logic of OpenMPI(1.7) or MPICH(3.0.4) by setting
--cfg=smpi/coll_selector:(mpich/ompi)
* Support for new functions : MPI_Issend, MPI_Ssend, Commutative operations in
Reduce
* Add a --cfg:tracing/smpi/internals option, to trace internal communications
happening inside a collective SMPI call.
* Fix the behavior of complex data types handling.
* Make MPI_Wtime another synchronization point to take computations into
account.
* Replace MPICH-1 test suite by the one from MPICH 3.0.4. Can be built using
enable_smpi_MPICH3_testsuite flag in cmake. Run with ctest.
* Add all missing Fortran bindings, SMPI should work with Fortran 90
(no privatization of global variables yet)
* Preliminary DVFS support (see examples/smpi/energy/ for details)
Model-Checking;
* Verification of liveness properties is now available for SMPI applications
(in addition to MSG applications)
* Bugged examples using SMPI in examples/smpi/mc/
* Add --cfg=model-check/visited option. Allows the verification of infinite
programs. Detection of loops in the execution thanks to the system state
comparison and reduction of the state space to explore. Can be combined with
DPOR for safety properties.
SimDag:
* Allow to change SimGrid configuration (see --help) within the code
thanks to SD_config() as it can be done in MSG.
* Add a new function SD_task_set_amount() upon user request.
PLATFORM:
* Handle units for values (10ms, 10kiloflops, 10Bps, 1GB, ...)
* Remove rule based routing (no more PCRE dependency)
* Add a limiter_link option to cluster tag, to specify a maximum reachable
bandwidth in fullduplex mode when it is less than twice the nominal bandwidth.
* Add a loopback_bw and loopback_lat options to cluster tag.
* Fix the peer tag that could not be mixed with other AS within a Vivaldi
routing. Now peers are encapsulated in an AS and have their own private
router but this is transparent.
XBT:
* Our own implementation of getline is renamed xbt_getline, and gets
used even if the OS provide a getline(). This should reduce the
configuration complexity by using the same code on all platforms.
* New type: xbt_cfg_elm_boolean.
* Allow to use yes/no for boolean configuration options in the command line.
* Allow to disable SimGrid cleanups at exit from command line option.
There are situations where one may want a simulation to end with an exit.
Unfortunately, calling exit may cause SimGrid to segfault, which is quite
annoying when scripting around the simulator. Adding a
--cfg=clean_atexit:no allows to circumvent this issue.
Build System:
* Lots of memory leaks were corrected in this release.
There is no known memory leaks anymore, in all of our 600+ tests.
* New command line option --version, to get SimGrid version information.
Packagers may want to add extra words to SIMGRID_VERSION_EXTRA defined in
CMakeLists.txt.
* Supernovae builds are deprecated, and expected to be removed in the next
version of SimGrid.
-- Sun Nov 17 00:26:44 CET 2013 Da SimGrid team <[email protected]>
SimGrid (3.9) stable; urgency=low
The Grasgory release: GRAS is really dead now.
* Complete overhaul of the internal host structures scheme.
GRAS:
* If you use GRAS, you should stay at SimGrid 3.5 (at most) since it
was considered as experimental and badly maintained since then.
* Keeping it was thus a trap to our potential users, that could take
it instead of MSG or SMPI by mistake despite is pity state.
* GRAS seems to have very few users (if any), and no one volunteered
to maintain it further. It also induces a lot of XBT code (for
portability sake), that must be maintained too.
* For all these reasons, we killed GRAS. If someone wants to revive it
in the future, don't cry, our git history still remembers of GRAS.
Documentation:
* Major overhaul. Merge our documentation again as time proved that
splitting it was really not helping our users.
* Further improve the developer documentation to help newcomers
hacking on SimGrid itself. The user documentation (and in
particular, the beginner documentation) is still in a sorry state.
SMPI:
* Now works on Windows too!
* Much more extensive test suite, from MPICH
SIMDAG:
* Add a new loader (SD_PTG_dotload) that creates a parallel task graph
(i.e., a DAG whose nodes are parallel tasks) from a dot file. Creates a
dynar of SD_TASK_COMP_PAR_AMDAHL and SD_TASK_COMM_MXN_1D_BLOCK tasks.
* Bug fix: let task be scheduled when the last dependency to be solved is
a control dependency.
* Remove SD_load_environment_script function.
Use the C sg_platf function if you want to declare a platform
programmatically.
MSG:
* New function: MSG_process_get_number()
* Old function documented: MSG_config()
* Remove MSG_load_platform_script function
Use the C sg_platf function if you want to declare a platform
programmatically.
SURF:
* Change the default value of the TCP_gamma constant (maximal size of TCP
congestion window) to a more realistic 4MiB value. If you notice changes in
your simulation results, you can fall back to the previous 20k tiny window
by adding --cfg=network/TCP_gamma:20000 on command line.
* (Hopefully) fix a bug wrt periodic availability and state traces
* Bug fix: use default values at start when first event in availability/state
trace is not at time 0.
PLATFORM:
* remove the "new_" part of function name sg_platf_new_trace_connect
(resulting in sg_platf_trace_connect), since it does not create
anything new
XBT:
* Kill synchronized dynars, and xbt_dynar_dopar(). We cannot think of a
use case where it's really mandatory, and maintaining it was a pain in
our code base.
* New: xbt_fifo_search(), search an item with a user-provided
comparison function instead of dumb pointer comparison.
LUA:
* Fix the lua deployment:
Use `simgrid.init_application()` before deployment instead of
`simgrid.msg_register_application()` after.
TRACING:
* Transfer the tracing files into the corresponding modules.
-- Tue Feb 5 11:31:43 CET 2013 Da SimGrid team <[email protected]>
SimGrid (3.8.1) stable; urgency=low
The "we are told that some people want to also *install* the simgrid
framework" release.
* Add missing file "tesh.1" to the archive.
-- Sat Oct 27 16:12:11 CEST 2012 Da SimGrid team <[email protected]>
SimGrid (3.8) stable; urgency=low
The Psssshiiiit release: SimGrid jumps into the Cloud.
MSG:
* Add an experimental interface to manipulate VMs. They are mainly
process groups with very few intrinsic semantic, but they should
allow you to build the semantic you want easily.
* New function: MSG_host_set_property_value()
* New function: MSG_process_on_exit(). To clean memory in all cases.
* Bug fixes that made the host (and link) failures unusable.
* Add a way to auto-restart process when the host in which they are
executing comes back (ON_FAILURE="RESTART" on deployment file,
MSG_process_auto_restart_set).
* Use the "msg_" prefix for all datatypes (instead of m_, msg_ and MSG_),
please stop using the old ones, they are DEPRECATED.
* Deprecate functions MSG_global_init() / MSG_global_init_args()
Please use MSG_init() instead. (reducing the amount of entry
points in the library helps us).
* Make it impossible to link against the wrong version of the lib
* Deprecate MSG_clean(). No need to call it anymore.
* Function MSG_get_host_number() is not deprecated anymore.
Documentation:
* Split the doc into a user guide and a reference guide.
* Start a developper guide to help people hacking on SimGrid.
Cmake:
* Enable tracing by default. This modules rocks you should use it.
* Remove option custom_flags. Now use environment variables CFLAGS
and LDFLAGS.
* Use default cmake things to detect lua instead of home grown ones.
* New option "enable_mallocators" to disable mallocators, for debugging
purpose ("on" by default).
SIMIX:
* Bug fixes around the resource failures: don't let the processes
survive the host they are running onto.
* Add an interface to auto-restart processes when the host in which they are
executing comes back.
* Ensures that SIMIX_clean is called automatically. It's not part of
the public interface anymore (bindings should be updated).
SimDag:
* Bug fix for when SD_Simulate is called with a positive value: be careful
when comparing doubles. Sometimes they are different for non significant
digits only.
* New types of typed tasks. SD_TASK_COMP_PAR_AMDAHL represents a
parallel task whose initial work is distributed among host according
to the Amdahl's law. Such tasks are created with a parameter alpha
that corresponds to the non-parallelizable part of the computation.
SD_TASK_COMM_PAR_MXN_1D_BLOCK represents a complex data redistribution
between two sets of workstations assuming a 1D block distribution (each
workstation owns a similar share of data) on both sides.
These tasks can be scheduled with SD_task_schedulel or SD_task_schedulev.
Data redistribution will be automatically scheduled once parent and child
are both scheduled. The filling of computation_amount and
communication_amount structures is now done seamlessly thanks to the chosen
assumptions.
* New function SD_workstation_dump to display various information
* New function SD_task_set_rate to throttle the bandwidth allowed to be used
by a SD_TASK_COMM_E2E typed task. This rate depends on both the nominal
bandwidth on the route onto which the task is scheduled and the amount of
data to transfer.
To divide the nominal bandwidth by 2, the rate then has to be :
rate = bandwidth/(2*amount)
* Compute tasks that have failed can now be rescheduled and executed again
(from their beginning)
* Increasing source code coverage (src/simdag is now covered at 95.8%
on average)
SMPI:
* Re-implement time-independent trace replay using SMPI (at the
smpi_smp_* level) instead of MSG. This should replace
examples/msg/actions/actions.c
* Implement support of MPI Datatypes (vectors, hvectors, indexed,
hindexed and structs)
* Implement the exchange of non-contiguous data.
[Khalid Hasanov & Jean-Noel Quintin] Thanks for the patch, guys.
* Correct behavior of smpi/sender_gap and set its default value to 0
* Add option to asynchronously send small messages to allow better
simulation of pt2pt communications. --cfg=smpi/async_small_threshold:value
specifies the size in bytes under which messages will be asynchronously sent.
* Add support of MPI_Iprobe, MPI_Probe, MPI_Testall, MPI_Wtick functions
* SMPI now handles more MPI specific values in input. Closes [#14389] and [#14388]
SimGrid:
* New C interface to define a platform: XML is now optional.
For more info, please check include/simgrid/platf.h.
* New interface to define random platforms from the C:
For more info, please check include/simgrid/platf_generator.h and
examples/msg/masterslave/masterslave_platfgen.c
* Export a sg_cmdline dynar containing all the arguments we got from
the command line.
TRACE:
* Two new tracing options for adding comments to trace file so you
can track your experiments (see --help-tracing for details).
* New option to generate a impoverished trace file (--cfg=tracing/basic:1)
* Adding the SimGrid version that generated the trace file as a comment.
* Instrumenting other MSG functions (MSG_task_isend_with_matching and MSG_task_dsend)
* Fix to avoid key clashes on Paje links
* Other minor fixes related to the Paje specification
XBT:
* Functions xbt_dict_hash() and xbt_dict_hash_ext() are made public,
and renamed to xbt_str_hash() and xbt_str_hash_ext().
* New function: xbt_os_timer_resume() to restart a timer w/o resetting it.
* Greatly improve the robustness of mmalloc to user errors (such as
using an area after freeing it, or freeing it twice)
-- Thu Oct 25 17:30:06 CEST 2012 Da SimGrid team <[email protected]>
SimGrid-java (3.8.1) stable; urgency=low
* New module: org.simgrid.trace.Trace (SimGrid trace bindings)
Warning: all methods are visible, but only some of them are
implemented so far. Check the source (src/jtrace.c)
for further information.
* New module: org.simgrid.msg.File (SimGrid File management functions)
* New Module: org.simgrid.msg.VM (SimGrid interface to mimick IAAS clouds)
* Change the meaning of Process.restart: now restart the process from
the begining, like MSG_process_restart in C.
* Add Process.setAutoRestart: handling of process restart when failed
host comes back.
* Add Process.getProperty, Host.getProperty, Host.getProperty: allows
you to retrieve the properties of the processes/hosts
* Deprecate Msg.clean(): you can just forget about it now.
* New function Process.getCount(), that only works when compiling
with the not yet released version 3.9 of the C library.
* New context factory based on Coroutines. It mandates a modified JVM
but then, the simulations run about five times faster, and there is
no limit to the amount of processes (beside of the available memory).
-- 2012-12-04 Da SimGrid team <[email protected]>
SimGrid (3.7.1) stable; urgency=low
MSG:
* Restore the prototype of MSG_process_create_with_environment() to
the pre-3.7 situation by removing the kill_time argument.
* Add a MSG_process_set_kill_time() function instead.
SURF:
* Fix weird behaviors when dealing with parallel tasks.
WINDOWS:
* Simgrid is now built as a dll.
* Simgrid-java now works on Windows.
* Simgrid-Java is now included into Windows package.
MacOS:
* First pre-build package for MacOSX.
Build System:
* Fix compilation when using MSG_USE_DEPRECATED.
* Fix some compilation issues on Macs and Windows.
* Reduce the number of failing tests on exotic systems, like Debian/Hurd.
* Environment variables CFLAGS and LDFLAGS are now honored by cmake.
We discovered that the Lua console is broken, but we are missing the
manpower to fix it right now. The problem existed in 3.7 too, so we
are not blocking the release for that. Sorry if you depended on this
feature, any help would be really welcome.
-- Thu Jun 7 2012 Da SimGrid team <[email protected]>
SimGrid-java (3.7.1) stable; urgency=low
The "Java aint got to be bloated and slow" release
Major cleanups:
* Various internal cleanups and performance improvement
Simulations are expected to run up to twice faster or so
* Make Process.kill(process) an instance method, not a static one
* User processes are not java.lang.Thread subclasses.
This breaks the compatibility (sorry), but previous API was
brain-dead, making it impossible to have non-trivial
initializations in the process constructor.
* Require a full constructor per Process sub-class.
Kinda breaks the compatibility (sorry), but this allows a much more
efficient way to launch the processes at simulation startup.
* Do not embeed our version of semaphores, java 1.5 can be considered
as sufficiently prevalent for us to not dupplicate its features.
* Lot of bug fixes
Extend the API:
* Add examples for almost every part of the API
We spotted and fixed a lot of bugs in the process
* New module: asynchronous communication API
* New function: Process.sleep()
It takes milliseconds as argument, just as java.lang.Thread.sleep()
* New module: org.simgrid.msg.Mutex (SimGrid mutexes)
* New module: org.simgrid.msg.RngStream (RngStreams random generators)
-- 2012-06-12 Da SimGrid team <[email protected]>
SimGrid (3.7) stable; urgency=low
The "spring cleanups (before the next Big Project kicks in)" release.
Models:
* We can specify the SMPI latency/bandwidth factor with command line
add --cfg=smpi/bw_factor:"threshold0:value0;...;thresholdN:valueN"
or add --cfg=smpi/lat_factor:"threshold0:value0;...;thresholdN:valueN"
You can also use the "config tag" from platform file by adding this line
<prop id="smpi/bw_factor" value="threshold0:value0;...;thresholdN:valueN"></prop>
(see "example/platforms/tag_config.xml" to use "config tag").
Note that the command line supersedes the platform file configuration.
* Change the correction factors used in LMM model, according to
the latest experiments described in INRIA RR-7821.
Accuracy should be improved this way.
* Use the partial invalidation optimization by default for the
network too. Should produce the exact same results, only faster.
* Major cleanup in surf to merge models and split some optimization
mechanisms from the core of the models. As a result you can now
specify which model to use (e.g., --cfg=network/model:LV08
--cfg=cpu/model:Cas01) and which optimization mode to use
(e.g., --cfg=network/optim:lazy --cfg=cpu/optim:TI).
Incompatible combinations should err at initialization. See
--help-models for the list of all models and optimization modes.
* The CLM03 workstation model was dropped for simplicity because it
used the deprecated CM02 network model. Use default instead.
* Rename the TCP_gamma configuration option to network/TCP_gamma
* Rename the coordinates configuration option to
network/coordinates, and document it
* Use now crosstraffic keyword instead of the terribly misleading
fullduplex keyword. It is activated by default now in the current
default model, use --cfg=network/crosstraffic:0 to turn it off.
* Ongoing refactoring the model parsing to make XML files optional
See include/simgrid/platf.h for details (still to be completed)
MSG:
* Major overhaul of the documentation. Almost instructive now :/
* Deprecate the use of m_channel_t mechanism like MSG_task_{get,put}
functions and friends. This interface was considered as
deprecated since over 2 years, it's time to inform our users that it is.
Switch to MSG_task_{send,recv} instead, or compile SimGrid command line
'cmake -Dcustom_flags="-DMSG_USE_DEPRECATED" .' if you really need to
use these (crappy) functions in your code.
These functions will be removed soon. Stop using them now.
* Deprecate MSG_get_host_{table,number}
Implement MSG_hosts_as_dynar() instead.
* Implement MSG_processes_as_dynar() (Closes gforge #13642)
* Remove the public field msg_host_t->name. Use MSG_host_get_name()
Simix:
* Stabilize the parallel execution mode of user contexts
* Introduce configuration variables to control parallel execution:
- contexts/synchro: Synchronization mode to use when running
contexts in parallel (either futex, posix or busy_wait)
- contexts/parallel_threshold: Minimal number of user contexts
that must be part of a scheduling round to switch to parallel
execution mode (raw contexts only)
* Fix bugs that prevented to use suspend/resume along with
synchronization structures.
* Fix bugs in process termination that lead to invalid memory access
in very specific conditions.
SURF:
* Introduce a parallel mode for the models (controlled by surf/nthreads
configuration item). In our tests, running the models in parallel
never lead to any speedups because they are so fast that the gain
of computing each model in parallel does not amortizes the
synchronization costs, even when ultra fast futexes are used.
This is released anyway because YMMV.
SimDag:
* Performance boost by using a swag internally to compute the set of
tasks that are finished and should constitute the return value of
SD_simulate.
SMPI:
* Enable it by default now that it is considered rather stable.
TRACE:
* Documentation of the tracing functions.
* Performance gains when tracing categorized/uncategorized resource
utilization by avoiding calls to get route when updating resource
variables. LMM constraints are being used instead.
* API changed to set task categories. Use MSG_task_set_category instead
of TRACE_msg_set_task_category, and SD_task_set_category instead
of TRACE_sd_set_task_category. They only work if ENABLE_TRACING is ON.
* Bugfix for graphicator, routes not correctly obtained, memory leaks
* Examples for link user variables added (see at examples/msg/tracing/)
* Deprecated function TRACE_msg_set_process_category completely removed
* Trace header updated according to the latest Paje file format
* Tracing network lazy updates, no longer obligate users to use full updates
* --cfg=tracing/platform:1 also registers power/bandwidth variables
* Experimental: let user code declare/set/push/pop application states for hosts
* API changed to allow the manual creation of graph configuration files
for Triva. See TRACE_get_node_types() and TRACE_get_edge_types().
Lua:
* Improve the API of Lua MSG bindings, using the Lua spirit.
* Each simulated process now lives in its own Lua world (globals are
automatically duplicated). It helps writing simulators. Will allow
to run Splay programs within SimGrid in the future.
* Add a Chord example in Lua, equivalent to the MSG one.
MODEL-CHECKING:
* Start the implementation of a solution to express temporal
properties, not only local assertions. This is still an
experimental work in progress, stay clear from it to be safe.
XBT:
* Logs:
- Add new runtime parameters --help-logs and --help-log-categories
to display information about supported logging parameters and
categories.
- Old deprecated parameters --{gras,surf,msg,simix,xbt}-log=...
don't exists anymore.
* Mallocators: allow value NULL for the reset function.
* Dicts:
- New function xbt_dict_new_homogeneous(void(*)(void*)) to
create homogeneous dictionaries, where all the elements share the
same free function. Non homogeneous dictionaries will be
deprecated in the next release.
- Dicts of scalar elements (xbt_dicti_*) are deprecated.
- Multi-level dictionaries are deprecated.
* Dynars:
- new function xbt_dynar_search_or_negative() that is useful when
you have less than 2 million elements in your dynar and don't
want of the extra complexity of catching exceptions when the
element is not found.
* Portability layer
- Make xbt_os_thread module (for thread portability) public.
Documentation is still to come, sorry.
* mmalloc module:
- Cleanups and simplifications to make it maintainable again.
- Exotic features (such as memalign and valloc) were removed.
- The metadata were extended and improved so that the
model-checker becomes able to explore and inspect the heaps.
- This may induce a performance drop when enable_model-checking is
ON in cmake (even if it's not used in the simulation), but it is
necessary at this point to get MC working.
Turn model-checking OFF if simulation performance matters to you.
Not enabling it at runtime is not enough, disable it in cmake.
-- Tue May 15 11:30:19 UTC 2012 Da SimGrid team <[email protected]>
SimGrid (3.6.2) stable; urgency=low
The "Not coding new stuff allows to polish old things" release.
General
* New bindings to the NS3 packet level simulator (experimental)
* Use the raw (efficient) execution contexts instead of the sysv
(portable) ones when possible.
* libpcre is now mandatory in any cases since not using it led to
severe performance loss and possibly other issues
* Update the XML platforms:
- G5K: include the latest machine in Nancy
- GridPP and LCG: new platforms
* Documentation was partially updated, at least (more to come)
Bug fixes, cosmetics and small improvements
* Free terminated processes before the end of the simulation to avoid
exhausting the memory of users having very dynamic amount of
processes.
* Bug fix and cosmetics about canceling non-running tasks
* Bug fix about the dot loader's issues when using libcgraph
Portability
* Create an installer for windows with nsis (amd64 and win32)
- Add an hello world project to illustrate simgrid project creation.
- Embed libpcre into the Simgrid installer to avoid
its compilation burden
* The raw execution contexts should work on Apple now
* Port to Windows 64 bits
- Sysv contexts now have an implementation for this arch
- GRAS communication features now support this arch
* Drop support for borland compiler on windows
- this code was not maintained, and we kinda depend on gcc nowadays
* Fix portability issues on kfreebsd/gnu: build error about semaphores
* Fix portability issue on unstable ubuntu: linker became picky on
argument order
-- Wed Oct 5 15:51:01 CEST 2011 Da SimGrid team <[email protected]>
SimGrid (3.6.1) stable; urgency=low
The "Oops, we broke Macs too" release
Portability
* Fixed contexts detection so that raw ones are used when possible
* On Mac, do not use Posix Ucontexts with gcc v4.[1-5] since this
leads to a strange error, with user code segfaulting sometimes when
the generated code is not perfectly aligned (which is not
controllable from the user side, depends on the amount of code)
XBT
* New macro: CATCH_ANONYMOUS, which is like CATCH(e) but without argument.
-- Mon Jun 27 13:59:03 CEST 2011 Da SimGrid team <[email protected]>
SimGrid-java (3.6) unstable; urgency=low
* Initial release.
* Split of every thing from simgrid v3.5 into a separate package.