Nova.Simd - a Framework for Architecture-Independent SIMD Development

Total Page:16

File Type:pdf, Size:1020Kb

Nova.Simd - a Framework for Architecture-Independent SIMD Development nova.simd - A framework for architecture-independent SIMD development Tim BLECHMANN [email protected] Abstract extended to integer data and double-precision floating point types with SSE2, and literally Most CPUs provide instruction set extensions each new CPU generation added some more in- to make use of the Single Instruction Multi- structions for specific use cases1. Some ven- ple Data (SIMD) programming paradigm, ex- dors provide specific libraries, but unfortunately amples are the SSE and AVX instruction set most of them have specific restrictions, only ab- families for IA32 and X86 64, Altivec on PPC stract once specific instruction set or work only or NEON on ARM. While compilers can do lim- on a specific platform. ited auto-vectorization, developers usually have Nova.simd was designed to provide a generic to target each instruction set manually in order and easy to use framework to easily write SIMD to get the full performance out of their code. code, which is independent from the instruction Nova.simd provides a generic framework to set. It provides ready-to-use vector functions, write cross-platform code, that makes use of but also an generic framework to write generic data level parallelism by utilizing instruction vector code. It is a header-only C++ library sets. that makes heavy use of templates and tem- plate metaprogramming techniques and cur- 1 Introduction & Motivation rently supports the SSE and AVX families on Most processors provide instructions to make IA32 and X86 64, Altivec on PPC and NEON use of data-level parallelism via the Single In- on ARM. But can be easily extended to other/- struction Multiple Data (SIMD) paradigm [3]. future instruction sets, if they provide a reason- The instruction sets usually treat data as small able compiler support via intrinsics. For unsup- vectors of scalars, which can be processed with ported platforms, a generic C++ implementa- single instructions. tion is provided. The library is free software, In an ideal world compilers would generate released under the GPL-2+. these instructions manually without any contri- Section2 explains the design decisions of bution from the developers. Unfortunately, it is Nova.simd, section3 introduces the main part not that easy: some instructions require specific of the library, the vec class, section4 explains conditions like memory alignment and often the the provided algorithms and we conclude in sec- compiler is not able to infer, if certain mem- tion section5 with a discussion of related li- ory regions overlap at run-time (aliasing). Some braries and frameworks. compilers avoid this by adding run-time checks, which of course introduce some overhead. Some 2 The Design of Nova.simd more complex algorithms would require non- Nova.simd was started, when the author trivial program transformations, which are un- worked on the `nova' project for his bachelor likely to be performed by the compiler. thesis [1], which provided a simple form of ab- To get the full performance out of the SIMD straction for SIMD functions. After the `nova' instruction sets, one usually has to target each project was abandoned, the SIMD code was instruction set manually, either by using com- maintained separately and the unit generators piler intrinsics or by writing assembler. Unfor- of the computer music system SuperCollider [5] tunately, each instruction set implements differ- were adapted to use nova.simd instead of the ent concepts. The SSE instruction set for exam- 1The additional SSE instruction extensions have been ple has been originally working only on single- SSE3, SSSE3, SSE4a, SSE4.1, SSE4.2. AMD's proposed precision floating point numbers, but has been SSE5 has never made it to real hardware. old PPC-specific Altivec code. After some at- more complex algorithms. It covers the follow- tempts to use Python to generate C++ code, it ing aspects: is currently implemented as a header-only C++ library, which makes heavy use of template and Operators template meta-programming techniques to gen- vec<> provides C++ operators for arith- erate code at compile-time. metics and comparison. However it omits The main idea behind the design is to sepa- logical operators, which are provided as bit- rate the library into a platform-specific and a masking functions (see below). Multiply- platform-agnostic part. The platform-specific Accumulate is provided as a function, as it part is based on a generic template vec<> class, is supported by several SIMD instruction which represents a SIMD vector. Using tem- sets. plate specialization, platform-specific versions Bitwise Operators and Bitmasks of this class can be implemented for separate All template specializations which actu- instruction sets, details can be found in the fol- ally map to SIMD implememntations pro- lowing section. The platform-agnostic part then vide comparison functions, that yield bit- uses the vec<> class to build more complex al- masks. These bitmasks can then be used gorithms. with bitwise operators or a select() func- tion, which selects a specific value from two 3 The class vec arguments, depending on the value of a se- The vec<> class is the heart of nova.simd. lection bitmask. It represents a single SIMD vector similar to m128 on SSE, m256 on AVX, vector float Element Access on Altivec or the ARM specific float32x4 t. It is possible to read and write different vec- However unlike these platform-specific types, tor elements. However there is no guaran- which are plain C-stype PODs, the vec<> class tee if the instruction set implements this provides a feature-rich class interface, which can efficiently. be used to compose more complex algorithms. Math Functions All vec<> class instatiations provide a com- vec<> implements many, but not all func- mon interface for aligned and non-aligned loads tions that are part of libm. However it pro- and stores, piecewise vector arithmetics, but vides some functions that are useful for sig- also some functions for horizontal accumulation nal processing like signed square root or a and some mathematical functions. Class spe- signed power function. cializations for SIMD extensions also provide Horizontal Functions common building blocks for vector code like Certain algorithms require some form of comparison to bitmask, bitwise logical opera- horizontal accumulation. The vec<> class tions and other functionality, which is required provides functions that return the mini- to formulate vectorized code. mum or maximum element and the sum of The advantage of this modular approach is all elements. portability: once an algorithm is implemented via the vec<> class interface, it will usually work Constant Generation out of the box on other platforms. The vector Some specific constants can efficiently be implementations for the mathematical functions generated via bit twiddling tricks, which for example are directly implemented via the can be more efficient than loading a con- vec<> class. The original algorithms for the ap- stant from memory. proximations are adapted from cephes [6], while some of the approximation polynomials are im- Listing 1: SuperCollider's soft clipping proved with Sollya [2]. The main idea behind the vectorized implementation is to evaluate the template <typename Float> Float sc_softclip(Float arg) approximation polynomial for every part of the { function and select the result for the specific in- Float abs_arg = std::fabs(arg); terval with bitmasks. if (abs_arg < 0.5) return arg ; 3.1 Class Interface else return (abs_arg - 0.25) / arg The vec<> class provides a feature rich inter- } face, which provides the means to implement Listing 2: SuperCollider's soft clipping via Listing 3: Signatures for Vector Additions nova.simd template <typename FloatType, template <typename Float> typename Arg1Type, typename Arg2Type> void softclip_vec(Float * out, inline void plus_vec(FloatType * out, Float const * in, int count) Arg1Type arg1, Arg2Type arg2, { unsigned int n); typedef vec<Float> vec_type; vec_type const05 = vec_type::gen_05(); template <typename FloatType, vec_type const025 = vec_type::gen_025(); typename Arg1Type, typename Arg2Type> const int vs = vec<Float>::size; inline void plus_vec_simd(FloatType * out, Arg1Type arg1, Arg2Type arg2, int loops = count / vs; unsigned int n); for (int i = 0; i != loops; ++i) { vec_type arg; template <unsigned int n, arg.load_aligned(in + i*vs); typename FloatType, typename Arg1Type, vec_type abs = abs(arg); typename Arg2Type> vec_type mask = mask_lt(abs, const05); inline void plus_vec_simd(FloatType * out, vec_type alt_ret Arg1Type arg1, Arg2Type arg2); = (abs - const025) / arg; vec_type result = select(alt_ret, arg, mask); of the select statement implies that the result of result.store_aligned(out + i*vs); the division won't be used. } } 4 Generic Vector Algorithms The vec<> class is used to implement a number 3.2 Example: Soft Clipping of higher-level vector algorithms, most of them As example we have a closer look, how Su- are similar of other frameworks for vector arith- perCollider's softclip operator could be imple- metics. However all vector arithmetic functions mented using the vec<> class. Softclip is a sim- come with a templated C++ interface, which ple wave shaper that maps values with an abso- provides some very handy features for audio lute value from 0.5 to infinity to 0.5 to 1 (com- synthesis applications. The basic signatures for pare Listing1). The vectorized implementation the arithmetic vector addition is shown in List- shown in Listing2. For the sake of simplic- ing3. ity, we assume that both pointers are reason- We provide three different versions of the ably aligned and that count is a multiple of the function: the first version plus vec does not vec<> size. In the beginning, we generate two make any assumptions about arguments, vec- constants. Then in the loop, we load the ar- tor alignment or vector size, so it can be called gument and compute its absolute value. In the with any reasonable arguments, even overlap- following line, we generate a bitmask that de- ping arrays.
Recommended publications
  • Software Optimization Guide for Amd Family 15H Processors (.Pdf)
    Software Optimization Guide for AMD Family 15h Processors Publication No. Revision Date 47414 3.06 January 2012 Advanced Micro Devices © 2012 Advanced Micro Devices, Inc. All rights reserved. The contents of this document are provided in connection with Advanced Micro Devices, Inc. (“AMD”) products. AMD makes no representations or warranties with respect to the accuracy or completeness of the contents of this publication and reserves the right to make changes to specifications and product descriptions at any time without notice. The infor- mation contained herein may be of a preliminary or advance nature and is subject to change without notice. No license, whether express, implied, arising by estoppel or other- wise, to any intellectual property rights is granted by this publication. Except as set forth in AMD’s Standard Terms and Conditions of Sale, AMD assumes no liability whatsoever, and disclaims any express or implied warranty, relating to its products including, but not limited to, the implied warranty of merchantability, fitness for a particular purpose, or infringement of any intellectual property right. AMD’s products are not designed, intended, authorized or warranted for use as compo- nents in systems intended for surgical implant into the body, or in other applications intended to support or sustain life, or in any other application in which the failure of AMD’s product could create a situation where personal injury, death, or severe property or environmental damage may occur. AMD reserves the right to discontinue or make changes to its products at any time without notice. Trademarks AMD, the AMD Arrow logo, and combinations thereof, AMD Athlon, AMD Opteron, 3DNow!, AMD Virtualization and AMD-V are trademarks of Advanced Micro Devices, Inc.
    [Show full text]
  • Motmot Documentation Release 0
    motmot Documentation Release 0 Andrew Straw June 26, 2010 CONTENTS 1 Overview 3 1.1 The name motmot............................................3 1.2 Packages within motmot.........................................3 1.3 Mailing list................................................4 1.4 Related Software.............................................4 2 Download and installation instructions5 2.1 Quick install: FView application on Windows..............................5 3 Full install information 7 3.1 Supported operating systems.......................................7 3.2 Download.................................................7 3.3 Installation................................................7 3.4 Download direct from the source code repository............................8 4 Gallery of applications built on motmot packages9 4.1 Open source...............................................9 4.2 Closed source............................................... 12 5 Frequently Asked Questions 13 5.1 What cameras are supported?...................................... 13 5.2 What frame rates, image sizes, bit depths are possible?......................... 13 5.3 Which way is up? (Why are my images flipped or rotated?)...................... 13 6 Writing FView plugins 15 6.1 Overview................................................. 15 6.2 Register your FView plugin....................................... 15 6.3 Tutorials................................................. 15 7 Camera trigger device with precise timing and analog input 25 7.1 camtrig – Camera trigger
    [Show full text]
  • AMD Accelerated Parallel Processing Math Libraries Are Software Libraries
    OVERVIEW AMD Core Math Library (ACML) provides a no-cost set of math routines for high performance computing (HPC), scientific, engineering, and related compute-intensive applications, thoroughly optimized and threaded for use on OTHER AMD PERFORMANCE AMD processors. ACML is ideal for weather modeling, computational fluid dynamics, financial analysis, oil and gas LIBRARIES applications, and more. APPML: AMD Accelerated Parallel Processing Math Libraries are FEATURES software libraries containing FFT and BLAS functions written in > 100% compatible BLAS library including all standard Level 1, Level 2, and Level 3 subroutines OpenCL and designed to run on > Highly optimized kernels for GEMM routines and other Level 3 AMD GPUs. matrix-matrix operations BLAS > Highly optimized for Level 1 BLAS vector operations AMD LibM: a software library > Support for AMD-K8TM, AMD Family 10h, AMD Family 15h and various containing a collection of basic Intel processor families math functions optimized for x86- > OpenMP support for Level 3 BLAS routines 64 processor-based machines. > Derived from Mark 22 NAG Library for SMP and Multicore LAPACK > Multithreading optimizations in many routines AMD String Library: standard > Complex, Real-Complex, Complex-Real transforms GNU C Library (glibc) string > 1D, 2D, and 3D transforms FFT functions optimized for AMD > Expert interfaces provide more control over scaling, in-place/out-of- processors. place, array layout > Optimized versions of most critical libm functions Vector Math Library Framewave Project: a collection > Scalar, Vector, and array versions of popular low-level software > 5 base generators routines beginning with simple > NAG Basic, Wichmann-Hill, L’Ecuyer, Mersenne Twister, arithmetic and extending into Blum-Blum-Shub rich domains, such as image and > 26 distribution generators Random Number Generators signal processing.
    [Show full text]
  • Downloaded and Freely Modified to Meet Our Additional Requirements Related to Result Logging
    INVESTIGATING TOOLS AND TECHNIQUES FOR IMPROVING SOFTWARE PERFORMANCE ON MULTIPROCESSOR COMPUTER SYSTEMS A thesis submitted in fulfilment of the requirements for the degree of MASTER OF SCIENCE of RHODES UNIVERSITY by WAIDE BARRINGTON TRISTRAM Grahamstown, South Africa March 2011 Abstract The availability of modern commodity multicore processors and multiprocessor computer sys- tems has resulted in the widespread adoption of parallel computers in a variety of environments, ranging from the home to workstation and server environments in particular. Unfortunately, par- allel programming is harder and requires more expertise than the traditional sequential program- ming model. The variety of tools and parallel programming models available to the programmer further complicates the issue. The primary goal of this research was to identify and describe a selection of parallel programming tools and techniques to aid novice parallel programmers in the process of developing efficient parallel C/C++ programs for the Linux platform. This was achieved by highlighting and describing the key concepts and hardware factors that affect parallel programming, providing a brief survey of commonly available software development tools and parallel programming models and libraries, and presenting structured approaches to software performance tuning and parallel programming. Finally, the performance of several parallel programming models and libraries was investigated, along with the programming effort required to implement solutions using the respective models. A quantitative research methodology was applied to the investigation of the performance and programming effort associated with the selected parallel programming models and libraries, which included automatic parallelisation by the compiler, Boost Threads, Cilk Plus, OpenMP, POSIX threads (Pthreads), and Threading Building Blocks (TBB).
    [Show full text]
  • VSM Cover Snipe
    0808vsm_RdrsChoice_C2_final 8/14/08 11:55 AM Page 1 SPECIAL SECTION: 2008 BUYERS GUIDE 2008 Buyers Guide Readers Choice Awards 4 Product Listings 6 Third-Party Tools Put the “Rapid” in RAD 2 Project3 7/10/08 1:32 PM Page 1 Project3 7/10/08 1:33 PM Page 2 0808vsm_BGEdNote_2.final 7/24/08 2:05 PM Page 2 Editor’s Note THIRD-PARTY TOOLS BY PATRICK MEADER PUT THE “RAPID” IN RAD editor in chief Welcome to the Visual Studio Magazine 2008 Buyers Guide supplement! Every year, the editors of Visual Studio Magazine survey include anything that covers DVD- or online-based training. the third-party market of tools and services for Visual Studio We think K-Source is intriguing for several reasons, not least and compile a list of relevant products in areas that are of the because it brings the notion of suites of controls that have most interest to Visual Studio developers. This year we com- proven so popular in the VS market to the area of training. K- piled a list of more than 400 products and services across 22 cat- Source gives you the ability to package together a wide range egories (these begin on p.6).Note that you won’t see any prod- of online training subjects for your entire development team ucts from Microsoft listed in the categories; this is a survey of (see VSM’s review of K-Source on p.12 of the August issue). third-party solution providers, which by definition excludes The listings in the print version of this supplement provide Microsoft’s offerings.When compiling the list,we allow a prod- the product name,company,and a Web site for each of the prod- uct to be listed in only one category.In cases where a product fits ucts within a given category.You can find a more detailed version more than one category (and this is frequently the case), we of these listings at VisualStudioMagazine.com (Locator+ attempt to choose the closest category fit for that product.
    [Show full text]
  • Source Code for Biology and Medicine Biomed Central
    Source Code for Biology and Medicine BioMed Central Research Open Access Motmot, an open-source toolkit for realtime video acquisition and analysis Andrew D Straw* and Michael H Dickinson Address: Bioengineering, California Institute of Technology, Mailcode 138-78, Pasadena, CA 91125, USA Email: Andrew D Straw* - [email protected]; Michael H Dickinson - [email protected] * Corresponding author Published: 22 July 2009 Received: 2 April 2009 Accepted: 22 July 2009 Source Code for Biology and Medicine 2009, 4:5 doi:10.1186/1751-0473-4-5 This article is available from: http://www.scfbm.org/content/4/1/5 © 2009 Straw and Dickinson; licensee BioMed Central Ltd. This is an Open Access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. Abstract Background: Video cameras sense passively from a distance, offer a rich information stream, and provide intuitively meaningful raw data. Camera-based imaging has thus proven critical for many advances in neuroscience and biology, with applications ranging from cellular imaging of fluorescent dyes to tracking of whole-animal behavior at ecologically relevant spatial scales. Results: Here we present 'Motmot': an open-source software suite for acquiring, displaying, saving, and analyzing digital video in real-time. At the highest level, Motmot is written in the Python computer language. The large amounts of data produced by digital cameras are handled by low- level, optimized functions, usually written in C. This high-level/low-level partitioning and use of select external libraries allow Motmot, with only modest complexity, to perform well as a core technology for many high-performance imaging tasks.
    [Show full text]
  • COMPASS: a Community-Driven Parallelization Advisor for Sequential Software
    COMPASS: A Community-driven Parallelization Advisor for Sequential Software Simha Sethumadhavan Nipun Arora Ravindra Babu Ganapathi John Demme Gail E. Kaiser Department of Computer Science, Columbia University, New York, 10027 E-mail: {simha, kaiser}@cs.columbia.edu Abstract driven Parallelization Advisor for Sequential Software – proffers advice to programmers based on information col- The widespread adoption of multicores has renewed the lected from observing a community of programmers paral- emphasis on the use of parallelism to improve performance. lelize their code. The utility of COMPASS rests in part on The present and growing diversity in hardware architec- the premise that the growing popularity of CMP systems tures and software environments, however, continues to will encourage expert programmers to parallelize some of pose difficulties in the effective use of parallelism thus de- the existing sequential software, and COMPASS can quickly laying a quick and smooth transition to the concurrency era. deploy capabilities to capture their wisdom (including any In this paper, we describe the research being conducted at gained through trial and error intermediate steps) for the Columbia University on a system called COMPASS that aims multicore software engineering community. to simplify this transition by providing advice to program- COMPASS observes (Table 1) expert programmers mers while they reengineer their code for parallelism. The (henceforth called gurus) parallelize their sequential code advice proffered to the programmer is based on the wisdom using parallel programming patterns and other techniques collected from programmers who have already parallelized for parallelization, records their code changes (before and some similar code. The utility of COMPASS rests, not only after), summarizes this information and stores it in a central- on its ability to collect the wisdom unintrusively but also on ized Internet-accessible database.
    [Show full text]
  • D1.2 Mathisis Exploitation Plan M24
    Managing Affective-learning THrough Intelligent atoms and Smart InteractionS D1.2 MaTHiSiS Exploitation Plan M24 Workpackage WP1 – Exploitation, business planning and product development Editor(s): Andrew Pomazanskyi, Jens Piesk (NG); , Ana Maria Piñuela Marcos (ATOS); Vilma Ferrari, Donata Piciukeniene (IMOTEC) Responsible Partner: Nurogames GmbH Quality Reviewers ATOS – Ana Piñuela Status-Version: Final – v1.0 Due Date: 31/12/2017 Submission Date 19/12/2017 EC Distribution: PU Abstract: Exploitation plan in December 2017 provides major findings of the consortium with respect to possible business cases of the whole platform and individual components. It gives an overview of revenue streams and licensing considerations as well as provides a roadmap for joint exploitation by setting an exploitation agreement and separate MaTHiSiS tools distribution possibilities through third party platforms. Keywords: Exploitation, business, agreement, SWOT, AI, robotics Related Deliverable(s) D1.1 MaTHiSiS Exploitation Plan, D7.3 MaTHiSiS Platform 2nd release, D10.4 MaTHiSiS dissemination and communication activities report This document is issued within the frame and for the purpose of the MATHISIS project. This project has received funding from the European Union’s Horizon 2020 Programme (H2020-ICT-2015) under Grant Agreement No. 687772 D1.2 – MaTHiSiS Exploitation Plan M24 Document History Version Date Change editors Changes 0.1 14/06/2017 NG Initial Content. Review of the competitors, market and stakeholders 0.2 29/08/2017 NG/IMOTEC/ATOS Update on
    [Show full text]
  • X86 Assembly Language Reference Manual Oracle Documentation
    X86 Assembly Language Reference Manual Oracle Documentation If you are searched for a book X86 assembly language reference manual oracle documentation in pdf form, then you've come to the faithful website. We furnish the utter version of this ebook in ePub, txt, PDF, doc, DjVu formats. You may read X86 assembly language reference manual oracle documentation online or download. In addition, on our site you can read manuals and different artistic books online, either downloading them. We want draw on your attention what our website not store the eBook itself, but we grant ref to website wherever you can download either read online. If you have must to downloading X86 assembly language reference manual oracle documentation pdf, then you have come on to loyal site. We have X86 assembly language reference manual oracle documentation ePub, doc, DjVu, txt, PDF formats. We will be happy if you will be back us over. asm86 assembly language reference manual/122386 - Asm86 Assembly Language Reference Manual/122386 (Software Development Tools) on Amazon.com. *FREE* shipping on qualifying offers. x86 assembly language reference manual - oracle - x86 Assembly Language Reference Manual 2550 Garcia Avenue Mountain View, CA 94043 U.S.A. A Sun Microsystems, Inc. Business 1995 Sun Microsystems, Inc. 2550 download microsoft macro assembler 8.0 (masm) - is a tool that consumes x86 assembly language programs and generates corresponding binaries. Product documentation; How-to tutorials; Upgrading; Download x86 instruction reference, 32-bit edition: - X86 Instruction Reference, This x86 reference guide is the perfect companion to Ida Pro and Ollydbg because it helps you quickly find the assembly language oracle reports 25 reference manual - - ORACLE REPORTS 25 REFERENCE MANUAL X86 Assembly Language Reference Manual Oracle.
    [Show full text]
  • On the Effective Parallel Programming of Multi-Core Processors
    On the Effective Parallel Programming of Multi-core Processors PROEFSCHRIFT ter verkrijging van de graad van doctor aan de Technische Universiteit Delft, op gezag van de Rector Magnificus prof. ir. K.C.A.M. Luyben, voorzitter van het College voor Promoties, in het openbaar te verdedigen op dinsdag 7 december 2010 om 10.00 uur door Ana Lucia VARBˆ ANESCUˇ Master of Science in Architecturi Avansate de Calcul, Universitatea POLITEHNICA Bucure¸sti, Romˆania geboren te Boekarest, Roemeni¨e. Dit proefschrift is goedgekeurd door de promotor: Prof. dr. ir. H.J. Sips Samenstelling promotiecommissie: Rector Magnificus voorzitter Prof.dr.ir. H.J. Sips Technische Universiteit Delft, promotor Prof.dr.ir. A.J.C. van Gemund Technische Universiteit Delft Prof.dr.ir. H.E. Bal Vrije Universiteit Amsterdam, The Netherlands Prof.dr.ir. P.H.J. Kelly Imperial College of London, United Kingdom Prof.dr.ing. N. T¸˜apu¸s Universitatea Politehnic˜aBucure¸sti, Romania Dr. R.M. Badia Barcelona Supercomputing Center, Spain Dr. M. Perrone IBM TJ Watson Research Center, USA Prof.dr. K.G. Langendoen Technische Universiteit Delft, reservelid This work was carried out in the ASCI graduate school. Advanced School for Computing and Imaging ASCI dissertation series number 223. The work in this dissertation was performed in the context of the Scalp project, funded by STW-PROGRESS. Parts of this work have been done in collaboration and with the material support of the IBM T.J. Watson Research Center, USA. Part of this work has been done in collaboration with the Barcelona Supercomputing Center, and supported by a HPC Europa mobility grant.
    [Show full text]
  • Efficient Implementations of Machine Vision Algorithms Using a Dynamically Typed Programming Language
    Efficient implementations of machine vision algorithms using a dynamically typed programming language WEDEKIND, Jan Available from the Sheffield Hallam University Research Archive (SHURA) at: http://shura.shu.ac.uk/6633/ A Sheffield Hallam University thesis This thesis is protected by copyright which belongs to the author. The content must not be changed in any way or sold commercially in any format or medium without the formal permission of the author. When referring to this work, full bibliographic details including the author, title, awarding institution and date of the thesis must be given. Please visit http://shura.shu.ac.uk/6633/ and http://shura.shu.ac.uk/information.html for further details about copyright and re-use permissions. Efficient implementations of machine vision algorithms using a dynamically typed programming language WEDEKIND, Jan Available from Sheffield Hallam University Research Archive (SHURA) at: http://shura.shu.ac.uk/6633/ This document is the author deposited version. You are advised to consult the publisher's version if you wish to cite from it. Published version WEDEKIND, Jan (2012). Efficient implementations of machine vision algorithms using a dynamically typed programming language. Doctoral, Sheffield Hallam University. Repository use policy Copyright © and Moral Rights for the papers on this site are retained by the individual authors and/or other copyright owners. Users may download and/or print one copy of any article(s) in SHURA to facilitate their private study or for non- commercial research. You may not engage in further distribution of the material or use it for any profit-making activities or any commercial gain.
    [Show full text]
  • System Manual
    System manual ABUS VMS Basic, Professional, Enterprise Web application © 2012 ABUS Security-Center GmbH & Co. KG ABUS VMS ABUS Security-Center GmbH & Co. KG System manual Contents Introduction ......................................................................................................................... 6 Safety information ............................................................................................................... 6 Areas of application ............................................................................................................ 7 Information symbols ........................................................................................................... 7 Upgrades .............................................................................................................................. 8 System requirements .......................................................................................................... 8 1. Setting up / putting into operation .............................................................................. 9 1.1 Starting the software .............................................................................................................. 10 1.1.1 The setup wizard .......................................................................................................................................... 10 1.2 Log-in ..................................................................................................................................... 13 1.3 User
    [Show full text]