Back to Basics: The Abstract Machine
Back to Basics: The Abstract Machine Bob Steagall CppCon 2020 K E W B C O M P U T I N GCopyright © 2020 Bob Steagall K E W B C O M P U T I N G Overview/Goals • Describe abstract machines in general general • Describe the C++ abstract machine specifically • Language goals that drive its design • Role in program development and execution • Important definitions and characteristics • Important components components of the abstract machine, and their relationships • Provide a useful overview of the C++ abstract machine CppCon 2020 - The Abstract Machine 2Copyright © 2020 Bob Steagall K E W B C O M P U T I0 码力 | 91 页 | 538.90 KB | 5 月前3Leveraging the Power of C++ for Efficient Machine Learning on Embedded Devices
Leveraging the power of C++ for efficient machine learning on embedded devices Adrian Stanciu adrian.stanciu.pub@gmail.com CppCon, 2023 1 / 50About me ◮ I am a software engineer from Romania ◮ I have Motivation ◮ Image classification ◮ Hand gesture recognition ◮ Summary ◮ Q&A 4 / 50Motivation 5 / 50Machine Learning (ML) ◮ Subfield of Artificial Inteligence (AI) ◮ Enables computers to learn from data and consumption ◮ May have real-time performance constraints 7 / 50Machine learning on embedded devices ◮ Alternative to cloud-based machine learning ◮ Advantages: ◮ Real-time processing ◮ Low latency ◮0 码力 | 51 页 | 1.78 MB | 5 月前3micrograd++: A 500 line C++ Machine Learning Library
micrograd++: A 500 line C++ Machine Learning Library Gautam Sharma Independent Researcher gautamsharma2813@gmail.com Abstract—micrograd++ is a pure C++ machine learning li- brary inspired by Andrej Karpathy’s framework for building and training machine learning models. By leveraging the performance efficiency of C++, micro- grad++ offers a robust solution for integrating machine learning capabilities directly into Traditionally, all machine learning libraries are extremely bulky and very hard to integrate as third party dependencies. This aspect scares practitioners to adopt a C++ based machine learning library for0 码力 | 3 页 | 1.73 MB | 5 月前3Just-in-Time Compilation - J F Bastien - CppCon 2020
In this talk I'll tell you about C++ AoT compiler, JiTs for dynamic language, JiTs for binary translation, and dive back 20, 30, 40, 50, 60 years, way back into compiler history and read wonderful academic compile code to a target machine, then run it. X mapping never changes.? Interpreter Is an interpreter a JiT, or AoT? What if it modifies its bytecode? A CPU executes machine code… an interpreter executes executes bytecode… That’s the same thing, a CPU is an interpreter for machine code. A compiler can perform partial evaluation of a program, thereby interpreting it… The compiler itself can be compiled0 码力 | 111 页 | 3.98 MB | 5 月前3Performance Engineering: Being Friendly to Your Hardware
introduction to hardware for software engineers 2Where does C++ run? 3On an abstract C++ machine 4On an abstract C++ machine? 5C++ runs on a computer platform 6Computer platform 7 Processor Memory IO interconnect • L1 cache implements an address translation boundary • Everything beyond L1 uses platform physical address space • Address translation is not cheapExample - branching 61 uint32_t fn(uint32_t right thing • Microcoded subroutine • Aware of platform specifics • Has insight into internal machine stateExample – memcpy: ERMS 92 0000000000001260 <_Z11memcpy_ermsPvPKvm>: 1260: 48 89 d10 码力 | 111 页 | 2.23 MB | 5 月前3Back to Basics: The structure of a Program
Overview • The process of building a program • What a translation unit (TU) is, and its relationship to the code you write • The phases of translation • Declarations, definitions, and linkage • The one-definition compilation and linking • Why? • Our human-readable text files must be converted to binary machine language CppCon 2020 - The Structure of a Program 18 Compilation Executable File Object Files compilation process translation • In C++, translation is performed upon a translation unit (TU) in nine well- defined stages • Evocatively named Phases 1 through 9 • A translation unit is defined (roughly)0 码力 | 64 页 | 390.34 KB | 5 月前3C++ in the Developing World, Why it Matters
The less work that will be done on the resulting client PC, the better. Meaning, the less translation to machine code, the better. (I am aware that there are ways to “precompile” many Interpreted languages These are invaluable Keep As Much as You can Locally • Having all you need on your developer machine is better than always having to rely on resources on the internet. Especially in places with expensive/limited terminals via ssh-clients. This works with windows PCs. • I use this personally as my personal machine is Linux based, but always ssh into my wife’s laptop to try things out on windows using neovim on0 码力 | 8 页 | 177.52 KB | 5 月前3Exceptional C++
thread needs to install its own translator function => each thread is in charge of its own translation handling2021 Victor Ciura | @ciura_victor - Exceptional C++ 53 Structured Exception Handling all concurrent calls to this function SyncGuard guard(sEHSyncSupport); // Copy the given machine CONTEXT structure because the StackWalk() API // might modify it and subsequent calls needing ::ZeroMemory(aStackFrame, sizeof(STACKFRAME)); #if defined _M_IX86 DWORD imageType = IMAGE_FILE_MACHINE_I386; aStackFrame->AddrStack.Offset = aContext->Esp; aStackFrame->AddrStack.Mode = AddrModeFlat;0 码力 | 113 页 | 24.39 MB | 5 月前3simd: How to Express Inherent Parallelism Efficiently Via Data-Parallel Types
Example: Image Processing Programming Models Outlook Summary Solution 1: Standard C++ Source Code Machine Code loop-invariant code 16 × arrows: sequenced before Matthias Kretz CppCon ’23 35 GSI Helmholtz Example: Image Processing Programming Models Outlook Summary Solution 1: Standard C++ Source Code Machine Code loop-invariant code 16 × arrows: sequenced before Knowledge about inherent parallelism got Example: Image Processing Programming Models Outlook Summary Solution 1: Standard C++ Source Code Machine Code loop-invariant code 16 × arrows: sequenced before Knowledge about inherent parallelism got0 码力 | 160 页 | 8.82 MB | 5 月前3Conan 1.56 Documentation
pip (recommended) To install Conan using pip, you need Python>=3.6 distribution installed on your machine. Warning: Python 2 has been deprecated on January 1st, 2020 by the Python maintainers and from Conan committed to version control, as they have paths to local folders that will not exist in another machine. Moreover, it is very important to highlight that generated files match the given configuration (Debug/Release build_type=Debug. These settings are typically a project-wide configuration defined by the client machine, so they cannot have a default value in the recipe. For example, it doesn’t make sense for a package0 码力 | 963 页 | 7.67 MB | 1 年前3
共 161 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17
相关搜索词
BacktoBasicsTheAbstractMachineLeveragingthePowerofC++forEfficientLearningonEmbeddedDevicesmicrograd++500lineLibraryJustinTimeCompilationBastienCppCon2020PerformanceEngineeringBeingFriendlyYourHardwarestructureProgramDevelopingWorldWhyitMattersExceptionalsimdHowExpressInherentParallelismEfficientlyViaDataParallelTypesConan1.56Documentation