[Ns-developers] Status Parallelization
Hagen Paul Pfeifer
hagen at jauu.net
Tue Jun 10 06:19:49 PDT 2008
Hello NS-3 Developers,
since a IRC discussion with Mathieu I temporary dropped the
approach to start to parallelize the Wifi Channel and switched
to a more simple Point-to-Point channel. The synchronization is done via
MPI. And Packet serialization via standard PeekData and Buffer
class respective. So far this simple scenario works as excepted and via
mpirun --np 2 --mca btl \^udapl,openib
the Packet is transmitted and received.
On the other hand the created scenario synchronization is only half-duplex
99% of the implementation is created to work without mass complication.
The main challenge is that ns-3 isn't designed to work in a simultaneously
time I introduced a workaround another problem popped up. This starts at
operations, introduced additional looking/barriers to keep in time and end
common recv/send interfaces like they did in glomosim (as an example). So
there is a
lot of additional work to see an functional parallelized simulator with
code impact in the overall architecture (Mathieu sorry for that - the
impact will not be
minimal because synchronization requires a) a lot of infrastructure and b)
interplay with several components.
So my idea: still focus on a minimal implementation with no or minor focus
BUT first introduce some basic parallelization infrastructure. These
a) a proper working Federate system, that handles m nodes (point to point
as well as
CSMA channels) and n different "execution engines" (e.g. Cores). This is
to get rid of the current "static hacks".
b) introduce a additional abstraction layer to distribute Packets in a
They can be no-ops if no distribution is desired. Currently I graped the
Channel level, barrier and inject into the Device (where the receive
located for point to point devices). The additional layer is also
because there are fewer places where parallelized code is added.
c) Discuss and implement a really simple time synchronization mechanism and
the run queue to work in a distributed manner.
d) Think about the current IO subsystems (trace files, pcap files). E.g.
network simulator (dartmouth.edu) shift the processing to the end. Where
concurrent "threads" already joined.
George, what are your suggestions (also experiences with GTNetS)?
More information about the Ns-developers