Results 1  10
of
24
A methodology for implementing highly concurrent data structures
 In 2nd Symp. Principles & Practice of Parallel Programming
, 1990
"... A con.curren.t object is a data structure shared by concurrent processes. Conventional techniques for implementing concurrent objects typically rely on criticaI sections: ensuring that only one process at a time can operate on the object. Nevertheless, critical sections are poorly suited for asynchr ..."
Abstract

Cited by 323 (12 self)
 Add to MetaCart
A con.curren.t object is a data structure shared by concurrent processes. Conventional techniques for implementing concurrent objects typically rely on criticaI sections: ensuring that only one process at a time can operate on the object. Nevertheless, critical sections are poorly suited for asynchronous systems: if one process is halted or delayed in a critical section, other, nonfaulty processes will be unable to progress. By contrast, a concurrent object implementation is nonblocking if it always guarantees that some process will complete an operation in a finite number of steps, and it is waitfree if it guarantees that each process will complete an operation in a finite number of steps. This paper proposes a new methodology for constructing nonblocking aud waitfree implementations of concurrent objects. The object’s representation and operations are written as st,ylized sequential programs, with no explicit synchronization. Each sequential operation is automatically transformed into a nonblocking or waitfree operation usiug novel synchronization and memory management algorithms. These algorithms are presented for a multiple instruction/multiple data (MIM D) architecture in which n processes communicate by applying read, write, and comparekYswa,p operations to a shared memory. 1
Simulation of networks of spiking neurons: A review of tools and strategies
 Journal of Computational Neuroscience
, 2007
"... We review different aspects of the simulation of spiking neural networks. We start by reviewing the different types of simulation strategies and algorithms that are currently implemented. We next review the precision of those simulation strategies, in particular in cases where plasticity depends on ..."
Abstract

Cited by 54 (23 self)
 Add to MetaCart
We review different aspects of the simulation of spiking neural networks. We start by reviewing the different types of simulation strategies and algorithms that are currently implemented. We next review the precision of those simulation strategies, in particular in cases where plasticity depends on the exact timing of the spikes. We overview different simulators and simulation environments presently available (restricted to those freely available, open source and documented). For each simulation tool, its advantages and pitfalls are reviewed, with an aim to allow the reader to identify which simulator is appropriate for a given task. Finally, we provide a series of benchmark simulations of different types of networks of spiking neurons, including HodgkinHuxley type, integrateandfire models, interacting with currentbased or conductancebased synapses, using clockdriven or eventdriven integration strategies. The same set of models are implemented on the different simulators, and the codes are made available. The ultimate goal of this review is to provide a resource to facilitate identifying the appropriate integration strategy and simulation tool to use for a given
An Empirical Analysis of Algorithms for Constructing a Minimum Spanning Tree
 DIMACS Series in Discrete Mathematics and Theoretical Computer Science
, 1991
"... We compare algorithms for the construction of a minimum spanning tree through largescale experimentation on randomly generated graphs of different structures and different densities. In order to extrapolate with confidence, we use graphs with up to 130,000 nodes (sparse) or 750,000 edges (dense). A ..."
Abstract

Cited by 20 (1 self)
 Add to MetaCart
We compare algorithms for the construction of a minimum spanning tree through largescale experimentation on randomly generated graphs of different structures and different densities. In order to extrapolate with confidence, we use graphs with up to 130,000 nodes (sparse) or 750,000 edges (dense). Algorithms included in our experiments are Prim's algorithm (implemented with a variety of priority queues), Kruskal's algorithm (using presorting or demand sorting), Cheriton and Tarjan's algorithm, and Fredman and Tarjan 's algorithm. We also ran a large variety of tests to investigate lowlevel implementation decisions for the data structures, as well as to enable us to eliminate the effect of compilers and architectures. Within the range of sizes used, Prim's algorithm, using pairing heaps or sometimes binary heaps, is clearly preferable. While versions of Prim's algorithm using efficient implementations of Fibonacci heaps or rankrelaxed heaps often approach and (on the densest graphs) so...
A LockFree Approach to Object Sharing in RealTime Systems
, 1997
"... This work aims to establish the viability of lockfree object sharing in uniprocessor realtime systems. Naive usage of conventional lockbased objectsharing schemes in realtime systems leads to unbounded priority inversion. A priority inversion occurs when a task is blocked by a lowerpriority ta ..."
Abstract

Cited by 16 (0 self)
 Add to MetaCart
This work aims to establish the viability of lockfree object sharing in uniprocessor realtime systems. Naive usage of conventional lockbased objectsharing schemes in realtime systems leads to unbounded priority inversion. A priority inversion occurs when a task is blocked by a lowerpriority task that is inside a critical section. Mechanisms that bound priority inversion usually entail kernel overhead that is sometimes excessive. We propose that lockfree objects offer an attractive alternative to lockbased schemes because they eliminate priority inversion and its associated problems. On the surface, lockfree objects may seem to be unsuitable for hard realtime systems because accesses to such objects are not guaranteed to complete in bounded time. Nonetheless, we present scheduling conditions that demonstrate the applicability of lockfree objects in hard realtime systems. Our scheduling conditions are applicable to schemes such as ratemonotonic scheduling and earliestdeadline...
Functional Binomial Queues
 In Glasgow Workshop on Functional Programming
, 1994
"... Efficient implementations of priority queues can often be clumsy beasts. We express a functional implementation of binomial queues which is both elegant and efficient. We also quantify some of the differences with other functional implementations. The operations decreaseKey and delete always pose a ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
Efficient implementations of priority queues can often be clumsy beasts. We express a functional implementation of binomial queues which is both elegant and efficient. We also quantify some of the differences with other functional implementations. The operations decreaseKey and delete always pose a problem without destructive update, we show how our implementation may be extended to express these. 1 Functional priority queues A crucial part of many algorithms is the data structure that is used. Frequently, an algorithm needs an abstract data type providing a number of primitive operations on a data structure. A priority queue is one such data structure that is used by a number of algorithms. Applications include, Dijkstra's [4] algorithm for singlesource shortest paths, and the minimum cost spanning tree problem (see Tarjan [12] for a discussion of minimumspanning tree algorithms). See Knuth [8] and Aho et al [1] for many other applications of priority queues. A priority queue is a ...
Fishspear: A Priority Queue Algorithm (Extended Abstract)
"... The Fishspear priority queue algorithm is presented and analyzed. Fishspear makes fewer than 80 % as many comparisons as heaps in the worst case, and its relative performance is even better in many common situations. The code itself embodies an unusual recursive structure which permits highly dynami ..."
Abstract

Cited by 11 (1 self)
 Add to MetaCart
The Fishspear priority queue algorithm is presented and analyzed. Fishspear makes fewer than 80 % as many comparisons as heaps in the worst case, and its relative performance is even better in many common situations. The code itself embodies an unusual recursive structure which permits highly dynamic and datadependent execution. Fishspear also differs from heaps in that it can be implemented efficiently using sequential storage such as stacks or tapes, making it possibly attractive for implementation of very large queues on paged memory systems. (Details of the implementation are deferred to the full paper.)
Proximate point searching
 In Proceedings of the 14th Canadian Conference on Computational Geometry (CCCG
, 2002
"... In the 2D point searching problem, the goal is to preprocess n points P = {p1,..., pn} in the plane so that, for an online sequence of query points q1,..., qm, it can quickly determined which (if any) of the elements of P are equal to each query point qi. This problem can be solved in O(log n) time ..."
Abstract

Cited by 11 (5 self)
 Add to MetaCart
In the 2D point searching problem, the goal is to preprocess n points P = {p1,..., pn} in the plane so that, for an online sequence of query points q1,..., qm, it can quickly determined which (if any) of the elements of P are equal to each query point qi. This problem can be solved in O(log n) time by mapping the problem to one dimension. We present a data structure that is optimized for answering queries quickly when they are geometrically close to the previous successful query. Specifically, our data structure executes queries in time O(log d(qi−1, qi)), where d is some distance function between two points, and uses O(n log n) space. Our structure works with a variety of distance functions. In contrast, it is proved that, for some of the most intuitive distance functions d, it is impossible to obtain an O(log d(qi−1, qi)) runtime, or any bound that is o(log n).
Key independent optimality
 In International Symp. on Algorithms and Computation
, 2002
"... A new form of optimality for comparison based static dictionaries is introduced. This type of optimality, keyindependent optimality, is motivated by applications that assign key values randomly. It is shown that any data structure that is keyindependently optimal is expected to execute any access s ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
A new form of optimality for comparison based static dictionaries is introduced. This type of optimality, keyindependent optimality, is motivated by applications that assign key values randomly. It is shown that any data structure that is keyindependently optimal is expected to execute any access sequence where the key values are assigned arbitrarily to unordered data as fast as any offline binary search tree algorithm, within a multiplicative constant. Asymptotically tight upper and lower bounds are presented for keyindependent optimality. Splay trees are shown to be keyindependently optimal. 1
An Efficient File Hierarchy Walker
 In Proc. of the Summer '89 Usenix Conference
, 1989
"... This paper presents an interface specification and an efficient implementation of a general purpose library routine, ftwalk, to traverse a UNIX * file system hierarchy. A number of standard file system utilities, e.g., find, ls, rm, and others have been reimplemented using ftwalk. The total source c ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
This paper presents an interface specification and an efficient implementation of a general purpose library routine, ftwalk, to traverse a UNIX * file system hierarchy. A number of standard file system utilities, e.g., find, ls, rm, and others have been reimplemented using ftwalk. The total source code size is 30 % smaller and the efficiency of all commands improves. More importantly, these commands now handle the file system search in a uniform, robust, and secure manner. New tools have been built with ftwalk. A file system perusing tool, tw, will be described. tw subsumes the functionality of find and xargs. Further, it provides a powerful expression language with a syntax similar to C. For typical applications in which commands are executed on generated file names, tw is 5 to 10 times faster than find. The combination of a powerful language and performance efficiency in tw should reduce the practice of adding directory recursion to commands. 1.