@article{7455, abstract = {The reaction between NiO and (0001)- and ([1\bar102])-oriented Al2O3 single crystals has been investigated on model experimental systems by using the ReflEXAFS technique. Depth-sensitive information is obtained by collecting data above and below the critical angle for total reflection. A systematic protocol for data analysis, based on the recently developed CARD code, was implemented, and a detailed description of the reactive systems was obtained. In particular, for ([1\bar102])-oriented Al2O3, the reaction with NiO is almost complete after heating for 6 h at 1273 K, and an almost uniform layer of spinel is found below a mixed (NiO + spinel) layer at the very upmost part of the sample. In the case of the (0001)-oriented Al2O3, for the same temperature and heating time, the reaction shows a lower advancement degree and a residual fraction of at least 30% NiO is detected in the ReflEXAFS spectra. }, author = {Costanzo, Tommaso and Benzi, Federico and Ghigna, Paolo and Pin, Sonia and Spinolo, Giorgio and d'Acapito, Francesco}, issn = {1600-5775}, journal = {Journal of Synchrotron Radiation}, number = {2}, pages = {395--400}, publisher = {International Union of Crystallography}, title = {{Studying the surface reaction between NiO and Al2O3viatotal reflection EXAFS (ReflEXAFS)}}, doi = {10.1107/s1600577513031299}, volume = {21}, year = {2014}, } @article{7598, author = {Tan, Shutang and Xue, Hong-Wei}, issn = {2211-1247}, journal = {Cell Reports}, number = {5}, pages = {1692--1702}, publisher = {Elsevier}, title = {{Casein kinase 1 regulates ethylene synthesis by phosphorylating and promoting the turnover of ACS5}}, doi = {10.1016/j.celrep.2014.10.047}, volume = {9}, year = {2014}, } @inproceedings{768, abstract = {Task allocation is a classic distributed problem in which a set of p potentially faulty processes must cooperate to perform a set of tasks. This paper considers a new dynamic version of the problem, in which tasks are injected adversarially during an asynchronous execution. We give the first asynchronous shared-memory algorithm for dynamic task allocation, and we prove that our solution is optimal within logarithmic factors. The main algorithmic idea is a randomized concurrent data structure called a dynamic to-do tree, which allows processes to pick new tasks to perform at random from the set of available tasks, and to insert tasks at random empty locations in the data structure. Our analysis shows that these properties avoid duplicating work unnecessarily. On the other hand, since the adversary controls the input as well the scheduling, it can induce executions where lots of processes contend for a few available tasks, which is inefficient. However, we prove that every algorithm has the same problem: given an arbitrary input, if OPT is the worst-case complexity of the optimal algorithm on that input, then the expected work complexity of our algorithm on the same input is O(OPT log3 m), where m is an upper bound on the number of tasks that are present in the system at any given time.}, author = {Alistarh, Dan-Adrian and Aspnes, James and Bender, Michael and Gelashvili, Rati and Gilbert, Seth}, pages = {416 -- 435}, publisher = {SIAM}, title = {{Dynamic task allocation in asynchronous shared memory}}, doi = {10.1137/1.9781611973402.31}, year = {2014}, } @article{769, abstract = {This article presents the first tight bounds on the time complexity of shared-memory renaming, a fundamental problem in distributed computing in which a set of processes need to pick distinct identifiers from a small namespace. We first prove an individual lower bound of ω(k) process steps for deterministic renaming into any namespace of size subexponential in k, where k is the number of participants. The bound is tight: it draws an exponential separation between deterministic and randomized solutions, and implies new tight bounds for deterministic concurrent fetch-and-increment counters, queues, and stacks. The proof is based on a new reduction from renaming to another fundamental problem in distributed computing: mutual exclusion. We complement this individual bound with a global lower bound of ω(klog(k/c)) on the total step complexity of renaming into a namespace of size ck, for any c = 1. This result applies to randomized algorithms against a strong adversary, and helps derive new global lower bounds for randomized approximate counter implementations, that are tight within logarithmic factors. On the algorithmic side, we give a protocol that transforms any sorting network into a randomized strong adaptive renaming algorithm, with expected cost equal to the depth of the sorting network. This gives a tight adaptive renaming algorithm with expected step complexity O(log k), where k is the contention in the current execution. This algorithm is the first to achieve sublinear time, and it is time-optimal as per our randomized lower bound. Finally, we use this renaming protocol to build monotone-consistent counters with logarithmic step complexity and linearizable fetch-and-increment registers with polylogarithmic cost.}, author = {Alistarh, Dan-Adrian and Aspnes, James and Censor Hillel, Keren and Gilbert, Seth and Guerraoui, Rachid}, journal = {Journal of the ACM}, number = {3}, publisher = {ACM}, title = {{Tight bounds for asynchronous renaming}}, doi = {10.1145/2597630}, volume = {61}, year = {2014}, } @inproceedings{770, abstract = {Dynamic memory reclamation is arguably the biggest open problem in concurrent data structure design: All known solutions induce high overhead, or must be customized to the specific data structure by the programmer, or both. This paper presents StackTrack, the first concurrent memory reclamation scheme that can be applied automatically by a compiler, while maintaining efficiency. StackTrack eliminates most of the expensive bookkeeping required for memory reclamation by leveraging the power of hardware transactional memory (HTM) in a new way: it tracks thread variables dynamically, and in an atomic fashion. This effectively makes all memory references visible without having threads pay the overhead of writing out this information. Our empirical results show that this new approach matches or outperforms prior, non-automated, techniques.}, author = {Alistarh, Dan-Adrian and Eugster, Patrick and Herlihy, Maurice and Matveev, Alexander and Shavit, Nir}, publisher = {ACM}, title = {{StackTrack: An automated transactional approach to concurrent memory reclamation}}, doi = {10.1145/2592798.2592808}, year = {2014}, } @inproceedings{771, abstract = {We consider the following natural problem: n failure-prone servers, communicating synchronously through message passing, must assign themselves one-to-one to n distinct items. Existing literature suggests two possible approaches to this problem. First, model it as an instance of tight renaming in synchronous message-passing systems; for deterministic solutions, a tight bound of ©(logn) communication rounds is known. Second, model the scenario as an instance of randomized load-balancing, for which elegant sub-logarithmic solutions exist. However, careful examination reveals that known load-balancing schemes do not apply to our scenario, because they either do not tolerate faults or do not ensure one-to-one allocation. It is thus natural to ask if sublogarithmic solutions exist for this apparently simple but intriguing problem. In this paper, we combine the two approaches to provide a new randomized solution for tight renaming, which terminates in O (log log n) communication rounds with high probability, against a strong adaptive adversary. Our solution, called Balls-into-Leaves, combines the deterministic approach with a new randomized scheme to obtain perfectly balanced allocations. The algorithm arranges the items as leaves of a tree, and participants repeatedly perform random choices among the leaves. The algorithm exchanges information in each round to split the participants into progressively smaller groups whose random choices do not conflict. We then extend the algorithm to terminate early in O(log log) rounds w.h.p., where is the actual number of failures. These results imply an exponential separation between deterministic and randomized algorithms for the tight renaming problem in message-passing systems.}, author = {Alistarh, Dan-Adrian and Denysyuk, Oksana and Rodrígues, Luís and Shavit, Nir}, pages = {232 -- 241}, publisher = {ACM}, title = {{Balls-into-Leaves: Sub-logarithmic renaming in synchronous message-passing systems}}, doi = {10.1145/2611462.2611499}, year = {2014}, } @inproceedings{772, abstract = {Lock-free concurrent algorithms guarantee that some concurrent operation will always make progress in a finite number of steps. Yet programmers prefer to treat concurrent code as if it were wait-free, guaranteeing that all operations always make progress. Unfortunately, designing wait-free algorithms is generally a very complex task, and the resulting algorithms are not always efficient. While obtaining efficient wait-free algorithms has been a long-time goal for the theory community, most non-blocking commercial code is only lock-free. This paper suggests a simple solution to this problem. We show that, for a large class of lock-free algorithms, under scheduling conditions which approximate those found in commercial hardware architectures, lock-free algorithms behave as if they are wait-free. In other words, programmers can keep on designing simple lock-free algorithms instead of complex wait-free ones, and in practice, they will get wait-free progress. Our main contribution is a new way of analyzing a general class of lock-free algorithms under a stochastic scheduler. Our analysis relates the individual performance of processes with the global performance of the system using Markov chain lifting between a complex per-process chain and a simpler system progress chain. We show that lock-free algorithms are not only wait-free with probability 1, but that in fact a general subset of lock-free algorithms can be closely bounded in terms of the average number of steps required until an operation completes. To the best of our knowledge, this is the first attempt to analyze progress conditions, typically stated in relation to a worst case adversary, in a stochastic model capturing their expected asymptotic behavior.}, author = {Alistarh, Dan-Adrian and Censor Hillel, Keren and Shavit, Nir}, pages = {714 -- 723}, publisher = {ACM}, title = {{Are lock-free concurrent algorithms practically wait-free?}}, doi = {10.1145/2591796.2591836}, year = {2014}, } @inproceedings{773, abstract = {We describe a new randomized consensus protocol with expected message complexity O(n2log2n) when fewer than n/2 processes may fail by crashing. This is an almost-linear improvement over the best previously known protocol, and within logarithmic factors of a known Ω(n2) message lower bound. The protocol further ensures that no process sends more than O(n log3n) messages in expectation, which is again within logarithmic factors of optimal.We also present a generalization of the algorithm to an arbitrary number of failures t, which uses expected O(nt + t2log2t) total messages. Our protocol uses messages of size O(log n), and can therefore scale to large networks. We consider the problem of consensus in the challenging classic model. In this model, the adversary is adaptive; it can choose which processors crash at any point during the course of the algorithm. Further, communication is via asynchronous message passing: there is no known upper bound on the time to send a message from one processor to another, and all messages and coin flips are seen by the adversary. Our approach is to build a message-efficient, resilient mechanism for aggregating individual processor votes, implementing the message-passing equivalent of a weak shared coin. Roughly, in our protocol, a processor first announces its votes to small groups, then propagates them to increasingly larger groups as it generates more and more votes. To bound the number of messages that an individual process might have to send or receive, the protocol progressively increases the weight of generated votes. The main technical challenge is bounding the impact of votes that are still “in flight” (generated, but not fully propagated) on the final outcome of the shared coin, especially since such votes might have different weights. We achieve this by leveraging the structure of the algorithm, and a technical argument based on martingale concentration bounds. Overall, we show that it is possible to build an efficient message-passing implementation of a shared coin, and in the process (almost-optimally) solve the classic consensus problem in the asynchronous message-passing model.}, author = {Alistarh, Dan-Adrian and Aspnes, James and King, Valerie and Saia, Jared}, editor = {Kuhn, Fabian}, location = {Austin, USA}, pages = {61 -- 75}, publisher = {Springer}, title = {{Communication-efficient randomized consensus}}, doi = {10.1007/978-3-662-45174-8_5}, volume = {8784}, year = {2014}, } @inproceedings{774, abstract = {Lock-free concurrent algorithms guarantee that some concurrent operation will always make progress in a finite number of steps. Yet programmers would prefer to treat concurrent code as if it were wait-free, guaranteeing that all operations always make progress. Unfortunately, designing wait-free algorithms is in general a complex undertaking, and the resulting algorithms are not always efficient, so most non-blocking commercial code is only lock-free, and the design of efficient wait-free algorithms has been left to the academic community. In [2], we suggest a solution to this problem. We show that, for a large class of lock-free algorithms, under scheduling conditions which approximate those found in commercial hardware architectures, lock-free algorithms behave as if they are wait-free. In other words, programmers can keep on designing simple lock-free algorithms instead of complex wait-free ones, and in practice, they will get wait-free progress. Our main contribution is a new way of analyzing a general class of lock-free algorithms under a stochastic scheduler. Our analysis relates the individual performance of processes with the global performance of the system using Markov chain lifting between a complex per-process chain and a simpler system progress chain. We show that lock-free algorithms are not only wait-free with probability 1, but that in fact a broad subset of lock-free algorithms can be closely bounded in terms of the average number of steps required until an operation completes.}, author = {Alistarh, Dan-Adrian and Censor Hille, Keren and Shavit, Nir}, pages = {50 -- 52}, publisher = {ACM}, title = {{Brief announcement: Are lock-free concurrent algorithms practically wait-free?}}, doi = {10.1145/2611462.2611502}, year = {2014}, } @inproceedings{775, abstract = {The long-lived renaming problem appears in shared-memory systems where a set of threads need to register and deregister frequently from the computation, while concurrent operations scan the set of currently registered threads. Instances of this problem show up in concurrent implementations of transactional memory, flat combining, thread barriers, and memory reclamation schemes for lock-free data structures. In this paper, we analyze a randomized solution for long-lived renaming. The algorithmic technique we consider, called the Level Array, has previously been used for hashing and one-shot (single-use) renaming. Our main contribution is to prove that, in long-lived executions, where processes may register and deregister polynomially many times, the technique guarantees constant steps on average and O (log log n) steps with high probability for registering, unit cost for deregistering, and O (n) steps for collect queries, where n is an upper bound on the number of processes that may be active at any point in time. We also show that the algorithm has the surprising property that it is self-healing: under reasonable assumptions on the schedule, operations running while the data structure is in a degraded state implicitly help the data structure re-balance itself. This subtle mechanism obviates the need for expensive periodic rebuilding procedures. Our benchmarks validate this approach, showing that, for typical use parameters, the average number of steps a process takes to register is less than two and the worst-case number of steps is bounded by six, even in executions with billions of operations. We contrast this with other randomized implementations, whose worst-case behavior we show to be unreliable, and with deterministic implementations, whose cost is linear in n.}, author = {Alistarh, Dan-Adrian and Kopinsky, Justin and Matveev, Alexander and Shavit, Nir}, pages = {348 -- 357}, publisher = {IEEE}, title = {{The levelarray: A fast, practical long-lived renaming algorithm}}, doi = {10.1109/ICDCS.2014.43}, year = {2014}, }