simd: How to Express Inherent Parallelism Efficiently Via Data-Parallel TypesCppCon ’23 @mkretz@floss.social github.com/mattkretzMotivation std::simd Overview Example: Image Processing Programming Models Outlook Summary Goals and non-goals for this talk • This is not a tutorial CppCon ’23 3 GSI Helmholtz Center for Heavy Ion ResearchMotivation std::simd Overview Example: Image Processing Programming Models Outlook Summary Motivation Motivation © by Matthias Kretz Matthias Kretz CppCon CppCon ’23 GSI Helmholtz Center for Heavy Ion ResearchMotivation std::simd Overview Example: Image Processing Programming Models Outlook Summary std::simd is for you! Matthias Kretz CppCon ’23 4 GSI Helmholtz0 码力 | 160 页 | 8.82 MB | 6 月前3
CppCon 2021: Persistent Data StructuresDesign Goals Methodology Performance Results Live Demonstration A Persistent Hash Map for Graph Processing Workloads and a Methodology for Persistent Transactional Data Structures 2IntroductionIntroduction commercially available through Intel® OptaneTM DC Persistent Memory A Persistent Hash Map for Graph Processing Workloads and a Methodology for Persistent Transactional Data Structures 4Introduction Persistent Block Granularity Figure 1: Traditional Memory Hierarchy [1] A Persistent Hash Map for Graph Processing Workloads and a Methodology for Persistent Transactional Data Structures 5Introduction Persistent0 码力 | 56 页 | 1.90 MB | 6 月前3
Techniques to Optimise Multi-threaded Data Building During Game Developmentparallel code Writing systems as singletons Assuming only one instance is needed Assuming frame processing is happening Filling frame related buffers - crash when full Assuming all game systems are initialised data into global shared system - like object graph, ECS, or database Good for the game - makes processing files individually more difficult Speaker notesOPTIMISATION GOAL Minimise the time taken to process hash ▶ Use caches - for everything possible Processing caches Used internally during data building Store frequently read values - save on IO & processing Output caches Store built data - Can copy rather0 码力 | 99 页 | 2.40 MB | 6 月前3
The Roles of Symmetry And Orthogonality In DesignSystem-specific adapters may require custom handling • Exceptional events may require special processing • Custom or adaptive behavior may invoke novel execution paths Guarantee • Inviolate principle may require special processing • Custom or adaptive behavior may invoke novel execution paths • Examples: • Prefer generalized solution, but plugin API allows for custom processing (such as hardware offloading) may require special processing • Custom or adaptive behavior may invoke novel execution paths • Examples: • Prefer generalized solution, but plugin API allows for custom processing (such as hardware offloading)0 码力 | 151 页 | 3.20 MB | 6 月前3
Get off my thread: Techniques for moving k to background threadscurrent thread? Many environments have a dedicated thread for processing events: GUIs Client-Server applications Performing extensive processing on the event thread prevents other events from being handled long-lived and consumes resources The handling of the event is disconnected from the event No parallel processing: it’s a single thread!Dedicated threads: upsides Upsides to dedicated threads: The events are down the threadThread pools If a dedicated processing thread isn’t the ideal fit, an alternative is a pool of threadsThread pools If a dedicated processing thread isn’t the ideal fit, an alternative is0 码力 | 90 页 | 6.97 MB | 6 月前3
Taming the C++ Filter Viewby josuttis.com 51 C++ Consequences for Read Iterations C++20 ©2024 by josuttis.com 52 C++ Processing Containers and Views void print(const auto& coll) { for (const auto& elem : coll) { std::cout Compile-time ERROR Nico Josuttis C++ Filter View @cppcon 2024-09-17 26©2024 by josuttis.com 53 C++ Processing Containers and Views void print(const auto& coll) { for (const auto& elem : coll) { std::cout = main()::]' 1794 | begin() | ^~~~~ ©2024 by josuttis.com 54 C++ Processing Containers and Views void print(const auto& coll) { for (const auto& elem : coll) { std::cout 0 码力 | 43 页 | 2.77 MB | 6 月前3
Embracing an Adversarial Mindset for Cpp SecurityIntegrity Level • Cloud Service to handle the AI OCR processing UI App [Medium IL] Service [High IL] Serialized Data Cloud AI OCR Processing Serialized DataAdversary Perspective UI App [Medium [Medium IL] Service [High IL] Serialized Data Cloud AI OCR Processing File Input Validation Maliciously crafted file Loaded Resource Integrity Checking Privilege Escalation Safe Parsing? Safe security standards • GDPR (EU) - Privacy • CCPA (California) – Privacy • PCI DSS – Payment processing • HIPPA – Healthcare privacy •Endpoint Detection and Response •Compiler Security Extensions0 码力 | 92 页 | 3.67 MB | 6 月前3
Boosting Software Efficiencyfor transmission remains in RAM, awaiting further processing. 114PROBLEMS & SOLUTIONS Data for transmission remains in RAM, awaiting further processing. 115 So, what is the problem with that?PROBLEMS PROBLEMS & SOLUTIONS Data for transmission remains in RAM, awaiting further processing. 116 In case of unstable communication: Start to aggregate - takes a lot of space. Loss of data in case of reset.0 码力 | 180 页 | 1.65 MB | 6 月前3
Using Modern C++ to Build XOffsetDatastructurecounts. // The division into areas and lines allows for more granular control over game data and processing, but it also increases the need for efficient data transfer between these divisions. // As players • Despite their differences, these approaches share a common characteristic: they all require processing data field by field. • This common feature leads us to a key concept that summarizes all these transfer or storage, such as in high- performance computing, game development, or real-time data processing systems. Fanchen Su, XOffsetDatastructure, CppCon 2024 1077.2 Takeaways • This code snippet demonstrates0 码力 | 111 页 | 3.03 MB | 6 月前3
Back to Basics: Generic Programmingoverload templaterequires is_container void process_collection(const C& c) { // ... processing } https://godbolt.org/z/rWP76vab1173 David Olsen – Generic Programming CppCon 2024 Don’t Specialize is_container void process_collection(const C& c) { // ... processing } template void process_collection(const std::list & c) { // ... list processing } https://godbolt.org/z/rWP76vab1174 David Olsen 0 码力 | 175 页 | 1.16 MB | 6 月前3
共 120 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
相关搜索词
simdHowtoExpressInherentParallelismEfficientlyViaDataParallelTypesCppCon2021PersistentStructuresTechniquesOptimiseMultithreadedBuildingDuringGameDevelopmentTheRolesofSymmetryAndOrthogonalityInDesignGetoffmythreadformovingbackgroundthreadsTamingtheC++FilterViewEmbracinganAdversarialMindsetCppSecurityBoostingSoftwareEfficiencyUsingModernBuildXOffsetDatastructureBackBasicsGenericProgramming













