Download Data intensive Computing By Gracio, Deborah K.,Gorton, Ian

Download Data intensive Computing By Gracio, Deborah K.,Gorton, Ian

Sinopsis

In our world of rapid technological change, occasionally it is instructive to contemplate how much has altered in the last few years. Remembering life without the ability to view the World Wide Web (WWW) through browser windows will be difficult, if not impossible, for less “mature” readers. Is it only seven years since YouTube first appeared, a Web site that is now ingrained in many facets of modern life? How did we survive without Facebook all those (actually, about five) years ago?

In 2010, various estimates put the amount of data stored by consumers and businesses around the world in the vicinity of 13 exabytes, with a growth rate of 20 to 25 percent per annum. That is a lot of data. No wonder IBM is pursuing building a 120-petabyte storage array.1 Obviously there is going to be a market for such devices in the future. As data volumes of all types – from video and photos to text documents and binary files for science – continue to grow in number and resolution, it is clear that we have genuinely entered the realm of data-intensive computing, or as it is often now referred to, big data.2 Interestingly, the term “data-intensive computing” was actually coined by the scientific community. Traditionally, scientific codes have been starved of sufficient compute cycles, a paucity that has driven the creation of ever larger and faster high-performance computing machines, typically known as supercomputers.

The Top 500 Web site3 shows the latest benchmark results that characterize the fastest supercomputers on the planet. While this fascination with compute performance continues, scientific computing has been gradually coming to terms with the challenges brought by ever-increasing data size and complexity. In 1998, William Johnston’s paper at the Seventh IEEE Symposium on High Performance Distributed Computing [1] described the evolution of data-intensive computing over the previous decade. The achievements described in that paper, while state of the art at the time, now seem modest in comparison to the scale of the problems that are routinely tackled in present-day data-intensive computing applications.

More recently, others including Hey and Trefethen [2], Bell et al. [3], and Newman et al. [4] have described the magnitude of the data-intensive problems faced by the e-science community. Their descriptions of the data deluge that future applications must process, in domains ranging from science to business informatics, create a compelling argument for research and development (R&D) to be targeted at discovering scalable hardware and software solutions for dataintensive problems. While multi-petabyte data sets and gigabit data streams are today’s frontier of data-intensive applications, no doubt ten years from now we will fondly reminisce about these problems, and will be concerned about the looming exascale applications we need to address.

Figure 1.1 lists the general features of traditional computational science applications and their data-intensive counterparts. The former focuses more on solving mathematical equations for static data sets, whereas the latter is concerned with more exploratory search and processing of large, dynamic, and complex data collections.

Content

  1. Data-Intensive Computing: A Challenge for the 21st Century  Ian Gorton and Deborah K. Gracio
  2. Anatomy of Data-Intensive Computing Applications Ian Gorton and Deborah K. Gracio
  3. Hardware Architectures for Data-Intensive Computing Problems: A Case Study for String Matching Antonino Tumeo, Oreste Villa, and Daniel Chavarr´ıa-Miranda
  4. Data Management Architectures Terence Critchlow, Ghaleb Abdulla, Jacek Becla, Kerstin Kleese-Van Dam, Sam Lang, and Deborah L. McGuinness
  5. Large-Scale Data Management Techniques in Cloud Computing Platforms Sherif Sakr and Anna Liu
  6. Dimension Reduction for Streaming Data Chandrika Kamath
  7. Binary Classification with Support Vector Machines Patrick Nichols, Bobbie-Jo Webb-Robertson, and Christopher Oehmen
  8. Beyond MapReduce: New Requirements for Scalable Data Processing Bill Howe and Magdalena Balazinska



Download PDF Algorithmic Language and Program Development : Texts And Monograps In Computer Science By Friedrick L. Bauer

Download PDF Algorithmic Language and Program Development : Texts And Monograps In Computer Science By Friedrick L. Bauer

Sinopsis

The title of this book contains the words ALGORITHMIC LANGUAGE, in the singular. This is meant to convey the idea that it deals not so much with the diversity of programming languages, but rather with their commonalities. The task of formal program development proved to be the ideal frame for demonstrating this unity. It allows classifying concepts and distinguishing fundamental notions from notational features; and it leads immediately to a systematic disposition. This approach is supported by didactic, practical, and theoretical considerations. The clarity of the structure of a programming language designed according to the principles of program transformation is remarkable.

Of course there are various notations for such a language. The notation used in this book is mainly oriented towards ALGOL 68, but is also strongly influenced by PASCAL - it could equally well have been the other way round. In the appendices there are occasional references to the styles used in ALGOL, PASCAL, LISP, and elsewhere.

The book is divided clearly into three parts: the first four chapters concentrate on the level of "applicative" formulation, which is characterized by function application as the dominant language element, and includes problem specifications. The transition to the level of "procedural" formulation - which is characterized by the appearance of program variables - is motivated in Chap. 4 and carried out in Chaps. 5 and 6. In Chap. 7, further development leads to concepts which are particularly important in systems programming for present-day machines: organized stores, pointers and nexuses; characteristically, on this level program variables and pointers are in some sense considered as independent objects.

The transitions between these levels are described by definitional transformations. More generally, we view the entire process of programming as being a chain of program transformations; the individual classes of transformation rules prove to be an excellent didactic means for structuring the material.

The trichotomy mentioned above is fundamental. It has become customary to distinguish between "applicative" and "procedural"; the relative success of LISP and APL is accounted for by the advantages of applicative programming. Backus argues (1978b): "I now regard all conventional languages (e.g., the FORTRANs, the ALGOLs, their successors and derivatives) as increasingly complex elaborations of the style of programming dictated by the von Neumann computer. These 'von Neumann languages' create enormous, unnecessary intellectual roadblocks in thinking about programs and in creating the higher level combining forms required in a really powerful programming methodology."

Here, however, it cannot be the purpose to take sides with one camp or the other. The experienced programmer must master both styles as well as the transition between them. It is also important to distinguish the third level, the level of independent variables and pointers, from the others. The relatively small size of Chap. 7 indicates on the one hand that the description is restricted to the basics, including many points known from the liter ature on systems programming such as D. E. Knuth's "The Art of Computer Programming" or R. M. Graham's "Principles of Systems Programming". On the other hand, it also indicates that the theoretical foundations of this field still need further development.

Every section of this book has a mathematical background of varying degree of development. Some important basic notions stem from lattice theory. This has been impressively shown by the foundational work of D. Scott. Behind the computation structures of the third chapter stands the modern theory of universal algebra; in particular, works of G. Birkhoff and A. Tarski are important here. Since we were not presenting a mathematical textbook, we must frequently content ourselves with hints and references.

The book has developed from lectures and accompanying exercises that were presented in recent years at the Technical University of Munich. It arose in close interaction with the project CIP ("Computer-aided Intuition-guided Programming") and the subproject "Wide spectrum language and program transformations" in the Sonderforschungsbereich 49, Programming Technology, at the Technical University of Munich. Although it attempts to lay the foundations for a well-rounded, consistent "science of programming", much had to remain fragmentary. In some places it was necessary to take seemingly unconventional positions in order to overcome inflexibility and to correct biased doctrines. In this respect the book addresses not only students but also their academic teachers.

Thus, this is not purely a beginner's text; although, as it is frequently said, "no previous knowledge will be assumed" - a certain kind of previous knowledge can even be an obstacle - nevertheless an understanding of the manifold interconnections requires a certain training of thought. Neither is the book a monograph, since the ordering of the material has been influenced decisively by didactic considerations. Rather, the book is directed towards first-year graduate students, as were the lectures from which it has arisen; however, it may also serve to give a guideline for introductory teaching.