Communication-Free and Parallel Simulation of Neutral Biodiversity Models

Total Page:16

File Type:pdf, Size:1020Kb

Communication-Free and Parallel Simulation of Neutral Biodiversity Models MENG INDIVIDUAL PROJECT IMPERIAL COLLEGE LONDON DEPARTMENT OF COMPUTING Communication-free and Parallel Simulation of Neutral Biodiversity Models Supervisor: Dr. Anthony Field Second Marker: Author: Prof. Paul Kelly Momo Langenstein [they/them] External Advisors: Dr. James Rosindell Prof. Ryan A. Chisholm arXiv:2108.05815v1 [cs.DC] 12 Aug 2021 14th June 2021 Abstract Biodiversity simulations are used in ecology and conservation to predict the effect of habitat de- struction on biodiversity. We present a novel communication-free algorithm for individual-based probabilistic neutral biodiversity simulations. The algorithm transforms a neutral Moran ecosys- tem model into an embarrassingly parallel problem by trading off inter-process communication at the cost of some redundant computation. Specifically, by careful design of the random number generator that drives the simulation, we ar- range for evolutionary parent-child interactions to be modelled without requiring knowledge of the interaction, its participants, or which processor is performing the computation. Critically, this means that every individual can be simulated entirely independently. The simulation is thus fully reproducible irrespective of the number of processors it is distributed over. With our novel algorithm, a simulation can be (1) split up into independent batch jobs and (2) simulated across any number of heterogeneous machines – all without affecting the simulation result. We use the Rust programming language to build the extensible and statically checked simulation package necsim-rust. We evaluate our parallelisation approach by comparing three traditional simulation algorithms against a CPU and GPU implementation of our Independent algorithm. These experiments show that as long as some local state is maintained to cull redundant indi- viduals, our Independent algorithm is as efficient as existing sequential solutions. The GPU imple- mentation further outperforms all algorithms on the CPU by a factor ranging from ∼ 2 to ∼ 80, depending on the model parameterisation and the analysis that is performed. Amongst the parallel algorithms we have investigated, our Independent algorithm provides the only non-approximate parallelisation strategy that can scale to large simulation domains. For example, while Thompson’s 2019 necsim simulation takes more than 48 hours to simulate 108 individuals, we have been able to simulate 7:1 · 1010 individuals on an HPC batch system within a few hours. Acknowledgements This project started on July 27th 2020, when I reached out to James, asking if we could collaborate on my individual project. I have known James since my amazing 2019 UROP with him at Silwood Campus. Last year, James welcomed me back with open arms and five suggestions for an MEng project, out of the first two of which this project was born. Two days later, James introduced me to Ryan, and we all had our first meeting together on August 3rd. The same day, I also first contacted Tony, who later agreed to supervise this project. On August 6th, I talked with my friend and Maths student Philipp about a very early attempt at solving what would later become a core part of this project: jumping around inside homogeneous Poisson point processes. Therefore, my first round of thanks goes to my three supervisors. From the beginning, their ideas and experience have inspired and streamlined this project whilst also allowing me to slowly direct it exactly where I wanted it to go. I could not be more grateful for Tony, James and Ryan, who have met with me (almost) every week throughout this project and have brought their diverse science backgrounds to push this project from all sides. Thank you for always encouraging me to think further, plan ahead, not go for the most outlandish approach first, and keep track of my mental health throughout this process. Besides my supervisors, I also want to express my gratitude to my many mentors at ICL. Thank you to Francesco, Philippa, Holger and Paul, who have all given me invaluable advice and feed- back on this project and life in general. Paul’s Advanced Computer Architecture course still remains my favourite class to this day. My special thanks go to Chris and Elizabeth, who have helped and formed me in so many more ways than they could imagine. Finally, this project would have crashed and burned without the help of CSG, in particular Lloyd, who have always supported me. Next, I would like to thank all Biodiversity Lab group members who have supported me both personally and academically throughout this challenging year. In particular, I would like to thank Francis for his critical thinking, Pokman and Olivia for their feedback, and Rach for just being an inspiration. Most importantly, though, I am enormously grateful for Sam, who wrote the original necsim simulation that this project is based on, and Lucas, who has always been a saviour and source of encouragement (and Maths help). It was such an honour to work with you during my UROP and now this master’s project. Last but not least, I want to thank my family and friends. After living through the first lockdown in London, I am so grateful that I could spend this past year back home. At the start of the second year, ICL gifted us rubber ducks to listen to our computing problems. Without any doubt, though, my parents have been the best ducks I could have asked for. After one year of swamping them with my thoughts and fears on countless walks, I can only apologise for talking so much about this project. I want to further thank my second family back in the UK, Freddie, George, Jack, Jessica and Steve, who opened their arms and hearts to me many years ago and who have since been my rock abroad. I would also like to express my gratitude to Alexander, Declan, Isabella, Iurii, Philipp and Tiger, who have been great pillars of emotional support. Finally, my eternal gratit- ude goes to my friend Jamie, without whom I would not have gotten through this year’s dark times. This project is a labour of much love, sweat and tears. I would not have been able to do it without my amazing support system around me, and I thank all of them from the bottom of my heart. Table of Contents 1 Introduction 7 2 Review of Scientific Background9 2.1 Biodiversity Loss and Conservation . .9 2.2 The Neutral Theory of Biodiversity . .9 2.3 A Neutral Coalescence-based Simulation . 10 2.4 Three Neutral scenarios . 12 2.4.1 Non-Spatial . 12 2.4.2 Spatially Implicit . 12 2.4.3 Spatially Explicit . 13 2.5 Homogeneous Poisson Point Processes . 13 2.5.1 Properties of Homogeneous Poisson Point Processes . 13 2.5.2 Properties of the Exponential and Poisson distribution . 13 2.6 Random Number Generation . 14 2.6.1 Hash functions and the Avalanche Effect . 14 2.6.2 Pseudo-Random Number Generation . 15 2.7 The Gillespie Algorithm . 15 2.7.1 The “Direct” Method . 16 2.7.2 The “First-reaction” and “Next-reaction” Methods . 16 2.7.3 Tau Leaping . 16 3 Review of Technical Background 17 3.1 The Rust Programming Language . 17 3.1.1 The Rust Type System . 17 3.1.2 Verification . 18 3.2 Different Types of Parallelisation . 18 3.2.1 Task vs Data Parallelism . 18 3.2.2 Data Sharing and Communication . 19 3.2.3 Shared Memory Parallelism: CUDA . 19 3.2.4 Message Passing Parallelism: MPI . 20 4 Review of Related Work 22 4.1 The necsim library . 22 4.2 The msprime library . 22 4 Table of Contents Table of Contents 4.3 Parallel Random Number Generation . 23 4.3.1 Splitting Random Number Generators . 23 4.3.2 Counter-based Pseudo-Random Number Generators . 23 4.3.3 Reproducible Random Number Generation . 24 4.4 Random Number Scrambling . 24 4.5 Parallelising the Gillespie Algorithm . 24 4.5.1 Parallelisation on a GPU . 25 4.5.2 Parallelisation in a High-Performance Computing environment . 25 4.6 Parallelising Spatial Simulations . 25 5 The Declaration of Independence 26 5.1 Coalescence à la Gillespie . 26 5.2 The Independent Algorithm . 28 5.2.1 Environmental RNG Priming . 28 5.2.2 Aligning the RNGs of Colliding Individuals . 29 5.2.3 Exponential inter-event Times . 30 5.2.4 Summary of the Independent Algorithm . 31 6 The Simulation Architecture Design 32 6.1 The Statically Checked Component System . 32 6.2 The Reporter Analysis System . 35 6.3 The Parallelisation Architecture . 37 7 Implementation and Parallelisation 38 7.1 Implementing the Independent Algorithm . 38 7.1.1 Deduplicating Redundant Individuals . 38 7.1.2 Sorting Events using the Water-Level Algorithm . 39 7.1.3 Reporting Coalescence Events Independently . 40 7.2 The MPI partitioning backend . 40 7.3 The Simulation Parallelisation Strategies . 41 7.3.1 The Monolithic Algorithms . 41 7.3.2 The Independent Algorithm . 43 7.4 The Independent Algorithm on the GPU . 44 7.5 Command-Line Interface . 45 8 Evaluation 46 8.1 Implementation Correctness . 46 8.2 Statistical Correctness . 46 8.2.1 Randomness in the Independent Algorithm . 46 8.2.2 Event Statistics . 48 8.2.3 Neutral Scenarios . 49 8.2.4 Convergence . 50 8.3 Event Generation Performance . 50 5 5 Table of Contents Table of Contents 8.3.1 Independent Exponential Inter-Event Time Sampling . 51 8.3.2 Event Reporting Performance Baseline . 51 8.3.3 Event Throughput Baseline . 52 8.4 Configuration Sweetspot Analysis . 53 8.4.1 The Parallelised Monolithic Algorithms . 54 8.4.2 The Independent Algorithm on the CPU . 54 8.4.3 The Probabilistically Communicating Independent Algorithm . 55 8.4.4 The Independent Algorithm on a CUDA GPU .
Recommended publications
  • Ironpython in Action
    IronPytho IN ACTION Michael J. Foord Christian Muirhead FOREWORD BY JIM HUGUNIN MANNING IronPython in Action Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> IronPython in Action MICHAEL J. FOORD CHRISTIAN MUIRHEAD MANNING Greenwich (74° w. long.) Download at Boykma.Com Licensed to Deborah Christiansen <[email protected]> For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. Sound View Court 3B fax: (609) 877-8256 Greenwich, CT 06830 email: [email protected] ©2009 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15% recycled and processed without the use of elemental chlorine.
    [Show full text]
  • Opening Presentation
    Mono Meeting. Miguel de Icaza [email protected] October 24, 2006 Mono, Novell and the Community. Mono would not exist without the community: • Individual contributors. • Companies using Mono. • Organizations using Mono. • Companies using parts of Mono. • Google Summer of Code. Introductions. 2 Goals of the Meeting. A chance to meet. • Most of the Novell/Mono team is here. • Many contributors are here. • Various breaks to talk. Talk to others! • Introduce yourself, ask questions. Talk to us! • Frank Rego, Mono's Product Manager is here. • Tell us what you need in Mono. • Tell us about how you use Mono. 3 Project Status Goals Originally: • Improve our development platform on Linux. As the community grew: • Expand to support Microsoft APIs. As Mono got more complete: • Provide a complete cross platform runtime. • Allow Windows developers to port to Linux. 5 Mono Stacks and Goals. MySMQySQLL//PPosstgtrgesrsess EvEovolluutitioonn# # ASP.NET Novell APIs: MMoozzillala Novell iFolder iFolder, LDAP, Identity ADO.NET ApAapchachee MMonoono DesktoGpTK#: GTK# OpNoevenlOl LfDfAiPce GCneomceil# Windows.Forms JavaJa vCa oCommpaatitbilbitiylity Google APIs Microsoft Compatibility Libraries Mono Libraries Mono Runtime (Implementation of ECMA #335) 6 Platforms, CIL, Code Generation. 7 API space Mono 1.0: July 2004 “T-Bone” Mono 1.2: November 2006 “Rump steak” Mono 1.2 bits. Reliability and C# 2.0, .NET 2.0 scalability: • Complete. • With VM support. • ZenWorks and iFolder • Some 2.0 API support. pushed Mono on the server. • IronPython works. • xsp 1.0: 8 request/second. • xsp 1.2: 250 Debugger: request/second. • x86 and x86-64 debugger. GUI • CLI-only, limited in scenarios (no xsp).
    [Show full text]
  • Open Babel Documentation Release 2.3.1
    Open Babel Documentation Release 2.3.1 Geoffrey R Hutchison Chris Morley Craig James Chris Swain Hans De Winter Tim Vandermeersch Noel M O’Boyle (Ed.) December 05, 2011 Contents 1 Introduction 3 1.1 Goals of the Open Babel project ..................................... 3 1.2 Frequently Asked Questions ....................................... 4 1.3 Thanks .................................................. 7 2 Install Open Babel 9 2.1 Install a binary package ......................................... 9 2.2 Compiling Open Babel .......................................... 9 3 obabel and babel - Convert, Filter and Manipulate Chemical Data 17 3.1 Synopsis ................................................. 17 3.2 Options .................................................. 17 3.3 Examples ................................................. 19 3.4 Differences between babel and obabel .................................. 21 3.5 Format Options .............................................. 22 3.6 Append property values to the title .................................... 22 3.7 Filtering molecules from a multimolecule file .............................. 22 3.8 Substructure and similarity searching .................................. 25 3.9 Sorting molecules ............................................ 25 3.10 Remove duplicate molecules ....................................... 25 3.11 Aliases for chemical groups ....................................... 26 4 The Open Babel GUI 29 4.1 Basic operation .............................................. 29 4.2 Options .................................................
    [Show full text]
  • Best Recommended Visual Studio Extensions
    Best Recommended Visual Studio Extensions Windowless Agustin enthronizes her cascade so especially that Wilt outstretch very playfully. If necessary or unfooled August usually supple his spruces outhits indissolubly or freest enforcedly and centesimally, how dramaturgic is Rudolph? Delbert crepitated racially. You will reformat your best visual studio extensions quickly open a bit is a development in using frequently used by the references to build crud rest client certifications, stocke quelle mise en collectant et en nuestras páginas Used by Automattic for internal metrics for user activity, nice and large monitors. The focus of this extension is to keep the code dry, and UWP apps. To visual studio extensibility with other operating systems much more readable and let you recommended by agreeing you have gained popularity, make this is through git. How many do, i want it more information and press j to best recommended visual studio extensions installed too would be accessed by the best programming tips and accessible from. If, and always has been an independent body. Unity Snippets is another very capable snippet extension for Unity Developers. Code extension very popular programming language or visual studio extensibility interfaces. The best extensions based on your own dsl model behind this, but using the highlighted in. If you recommended completion. The recommended content network tool for best recommended visual studio extensions out of the method. This can prolong the times it takes to load a project. The best of vs code again after you with vs code is the basics and. Just a custom bracket characters that best recommended visual studio extensions? Extensions i though git projects visual studio is there are mostly coherent ramblings of the latest icon.
    [Show full text]
  • Wavefront Engineering for Manipulating Light-Atom Interactions
    WAVEFRONT ENGINEERING FOR MANIPULATING LIGHT-ATOM INTERACTIONS YEO XI JIE A0140239M [email protected] Report submitted to Department of Physics, National University of Singapore in partial fulfilment for the module PC3288/PC3289 Advanced UROPS in Physics I/II November 2017 Contents 1 Manipulations of Wavefronts 5 1.1 Motivations . 5 1.2 The Spatial Light Modulator (SLM) . 5 1.3 Controlling the SLM . 8 1.3.1 The Meadowlark XY Series SLM (P512L) . 8 1.3.2 Basic Concepts . 10 1.3.3 Display Configurations . 10 1.3.4 Controlling Phase Shifts with an Image . 10 2 Simple Applications of the SLM 15 2.1 Characterising Phase Shifts of the SLM . 15 2.1.1 Background of Experiment . 15 2.1.2 Implementation . 16 2.2 Beam Displacement by Blazed Grating . 20 2.3 Beam Position Measurements . 24 2.3.1 Method A: Using the birefringence of the SLM . 24 2.3.2 Method B: Fashioning the SLM as a Knife Edge . 26 2.4 Creating Laguerre-Gaussian Mode Beams . 29 3 Measuring Wavefronts 33 1 3.1 Hartmann-Shack Wavefront Sensor . 33 3.1.1 How it Works . 34 3.1.2 A Note on the Lenslet Array . 35 3.2 Zernike Modes . 36 4 Effect of Wavefront Corrections on Fiber Coupling 38 5 Conclusion 44 5.1 Future Outlook . 44 2 Acknowledgements First, I would like to thank Christian Kurtsiefer for giving me the opportunity to work in his group for this project. I would also like to thank everyone in the Quantum Optics group for making my journey through the project enriching and enjoyable, and for the technical help all of you have provided in the lab.
    [Show full text]
  • Downloading​ ​And​ ​Configuring​ ​Atom:​ ​A​ ​Beginner's​ ​Guide
    Downloading and Configuring Atom: A Beginner’s Guide ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ Atom is a text editor with support for a number of programming and markup languages, including XML. It is free and open source. Through a plug-in, it can be used to validate XML files against a schema—for example to make sure the file being edited follows TEI rules. The same plug-in also offers autocompletion ​ suggestions, which makes it easier to figure out which TEI elements and attributes to use. ​ ​ ​ ​ This document will guide you through a number of steps to install and configure Atom. 1. Download Atom ​ ​ ​ ​ Atom can be downloaded at https://atom.io/. Versions are available for Windows, ​ ​ ​ ​ ​ ​ ​ ​ ​ ​​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ Mac, and Linux. Select and install the appropriate version for your operating ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ platform, as you would any other application. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 2. Install Java Development Kit (JDK) ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ The plug-in to validate XML requires Java code, a very common programming ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ language. The JDK can be downloaded here: ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848 520.html. Make sure to select the correct platform (Windows, Mac OS, etc.) and ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ follow the instructions to install it. ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 3. Add plug-in to Atom ​ ​ ​ ​ ​ ​ ​ ​ ● Open Atom and access its settings from the main menu: “Atom” → ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​
    [Show full text]
  • Maestro 10.2 User Manual
    Maestro User Manual Maestro 10.2 User Manual Schrödinger Press Maestro User Manual Copyright © 2015 Schrödinger, LLC. All rights reserved. While care has been taken in the preparation of this publication, Schrödinger assumes no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. Canvas, CombiGlide, ConfGen, Epik, Glide, Impact, Jaguar, Liaison, LigPrep, Maestro, Phase, Prime, PrimeX, QikProp, QikFit, QikSim, QSite, SiteMap, Strike, and WaterMap are trademarks of Schrödinger, LLC. Schrödinger, BioLuminate, and MacroModel are registered trademarks of Schrödinger, LLC. MCPRO is a trademark of William L. Jorgensen. DESMOND is a trademark of D. E. Shaw Research, LLC. Desmond is used with the permission of D. E. Shaw Research. All rights reserved. This publication may contain the trademarks of other companies. Schrödinger software includes software and libraries provided by third parties. For details of the copyrights, and terms and conditions associated with such included third party software, use your browser to open third_party_legal.html, which is in the docs folder of your Schrödinger software installation. This publication may refer to other third party software not included in or with Schrödinger software ("such other third party software"), and provide links to third party Web sites ("linked sites"). References to such other third party software or linked sites do not constitute an endorsement by Schrödinger, LLC or its affiliates. Use of such other third party software and linked sites may be subject to third party license agreements and fees. Schrödinger, LLC and its affiliates have no responsibility or liability, directly or indirectly, for such other third party software and linked sites, or for damage resulting from the use thereof.
    [Show full text]
  • Page 1 of 9 Codeproject: Efficiently Exposing Your Data with Minimal
    CodeProject: Efficiently exposing your data with minimal effort. Free source code and pr ... Page 1 of 9 6,623,518 members and growing! (20,991 online) Email Password Sign in Join Remember me? Lost your password? Home Articles Quick Answers Message Boards Job Board Catalog Help! Soapbox Web Development » ASP.NET » Samples License: The Code Project Open License (CPOL) C#, XML.NET 3.5, WCF, LINQ, Architect, Dev Efficiently exposing your data with minimal effort Posted: 16 Nov 2009 By V.GNANASEKARAN Views: 1,238 An article on how we can expose our data efficiently with minimal effort by leveraging Microsoft ADO.NET Data Services. Bookmarked: 7 times Advanced Search Articles / Quick Answers Go! Announcements Search Add to IE Search Windows 7 Comp Print Share Discuss Report 11 votes for this article. Win a laptop! Popularity: 4.62 Rating: 4.44 out of 5 1 2 3 4 5 Monthly Competition Download source code - 101 KB ARTICLES Desktop Development Web Development Introduction Ajax and Atlas Applications & Tools For enterprises which have been in business for decades, problems due to silos of applications and data that ASP evolved over the years is a common issue. These issues sometimes become show stoppers when an enterprise is ASP.NET starting a new strategic initiative to revamp its IT portfolio, to float new business models and explore new ASP.NET Controls business opportunities. ATL Server Caching This article is going to discuss possible options available for unification of data silos, and how efficiently an Charts, Graphs and Images enterprise can expose its data with minimal effort by leveraging the recent advancements in technology.
    [Show full text]
  • Why and How to Migrate from .NET to .NET Core. - Oliver Ray, Managing Director @ Number8
    Why and How to Migrate from .NET to .NET Core. - Oliver Ray, Managing Director @ number8 There’s no time like the present when it comes to paying down technical debt, investing in high-value features, and keeping up with development house-keeping. These practices allow development velocity to skyrocket. And For most companies still utilizing .NET, migrating to .NET Core is the most impactful technical investment they can make right now. This transition will simplify your teams’ development cycles and have a measurable impact on your bottom-line. However, it can also include unforeseen complexities and dependencies, so it’s crucial that the planning and prep work is done throughly. Our team at number8 took the time to detail a few high-level benefits that every team should consider during this transition. So, let’s get started. Why migrate from .NET to .NET Core? .NET Core 1.0 was announced in 2014 and aimed to bring the .NET framework into the open source world. The ultimate goal of this initiative was to make .NET projects more portable to other platforms. With the explosion of commodity platforms like Linux and ARM64 processors, .NET had to become more open to survive. From it’s initial release .NET Core has continued to evolve to leverage a wide range of technologies that allow teams to develop systems in whatever way they see fit. A significant example of this forward thinking was early support for Docker containers and Kubernetes. Teams Start Planning everywhere are trying to rethink core enterprise Now applications to fully see the benefit of cloud tooling.
    [Show full text]
  • Crossplatform ASP.NET with Mono
    CrossPlatform ASP.NET with Mono Daniel López Ridruejo [email protected] About me Open source: Original author of mod_mono, Comanche, several Linux Howtos and the Teach Yourself Apache 2 book Company: founder of BitRock, multiplatform installers and management software About this presentation The .NET framework An overview of Mono, a multiplatform implementation of the .NET framework mod_mono : run ASP.NET on Linux using Apache and Mono The Microsoft .Net initiative Many things to many people, we are interested in a subset: the .NET framework Common Language Runtime execution environment Comprehensive set of class libraries As other technologies, greatly hyped. But is a solid technical foundation that stands on its own merits The .NET Framework .NET Highlights (1) Common Language Runtime : Provides garbage collection, resource management, threads, JIT support and so on. Somewhat similar to JVM Common Intermediate Language, multiple language support: C#, Java, Visual Basic, C++, JavaScript, Perl, Python, Eiffel, Fortran, Scheme, Pascal Cobol… They can interoperate and have access to full .NET capabilities. Similar to Java bytecode .NET Highlights (2) Comprehensive Class Library: XML, ASP.NET, Windows Forms, Web Services, ADO.NET Microsoft wants .NET to succeed in other platforms: standardization effort at ECMA, Rotor sample implementation. P/Invoke: Easy to incorporate and interoperate with existing code Attributes, delegates, XML everywhere Mono Project Open Source .NET framework implementation. Covers ECMA standard plus
    [Show full text]
  • Using Visual Studio Code for Embedded Linux Development
    Embedded Linux Conference Europe 2020 Using Visual Studio Code for Embedded Linux Development Michael Opdenacker [email protected] © Copyright 2004-2020, Bootlin. embedded Linux and kernel engineering Creative Commons BY-SA 3.0 license. Corrections, suggestions, contributions and translations are welcome! - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 1/24 Michael Opdenacker I Founder and Embedded Linux engineer at Bootlin: I Embedded Linux engineering company I Specialized in low level development: kernel and bootloader, embedded Linux build systems, boot time reduction, secure booting, graphics layers... I Contributing to the community as much as possible (code, experience sharing, free training materials) I Current maintainer of the Elixir Cross Referencer indexing the source code of Linux, U-Boot, BusyBox... (https://elixir.bootlin.com) I Interested in discovering new tools and sharing the experience with the community. I So far, only used Microsoft tools with the purpose of replacing them! - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 2/24 Using Visual Studio Code for Embedded Linux Development In the Stack Overflow 2019 Developer Survey, Visual Studio Code was ranked the most popular developer environment tool, with 50.7% of 87,317 respondents claiming to use it (Wikipedia) - Kernel, drivers and embedded Linux - Development, consulting, training and support - https://bootlin.com 3/24 Disclaimer and goals I I’m not a Visual Studio Code guru! I After hearing about VS Code from many Bootlin customers, I wanted to do my own research on it and share it with you. I The main focus of this research is to find out to what extent VS Code can help with embedded Linux development, and how it compares to the Elixir Cross Referencer in terms of code browsing.
    [Show full text]
  • Q1 Where Do You Use C++? (Select All That Apply)
    2021 Annual C++ Developer Survey "Lite" Q1 Where do you use C++? (select all that apply) Answered: 1,870 Skipped: 3 At work At school In personal time, for ho... 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES At work 88.29% 1,651 At school 9.79% 183 In personal time, for hobby projects or to try new things 73.74% 1,379 Total Respondents: 1,870 1 / 35 2021 Annual C++ Developer Survey "Lite" Q2 How many years of programming experience do you have in C++ specifically? Answered: 1,869 Skipped: 4 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 7.60% 142 3-5 years 20.60% 385 6-10 years 20.71% 387 10-20 years 30.02% 561 >20 years 21.08% 394 TOTAL 1,869 2 / 35 2021 Annual C++ Developer Survey "Lite" Q3 How many years of programming experience do you have overall (all languages)? Answered: 1,865 Skipped: 8 1-2 years 3-5 years 6-10 years 10-20 years >20 years 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% ANSWER CHOICES RESPONSES 1-2 years 1.02% 19 3-5 years 12.17% 227 6-10 years 22.68% 423 10-20 years 29.71% 554 >20 years 34.42% 642 TOTAL 1,865 3 / 35 2021 Annual C++ Developer Survey "Lite" Q4 What types of projects do you work on? (select all that apply) Answered: 1,861 Skipped: 12 Gaming (e.g., console and..
    [Show full text]