Misplaced Pages

Basic Linear Algebra Subprograms

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

A specification often refers to a set of documented requirements to be satisfied by a material, design, product, or service. A specification is often a type of technical standard .

#747252

115-462: Basic Linear Algebra Subprograms ( BLAS ) is a specification that prescribes a set of low-level routines for performing common linear algebra operations such as vector addition, scalar multiplication , dot products , linear combinations, and matrix multiplication . They are the de facto standard low-level routines for linear algebra libraries; the routines have bindings for both C ("CBLAS interface") and Fortran ("BLAS interface"). Although

230-589: A bill of materials . This type of specification is a collaborative effort between a specification writer and a quantity surveyor . This approach is unusual in North America, where each bidder performs a quantity survey on the basis of both drawings and specifications. In many countries on the European continent, content that might be described as "specifications" in the United States are covered under

345-412: A functional specification (also, functional spec or specs or functional specifications document (FSD) ) is the set of documentation that describes the behavior of a computer program or larger software system . The documentation typically describes various inputs that can be provided to the software system and how the system responds to those inputs. Web services specifications are often under

460-491: A language-based protection system , the kernel will only allow code to execute that has been produced by a trusted language compiler . The language may then be designed such that it is impossible for the programmer to instruct it to do something that will violate a security requirement. Advantages of this approach include: Disadvantages include: Examples of systems with language-based protection include JX and Microsoft 's Singularity . Edsger Dijkstra proved that from

575-677: A "Structured Product Label" which drug manufacturers must by mandate use to submit electronically the information on a drug label. Recently, the ISO has made some progress in the area of food and drug standards and formal specifications for data about regulated substances through the publication of ISO 11238. In many contexts, particularly software, specifications are needed to avoid errors due to lack of compatibility, for instance, in interoperability issues. For instance, when two applications share Unicode data, but use different normal forms or use them incorrectly, in an incompatible way or without sharing

690-468: A "general matrix multiplication " ( gemm ), of the form where A and B can optionally be transposed or hermitian-conjugated inside the routine, and all three matrices may be strided. The ordinary matrix multiplication A B can be performed by setting α to one and C to an all-zeros matrix of the appropriate size. Also included in Level 3 are routines for computing where T

805-407: A bug in a device driver might crash the entire system – and the fact that large kernels can become very difficult to maintain; Thompson also stated that "It is also easier for [a monolithic kernel] to turn into a mess in a hurry as it is modified." Monolithic kernels, which have traditionally been used by Unix-like operating systems, contain all the operating system core functions and

920-425: A checked copy of the request is passed through the system call. Hence, not far to travel at all. The monolithic Linux kernel can be made extremely small not only because of its ability to dynamically load modules but also because of its ease of customization. In fact, there are some versions that are small enough to fit together with a large number of utilities and other programs on a single floppy disk and still provide

1035-461: A device present on the system, or any form of communication with other processes requires the use of system calls. A system call is a mechanism that is used by the application program to request a service from the operating system. They use a machine-code instruction that causes the processor to change mode. An example would be from supervisor mode to protected mode. This is where the operating system performs actions like accessing hardware devices or

1150-468: A driver is abstraction; the function of the driver is to translate the OS-mandated abstract function calls (programming calls) into device-specific calls. In theory, a device should work correctly with a suitable driver. Device drivers are used for e.g. video cards, sound cards, printers, scanners, modems, and Network cards. At the hardware level, common abstractions of device drivers include: And at

1265-467: A fork of BLIS that is optimized for the AMD platform. ATLAS is a portable library that automatically optimizes itself for an arbitrary architecture. iMKL is a freeware and proprietary vendor library optimized for x86 and x86-64 with a performance emphasis on Intel processors. OpenBLAS is an open-source library that is hand-optimized for many of the popular architectures. The LINPACK benchmarks rely heavily on

SECTION 10

#1732787083748

1380-411: A government or business contract. In engineering , manufacturing , and business , it is vital for suppliers , purchasers , and users of materials, products, or services to understand and agree upon all requirements. A specification may refer to a standard which is often referenced by a contract or procurement document, or an otherwise agreed upon set of requirements (though still often used in

1495-515: A kernel where I/O devices are handled uniformly with other processes, as parallel co-operating processes, was first proposed and implemented by Brinch Hansen (although similar ideas were suggested in 1967 ). In Hansen's description of this, the "common" processes are called internal processes , while the I/O devices are called external processes . Similar to physical memory, allowing applications direct access to controller ports and registers can cause

1610-728: A library may include a program to solve a matrix that is upper triangular. The libraries would include single-precision and double-precision versions of some algorithms. Initially, these subroutines used hard-coded loops for their low-level operations. For example, if a subroutine needed to perform a matrix multiplication, then the subroutine would have three nested loops. Linear algebra programs have many common low-level operations (the so-called "kernel" operations, not related to operating systems ). Between 1973 and 1977, several of these kernel operations were identified. These kernel operations became defined subroutines that math libraries could call. The kernel calls had advantages over hard-coded loops:

1725-528: A logical point of view, atomic lock and unlock operations operating on binary semaphores are sufficient primitives to express any functionality of process cooperation. However this approach is generally held to be lacking in terms of safety and efficiency, whereas a message passing approach is more flexible. A number of other approaches (either lower- or higher-level) are available as well, with many modern kernels providing support for systems such as shared memory and remote procedure calls . The idea of

1840-402: A major investment has been made in actually implementing the design. An alternative approach is to use provably correct refinement steps to transform a specification into a design, and ultimately into an actual implementation, that is correct by construction. In (hardware, software, or enterprise) systems development, an architectural specification is the set of documentation that describes

1955-639: A minimum set of interoperability specification, errors and data loss can result. For example, Mac OS X has many components that prefer or require only decomposed characters (thus decomposed-only Unicode encoded with UTF-8 is also known as "UTF8-MAC"). In one specific instance, the combination of OS X errors handling composed characters, and the samba file- and printer-sharing software (which replaces decomposed letters with composed ones when copying file names), has led to confusing and data-destroying interoperability problems. Applications may avoid such errors by preserving input code points, and normalizing them to only

2070-494: A move to "greater use of performance and commercial specifications and standards" was to be introduced, which Perry saw as "one of the most important actions that [the Department of Defense] should take" at that time. The following British standards apply to specifications: A design/product specification does not necessarily prove a product to be correct or useful in every context. An item might be verified to comply with

2185-437: A national government (including its different public entities, regulatory agencies , and national laboratories and institutes), a professional association (society), a purpose-made standards organization such as ISO , or vendor-neutral developed generic requirements. It is common for one organization to refer to ( reference , call out , cite ) the standards of another. Voluntary standards may become mandatory if adopted by

2300-423: A particular (virtual) address may be different memory from what another process accesses at the same address. This allows every program to behave as if it is the only one (apart from the kernel) running and thus prevents applications from crashing each other. On many systems, a program's virtual address may refer to data which is not currently in memory. The layer of indirection provided by virtual addressing allows

2415-684: A point where it is as fast as or faster than the one that was specifically designed for the hardware, although more relevant in a general sense. Modern monolithic kernels, such as the Linux kernel , the FreeBSD kernel, the AIX kernel, the HP-UX kernel, and the Solaris kernel, all of which fall into the category of Unix-like operating systems, support loadable kernel modules , allowing modules to be loaded into

SECTION 20

#1732787083748

2530-592: A policy is a particular "mode of operation". Example: Because the mechanism and policy are separated, the policy can be easily changed to e.g. require the use of a security token . In minimal microkernel just some very basic policies are included, and its mechanisms allows what is running on top of the kernel (the remaining part of the operating system and the other applications) to decide which policies to adopt (as memory management, high level process scheduling, file system management, etc.). A monolithic kernel instead tends to include many policies, therefore restricting

2645-407: A process must be able to access the services provided by the kernel. This is implemented differently by each kernel, but most provide a C library or an API , which in turn invokes the related kernel functions. The method of invoking the kernel function varies from kernel to kernel. If memory isolation is in use, it is impossible for a user process to call the kernel directly, because that would be

2760-446: A separate area of memory, user space . This separation prevents user data and kernel data from interfering with each other and causing instability and slowness, as well as preventing malfunctioning applications from affecting other applications or crashing the entire operating system. Even in systems where the kernel is included in application address spaces , memory protection is used to prevent unauthorized applications from modifying

2875-475: A solver for x in the linear equation with T being triangular. Design of the Level 2 BLAS started in 1984, with results published in 1988. The Level 2 subroutines are especially intended to improve performance of programs using BLAS on vector processors , where Level 1 BLAS are suboptimal "because they hide the matrix-vector nature of the operations from the compiler." This level, formally published in 1990, contains matrix-matrix operations , including

2990-551: A specific list of products, or "open" allowing for substitutions made by the constructor. Most construction specifications are a combination of performance-based and proprietary types, naming acceptable manufacturers and products while also specifying certain standards and design criteria that must be met. While North American specifications are usually restricted to broad descriptions of the work, European ones and Civil work can include actual work quantities, including such things as area of drywall to be built in square meters, like

3105-494: A specific material type (concrete) or a work product (steel door) of the construction work. A specific material may be covered in several locations, depending on the work result: stainless steel (for example) can be covered as a sheet material used in flashing and sheet Metal in division 07; it can be part of a finished product, such as a handrail, covered in division 05; or it can be a component of building hardware, covered in division 08. The original listing of specification divisions

3220-402: A specification or stamped with a specification number: this does not, by itself, indicate that the item is fit for other, non-validated uses. The people who use the item ( engineers , trade unions , etc.) or specify the item ( building codes , government, industry, etc.) have the responsibility to consider the choice of available specifications, specify the correct one, enforce compliance, and use

3335-449: A user-level application may only be permitted to perform some of these operations (e.g., it may only be allowed to read the file). A common implementation of this is for the kernel to provide an object to the application (typically so called a "file handle") which the application may then invoke operations on, the validity of which the kernel checks at the time the operation is requested. Such a system may be extended to cover all objects that

3450-468: A versatile tool and allow e.g. a fast implementation of exponential integrators and Magnus integrators that handle long integration periods with many time steps. Here, the matrix exponentiation , the computationally expensive part of the integration, can be implemented in parallel for all time-steps by using Batched BLAS functions. Specification (technical standard) There are different types of technical or engineering specifications (specs), and

3565-478: A violation of the processor's access control rules. A few possibilities are: An important consideration in the design of a kernel is the support it provides for protection from faults ( fault tolerance ) and from malicious behaviours ( security ). These two aspects are usually not clearly distinguished, and the adoption of this distinction in the kernel design leads to the rejection of a hierarchical structure for protection . The mechanisms or policies provided by

Basic Linear Algebra Subprograms - Misplaced Pages Continue

3680-575: Is a computer program at the core of a computer 's operating system and generally has complete control over everything in the system. The kernel is also responsible for preventing and mitigating conflicts between different processes. It is the portion of the operating system code that is always resident in memory and facilitates interactions between hardware and software components. A full kernel controls all hardware resources (e.g. I/O, memory, cryptography) via device drivers , arbitrates conflicts between processes concerning such resources, and optimizes

3795-460: Is a mathematical description of software or hardware that may be used to develop an implementation . It describes what the system should do, not (necessarily) how the system should do it. Given such a specification, it is possible to use formal verification techniques to demonstrate that a candidate system design is correct with respect to that specification. This has the advantage that incorrect candidate system designs can be revised before

3910-484: Is a triangular matrix , among other functionality. Due to the ubiquity of matrix multiplications in many scientific applications, including for the implementation of the rest of Level 3 BLAS, and because faster algorithms exist beyond the obvious repetition of matrix-vector multiplication, gemm is a prime target of optimization for BLAS implementers. E.g., by decomposing one or both of A , B into block matrices , gemm can be implemented recursively . This

4025-534: Is a common early part of engineering design and product development processes in many fields. A functional specification is a kind of requirement specification, and may show functional block diagrams. A design or product specification describes the features of the solutions for the Requirement Specification, referring to either a designed solution or final produced solution. It is often used to guide fabrication/production. Sometimes

4140-447: Is a computer program encapsulating, monitoring and controlling a hardware device (via its Hardware/Software Interface (HSI) ) on behalf of the OS. It provides the operating system with an API, procedures and information about how to control and communicate with a certain piece of hardware. Device drivers are an important and vital dependency for all OS and their applications. The design goal of

4255-661: Is a general purpose library that can be used on many different machines without modification. LINPACK could use a generic version of BLAS. To gain performance, different machines might use tailored versions of BLAS. As computer architectures became more sophisticated, vector machines appeared. BLAS for a vector machine could use the machine's fast vector operations. (While vector processors eventually fell out of favor, vector instructions in modern CPUs are essential for optimal performance in BLAS routines.) Other machine features became available and could also be exploited. Consequently, BLAS

4370-423: Is a notable example of microkernel design. The Linux kernel is both monolithic and modular, since it can insert and remove loadable kernel modules at runtime. This central component of a computer system is responsible for executing programs. The kernel takes responsibility for deciding at any time which of the many running programs should be allocated to the processor or processors. Random-access memory (RAM)

4485-553: Is a process for dealing with observations that are out-of-specification. The United States Food and Drug Administration has published a non-binding recommendation that addresses just this point. At the present time, much of the information and regulations concerning food and food products remain in a form which makes it difficult to apply automated information processing, storage and transmission methods and techniques. Data systems that can process, store and transfer information about food and food products need formal specifications for

4600-423: Is an example of inter-process communication (IPC). The above listed tasks and features can be provided in many ways that differ from each other in design and implementation. The principle of separation of mechanism and policy is the substantial difference between the philosophy of micro and monolithic kernels. Here a mechanism is the support that allows the implementation of many different policies, while

4715-420: Is an exokernel. In a monolithic kernel, all OS services run along with the main kernel thread, thus also residing in the same memory area. This approach provides rich and powerful hardware access. UNIX developer Ken Thompson stated that "it is in [his] opinion easier to implement a monolithic kernel". The main disadvantages of monolithic kernels are the dependencies between system components –

Basic Linear Algebra Subprograms - Misplaced Pages Continue

4830-442: Is categorized into three sets of routines called "levels", which correspond to both the chronological order of definition and publication, as well as the degree of the polynomial in the complexities of algorithms; Level 1 BLAS operations typically take linear time , O ( n ) , Level 2 operations quadratic time and Level 3 operations cubic time. Modern BLAS implementations typically provide all three levels. This level consists of all

4945-499: Is common in conventional commercial systems; in fact, every module needing protection is therefore preferably included into the kernel. This link between monolithic design and "privileged mode" can be reconducted to the key issue of mechanism-policy separation; in fact the "privileged mode" architectural approach melds together the protection mechanism with the security policies, while the major alternative architectural approach, capability-based addressing , clearly distinguishes between

5060-560: Is currently less fruitful and not yet put forward as an urgent agenda due to the tight restrictions of regional or national constitution. Specifications and other standards can be externally imposed as discussed above, but also internal manufacturing and quality specifications. These exist not only for the food or pharmaceutical product but also for the processing machinery , quality processes, packaging , logistics ( cold chain ), etc. and are exemplified by ISO 14134 and ISO 15609. The converse of explicit statement of specifications

5175-414: Is not covered by the above standards , it can be evaluated by the additional source of pharmacopoeias from other nations, from industrial specifications, or from a standardized formulary such as A similar approach is adopted by the food manufacturing, of which Codex Alimentarius ranks the highest standards, followed by regional and national standards. The coverage of food and drug standards by ISO

5290-437: Is one of the motivations for including the β parameter, so the results of previous blocks can be accumulated. Note that this decomposition requires the special case β = 1 which many implementations optimize for, thereby eliminating one multiplication for each value of C . This decomposition allows for better locality of reference both in space and time of the data used in the product. This, in turn, takes advantage of

5405-535: Is owned by the Royal Institute of British Architects (RIBA) through their commercial group RIBA Enterprises (RIBAe). NBS master specifications provide content that is broad and comprehensive, and delivered using software functionality that enables specifiers to customize the content to suit the needs of the project and to keep up to date. UK project specification types fall into two main categories prescriptive and performance. Prescriptive specifications define

5520-593: Is superior to ATLAS . A highly tuned implementation based on these ideas is part of the GotoBLAS , OpenBLAS and BLIS . A common variation of gemm is the gemm3m , which calculates a complex product using "three real matrix multiplications and five real matrix additions instead of the conventional four real matrix multiplications and two real matrix additions", an algorithm similar to Strassen algorithm first described by Peter Ungar. Several extensions to BLAS for handling sparse matrices have been suggested over

5635-505: Is that any security policy can be implemented in an application regardless of kernel support. According to Mars Research Group developers, a lack of isolation is one of the main factors undermining kernel security. They propose their driver isolation framework for protection, primarily in the Linux kernel. Typical computer systems today use hardware-enforced rules about what programs are allowed to access what data. The processor monitors

5750-452: Is to simulate capabilities using commonly supported hierarchical domains. In this approach, each protected object must reside in an address space that the application does not have access to; the kernel also maintains a list of capabilities in such memory. When an application needs to access an object protected by a capability, it performs a system call and the kernel then checks whether the application's capability grants it permission to perform

5865-441: Is typically implemented using CPU modes . Many kernels provide implementation of "capabilities", i.e., objects that are provided to user code which allow limited access to an underlying object managed by the kernel. A common example is file handling: a file is a representation of information stored on a permanent storage device. The kernel may be able to perform many different operations, including read, write, delete or execute, but

SECTION 50

#1732787083748

5980-663: Is used to store both program instructions and data. Typically, both need to be present in memory in order for a program to execute. Often multiple programs will want access to memory, frequently demanding more memory than the computer has available. The kernel is responsible for deciding which memory each process can use, and determining what to do when not enough memory is available. I/O devices include, but are not limited to, peripherals such as keyboards, mice, disk drives, printers, USB devices, network adapters, and display devices . The kernel provides convenient methods for applications to use these devices which are typically abstracted by

6095-498: The cache on the system. For systems with more than one level of cache, the blocking can be applied a second time to the order in which the blocks are used in the computation. Both of these levels of optimization are used in implementations such as ATLAS . More recently, implementations by Kazushige Goto have shown that blocking only for the L2 cache , combined with careful amortizing of copying to contiguous memory to reduce TLB misses,

6210-401: The compiler . Approaches that delegate enforcement of security policy to the compiler and/or the application level are often called language-based security . The lack of many critical security mechanisms in current mainstream operating systems impedes the implementation of adequate security policies at the application abstraction level . In fact, a common misconception in computer security

6325-517: The federal government and its agencies stipulates that a copy of the drawings and specifications must be kept available on a construction site. Specifications in Egypt form part of contract documents. The Housing and Building National Research Center ( HBRC ) is responsible for developing construction specifications and codes. The HBRC has published more than 15 books which cover building activities like earthworks , plastering, etc. Specifications in

6440-408: The memory management unit . Generally the operating system provides a library that sits between the operating system and normal user programs. Usually it is a C library such as Glibc or Windows API. The library handles the low-level details of passing information to the kernel and switching to supervisor mode. System calls include close, open, read, wait and write. To actually perform useful work,

6555-820: The netlib website. This Fortran library is known as the reference implementation (sometimes confusingly referred to as the BLAS library) and is not optimized for speed but is in the public domain . Most libraries that offer linear algebra routines conform to the BLAS interface, allowing library users to develop programs that are indifferent to the BLAS library being used. Many BLAS libraries have been developed, targeting various different hardware platforms. Examples includes cuBLAS (NVIDIA GPU, GPGPU ), rocBLAS (AMD GPU), and OpenBLAS . Examples of CPU-based BLAS library branches include: OpenBLAS , BLIS (BLAS-like Library Instantiation Software) , Arm Performance Libraries, ATLAS , and Intel Math Kernel Library (iMKL). AMD maintains

6670-720: The structure , behavior , and more views of that system . A program specification is the definition of what a computer program is expected to do. It can be informal , in which case it can be considered as a user manual from a developer point of view, or formal , in which case it has a definite meaning defined in mathematical or programmatic terms. In practice, many successful specifications are written to understand and fine-tune applications that were already well-developed, although safety-critical software systems are often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable. In software development ,

6785-416: The 50 division format, which was adopted in both the United States and Canada starting in 2004. The 16 division format is no longer considered standard, and is not supported by either CSI or CSC, or any of the subscription master specification services, data repositories, product lead systems, and the bulk of governmental agencies. The United States' Federal Acquisition Regulation governing procurement for

6900-565: The BLAS routine gemm for its performance measurements. Many numerical software applications use BLAS-compatible libraries to do linear algebra computations, including LAPACK , LINPACK , Armadillo , GNU Octave , Mathematica , MATLAB , NumPy , R , Julia and Lisp-Stat. With the advent of numerical programming, sophisticated subroutine libraries became useful. These libraries would contain subroutines for common high-level mathematical operations such as root finding, matrix inversion, and solving systems of equations. The language of choice

7015-515: The BLAS specification is general, BLAS implementations are often optimized for speed on a particular machine, so using them can bring substantial performance benefits. BLAS implementations will take advantage of special floating point hardware such as vector registers or SIMD instructions. It originated as a Fortran library in 1979 and its interface was standardized by the BLAS Technical (BLAST) Forum, whose latest BLAS report can be found on

SECTION 60

#1732787083748

7130-685: The Construction Specifications Institute and the Registered Specification Writer (RSW) through Construction Specifications Canada. Specification writers may be separate entities such as sub-contractors or they may be employees of architects, engineers, or construction management companies. Specification writers frequently meet with manufacturers of building materials who seek to have their products specified on upcoming construction projects so that contractors can include their products in

7245-770: The GEMM routine, those architectures show significant performance losses. To address this issue, in 2017 a batched version of the BLAS function has been specified. Taking the GEMM routine from above as an example, the batched version performs the following computation simultaneously for many matrices: C [ k ] ← α A [ k ] B [ k ] + β C [ k ] ∀ k {\displaystyle {\boldsymbol {C}}[k]\leftarrow \alpha {\boldsymbol {A}}[k]{\boldsymbol {B}}[k]+\beta {\boldsymbol {C}}[k]\quad \forall k} The index k {\displaystyle k} in square brackets indicates that

7360-604: The UK are part of the contract documents that accompany and govern the construction of a building. They are prepared by construction professionals such as architects , architectural technologists , structural engineers , landscape architects and building services engineers . They are created from previous project specifications, in-house documents or master specifications such as the National Building Specification (NBS). The National Building Specification

7475-523: The United States and are usually subscription based. Specifications can be either "performance-based", whereby the specifier restricts the text to stating the performance that must be achieved by the completed work, "prescriptive" where the specifier states the specific criteria such as fabrication standards applicable to the item, or "proprietary", whereby the specifier indicates specific products, vendors and even contractors that are acceptable for each workscope. In addition, specifications can be "closed" with

7590-527: The United States and updated every two years. While there is a tendency to believe that "specifications overrule drawings" in the event of discrepancies between the text document and the drawings, the actual intent must be made explicit in the contract between the Owner and the Contractor. The standard AIA (American Institute of Architects) and EJCDC (Engineering Joint Contract Documents Committee) states that

7705-478: The application's preferred normal form for internal use. Such errors may also be avoided with algorithms normalizing both strings before any binary comparison. However errors due to file name encoding incompatibilities have always existed, due to a lack of minimum set of common specification between software hoped to be inter-operable between various file system drivers, operating systems, network protocols, and thousands of software packages. A formal specification

7820-490: The appropriate drivers. As device management is a very OS -specific topic, these drivers are handled differently by each kind of kernel design, but in every case, the kernel has to provide the I/O to allow drivers to physically access their devices through some port or memory location. Important decisions have to be made when designing the device management system, as in some designs accesses may involve context switches , making

7935-524: The building code or municipal code. Civil and infrastructure work in the United States often includes a quantity breakdown of the work to be performed as well. Although specifications are usually issued by the architect 's office, specification writing itself is undertaken by the architect and the various engineers or by specialist specification writers. Specification writing is often a distinct professional trade, with professional certifications such as "Certified Construction Specifier" (CCS) available through

8050-455: The conditions of a system or object after years of operation, including the effects of wear and maintenance (configuration changes). Specifications are a type of technical standard that may be developed by any of various kinds of organizations, in both the public and private sectors. Example organization types include a corporation , a consortium (a small group of corporations), a trade association (an industry-wide group of corporations),

8165-457: The controller to malfunction, or system to crash. With this, depending on the complexity of the device, some devices can get surprisingly complex to program, and use several different controllers. Because of this, providing a more abstract interface to manage the device is important. This interface is normally done by a device driver or hardware abstraction layer. Frequently, applications will require access to these devices. The kernel must maintain

8280-422: The course of the library's history; a small set of sparse matrix kernel routines was finally standardized in 2002. The traditional BLAS functions have been also ported to architectures that support large amounts of parallelism such as GPUs . Here, the traditional BLAS functions provide typically good performance for large matrices. However, when computing e.g., matrix-matrix-products of many small matrices by using

8395-478: The data requested by the program. The program can then be resumed from the point where it was stopped. This scheme is generally known as demand paging . Virtual addressing also allows creation of virtual partitions of memory in two disjointed areas, one being reserved for the kernel ( kernel space ) and the other for the applications ( user space ). The applications are not permitted by the processor to address kernel memory, thus preventing an application from damaging

8510-518: The device drivers. A monolithic kernel is one single program that contains all of the code necessary to perform every kernel-related task. Every part which is to be accessed by most programs which cannot be put in a library is in the kernel space: Device drivers, scheduler, memory handling, file systems, and network stacks. Many system calls are provided to applications, to allow them to access all those services. A monolithic kernel, while initially loaded with subsystems that may not be needed, can be tuned to

8625-661: The drawings and specifications are complementary, together providing the information required for a complete facility. Many public agencies, such as the Naval Facilities Command (NAVFAC) state that the specifications overrule the drawings. This is based on the idea that words are easier for a jury (or mediator) to interpret than drawings in case of a dispute. The standard listing of construction specifications falls into 50 Divisions , or broad categories of work types and work results involved in construction. The divisions are subdivided into sections, each one addressing

8740-463: The estimates leading to their proposals. In February 2015, ArCHspec went live, from ArCH (Architects Creating Homes), a nationwide American professional society of architects whose purpose is to improve residential architecture. ArCHspec was created specifically for use by licensed architects while designing SFR (Single Family Residential) architectural projects. Unlike the more commercial CSI/CSC (50+ division commercial specifications), ArCHspec utilizes

8855-432: The execution and stops a program that violates a rule, such as a user process that tries to write to kernel memory. In systems that lack support for capabilities, processes are isolated from each other by using separate address spaces. Calls from user processes into the kernel are regulated by requiring them to use one of the above-described system call methods. An alternative approach is to use language-based protection. In

8970-418: The firmware does not support protection mechanisms, it is possible to simulate protection at a higher level, for example by simulating capabilities by manipulating page tables , but there are performance implications. Lack of hardware support may not be an issue, however, for systems that choose to use language-based protection. An important kernel design decision is the choice of the abstraction levels where

9085-474: The item correctly. Validation of suitability is necessary. Public sector procurement rules in the European Union and United Kingdom require non-discriminatory technical specifications to be used to identify the purchasing organisation's requirements. The rules relating to public works contracts initially prohibited "technical specifications having a discriminatory effect" from 1971; this principle

9200-399: The kernel at runtime, permitting easy extension of the kernel's capabilities as required, while helping to minimize the amount of code running in kernel space. Most work in the monolithic kernel is done via system calls. These are interfaces, usually kept in a tabular structure, that access some subsystem within the kernel such as disk operations. Essentially calls are made within programs and

9315-425: The kernel can be classified according to several criteria, including: static (enforced at compile time ) or dynamic (enforced at run time ); pre-emptive or post-detection; according to the protection principles they satisfy (e.g., Denning ); whether they are hardware supported or language based; whether they are more an open mechanism or a binding policy; and many more. Support for hierarchical protection domains

9430-438: The kernel is usually loaded into a separate area of memory, which is protected from access by application software or other less critical parts of the operating system. The kernel performs its tasks, such as running processes, managing hardware devices such as the hard disk , and handling interrupts, in this protected kernel space . In contrast, application programs such as browsers, word processors, or audio or video players use

9545-402: The kernel itself or the kernel can also rely on other processes it is running. Although the kernel must provide IPC in order to provide access to the facilities provided by each other, kernels must also provide running programs with a method to make requests to access these facilities. The kernel is also responsible for context switching between processes or threads. The kernel has full access to

9660-431: The kernel manages, and indeed to objects provided by other user applications. An efficient and simple way to provide hardware support of capabilities is to delegate to the memory management unit (MMU) the responsibility of checking access-rights for every memory access, a mechanism called capability-based addressing . Most commercial computer architectures lack such MMU support for capabilities. An alternative approach

9775-405: The kernel so that applications do not need to know their implementation details. Key aspects necessary in resource management are defining the execution domain ( address space ) and the protection mechanism used to mediate access to the resources within a domain. Kernels also provide methods for synchronization and inter-process communication (IPC). These implementations may be located within

9890-475: The kernel will be rewritten if the available hardware changes), configured by the user (typical on older PCs and on systems that are not designed for personal use) or detected by the operating system at run time (normally called plug and play ). In plug-and-play systems, a device manager first performs a scan on different peripheral buses , such as Peripheral Component Interconnect (PCI) or Universal Serial Bus (USB), to detect installed devices, then searches for

10005-568: The kernel. The kernel's interface is a low-level abstraction layer . When a process requests a service from the kernel, it must invoke a system call , usually through a wrapper function . There are different kernel architecture designs. Monolithic kernels run entirely in a single address space with the CPU executing in supervisor mode , mainly for speed. Microkernels run most but not all of their services in user space, like user processes do, mainly for resilience and modularity . MINIX 3

10120-454: The library routine would be more readable, there were fewer chances for bugs, and the kernel implementation could be optimized for speed. A specification for these kernel operations using scalars and vectors , the level-1 Basic Linear Algebra Subroutines (BLAS), was published in 1979. BLAS was used to implement the linear algebra subroutine library LINPACK . The BLAS abstraction allows customization for high performance. For example, LINPACK

10235-489: The list of these devices by querying the system for them in some way. This can be done through the BIOS, or through one of the various system buses (such as PCI/PCIE, or USB). Using an example of a video driver, when an application requests an operation on a device, such as displaying a character, the kernel needs to send this request to the current active video driver. The video driver, in turn, needs to carry out this request. This

10350-458: The more concise 16 traditional Divisions, plus a Division 0 (Scope & Bid Forms) and Division 17 (low voltage). Many architects, up to this point, did not provide specifications for residential designs, which is one of the reasons ArCHspec was created: to fill a void in the industry with more compact specifications for residential projects. Shorter form specifications documents suitable for residential use are also available through Arcom, and follow

10465-528: The operating system to use other data stores, like a hard drive , to store what would otherwise have to remain in main memory ( RAM ). As a result, operating systems can allow programs to use more memory than the system has physically available. When a program needs data which is not currently in RAM, the CPU signals to the kernel that this has happened, and the kernel responds by writing the contents of an inactive memory block to disk (if necessary) and replacing it with

10580-403: The operation is performed for all matrices k {\displaystyle k} in a stack. Often, this operation is implemented for a strided batched memory layout where all matrices follow concatenated in the arrays A {\displaystyle A} , B {\displaystyle B} and C {\displaystyle C} . Batched BLAS functions can be

10695-445: The operation very CPU-intensive and easily causing a significant performance overhead. In computing, a system call is how a process requests a service from an operating system's kernel that it does not normally have permission to run. System calls provide the interface between a process and the operating system. Most operations interacting with the system require permissions not available to a user-level process, e.g., I/O performed with

10810-406: The organisation's current corporate objectives or priorities. Sometimes a guide or a standard operating procedure is available to help write and format a good specification. A specification might include: Specifications in North America form part of the contract documents that accompany and govern the drawings for construction of building and infrastructure projects. Specifications describe

10925-473: The quality and performance of building materials, using code citations and published standards, whereas the drawings or building information model (BIM) illustrates quantity and location of materials. The guiding master document of names and numbers is the latest edition of MasterFormat . This is a consensus document that is jointly sponsored by two professional organizations: Construction Specifications Canada and Construction Specifications Institute based in

11040-414: The rather voluminous commercial style of specifications too lengthy for most residential projects and therefore either produce more abbreviated specifications of their own or use ArCHspec (which was specifically created for residential projects). Master specification systems are available from multiple vendors such as Arcom, Visispec, BSD, and Spectext. These systems were created to standardize language across

11155-503: The representations of data about food and food products in order to operate effectively and efficiently. Development of formal specifications for food and drug data with the necessary and sufficient clarity and precision for use specifically by digital computing systems have begun to emerge from some government agencies and standards organizations: the United States Food and Drug Administration has published specifications for

11270-435: The requested action, and if it is permitted performs the access for it (either directly, or by delegating the request to another user-level process). The performance cost of address space switching limits the practicality of this approach in systems with complex interactions between objects, but it is used in current operating systems for objects that are not accessed frequently or which are not expected to perform quickly. If

11385-476: The requirements using generic or proprietary descriptions of what is required, whereas performance specifications focus on the outcomes rather than the characteristics of the components. Specifications are an integral part of Building Information Modeling and cover the non-geometric requirements. Pharmaceutical products can usually be tested and qualified by various pharmacopoeias . Current existing pharmaceutical standards include: If any pharmaceutical product

11500-488: The rest of the system to rely on them. Per Brinch Hansen presented arguments in favour of separation of mechanism and policy. The failure to properly fulfill this separation is one of the major causes of the lack of substantial innovation in existing operating systems, a problem common in computer architecture. The monolithic design is induced by the "kernel mode"/"user mode" architectural approach to protection (technically called hierarchical protection domains ), which

11615-421: The routines described in the original presentation of BLAS (1979), which defined only vector operations on strided arrays : dot products , vector norms , a generalized vector addition of the form (called " axpy ", "a x plus y") and several other operations. This level contains matrix-vector operations including, among other things, a ge neralized m atrix- v ector multiplication ( gemv ): as well as

11730-435: The running kernel. This fundamental partition of memory space has contributed much to the current designs of actual general-purpose kernels and is almost universal in such systems, although some research kernels (e.g., Singularity ) take other approaches. To perform useful functions, processes need access to the peripherals connected to the computer, which are controlled by the kernel through device drivers . A device driver

11845-410: The security mechanisms and policies should be implemented. Kernel security mechanisms play a critical role in supporting security at higher levels. One approach is to use firmware and kernel support for fault tolerance (see above), and build the security policy for malicious behavior on top of that (adding features such as cryptography mechanisms where necessary), delegating some responsibility to

11960-421: The singular). In any case, it provides the necessary details about the specific requirements. Standards for specifications may be provided by government agencies, standards organizations ( SAE , AWS , NIST , ASTM , ISO / IEC , CEN / CENELEC , DoD , etc.), trade associations , corporations , and others. A memorandum published by William J. Perry , U.S. Defense Secretary , on 29 June 1994 announced that

12075-413: The software level, device driver abstractions include: For example, to show the user something on the screen, an application would make a request to the kernel, which would forward the request to its display driver, which is then responsible for actually plotting the character/pixel. A kernel must maintain a list of available devices. This list may be known in advance (e.g., on an embedded system where

12190-431: The system's memory and must allow processes to safely access this memory as they require it. Often the first step in doing this is virtual addressing , usually achieved by paging and/or segmentation . Virtual addressing allows the kernel to make a given physical address appear to be another address, the virtual address. Virtual address spaces may be different for different processes; the memory that one process accesses at

12305-423: The term specification is here used in connection with a data sheet (or spec sheet ), which may be confusing. A data sheet describes the technical characteristics of an item or product, often published by a manufacturer to help people choose or use the products. A data sheet is not a technical specification in the sense of informing how to produce. An " in-service " or " maintained as " specification , specifies

12420-419: The term is used differently in different technical contexts. They often refer to particular documents, and/or particular information within them. The word specification is broadly defined as "to state explicitly or in detail" or "to be specific". A requirement specification is a documented requirement , or set of documented requirements, to be satisfied by a given material, design, product, service, etc. It

12535-629: The two, leading naturally to a microkernel design (see Separation of protection and security ). While monolithic kernels execute all of their code in the same address space ( kernel space ), microkernels try to run most of their services in user space, aiming to improve maintainability and modularity of the codebase. Most kernels do not fit exactly into one of these categories, but are rather found in between these two designs. These are called hybrid kernels . More exotic designs such as nanokernels and exokernels are available, but are seldom used for production systems. The Xen hypervisor, for example,

12650-438: The umbrella of a quality management system . These types of documents define how a specific document should be written, which may include, but is not limited to, the systems of a document naming, version, layout, referencing, structuring, appearance, language, copyright, hierarchy or format, etc. Very often, this kind of specifications is complemented by a designated template. Kernel (operating system) The kernel

12765-432: The utilization of common resources e.g. CPU & cache usage, file systems, and network sockets. On most systems, the kernel is one of the first programs loaded on startup (after the bootloader ). It handles the rest of startup as well as memory, peripherals , and input/output (I/O) requests from software , translating them into data-processing instructions for the central processing unit . The critical code of

12880-491: Was FORTRAN . The most prominent numerical programming library was IBM 's Scientific Subroutine Package (SSP). These subroutine libraries allowed programmers to concentrate on their specific problems and avoid re-implementing well-known algorithms. The library routines would also be better than average implementations; matrix algorithms, for example, might use full pivoting to get better numerical accuracy. The library routines would also have more efficient routines. For example,

12995-664: Was augmented from 1984 to 1986 with level-2 kernel operations that concerned vector-matrix operations. Memory hierarchy was also recognized as something to exploit. Many computers have cache memory that is much faster than main memory; keeping matrix manipulations localized allows better usage of the cache. In 1987 and 1988, the level 3 BLAS were identified to do matrix-matrix operations. The level 3 BLAS encouraged block-partitioned algorithms. The LAPACK library uses level 3 BLAS. The original BLAS concerned only densely stored vectors and matrices. Further extensions to BLAS, such as for sparse matrices, have been addressed. BLAS functionality

13110-460: Was based on the time sequence of construction, working from exterior to interior, and this logic is still somewhat followed as new materials and systems make their way into the construction process. Each section is subdivided into three distinct parts: "general", "products" and "execution". The MasterFormat and SectionFormat systems can be successfully applied to residential, commercial, civil, and industrial construction. Although many architects find

13225-435: Was extended to public supply contracts by the then European Communities' Directive 77/62/EEC coordinating procedures for the award of public supply contracts, adopted in 1976. Some organisations provide guidance on specification-writing for their staff and partners. In addition to identifying the specific attributes required of the goods or services being purchased, specifications in the public sector may also make reference to

#747252