Parallel Network Partitioning for Multithreaded Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Parallel networks face challenges in achieving consistent and reproducible results due to the need for thread synchronization, which reduces execution speed, especially when multiple synchronization points exist, in multithreaded environments.
Innovation Solution
The method involves partitioning nodes and connections into separate portions, assigning each portion to a parallel executor, and using memory buffers to optimize execution, allowing for asynchronous operation and reducing the need for cross-partition synchronization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If thread synchronization is employed to ensure correct execution order in multithreaded network realization, then consistency and reliability of network operations are improved, but thread execution speed is reduced particularly when multiple synchronization points exist
Solution Approach 1:
The network is partitioned into multiple independent partitions, each executed by a separate thread. Each partition contains a subset of nodes and connections that can be processed independently, eliminating the need for synchronization between threads while maintaining correct execution order within each partition.
Solution Approach 2:
Memory buffers are introduced as intermediaries between partitions to store and transfer data asynchronously. These buffers allow threads to write data without waiting for other threads to read it, eliminating synchronization overhead while ensuring data consistency through the buffer mechanism.
2Reliability
If multiple synchronization points are implemented to maintain correct execution order, then reliability of parallel network operations is improved, but execution efficiency and productivity are reduced
Solution Approach 1:
The network computation is divided into multiple independent partitions that can be executed in parallel without requiring synchronization points. Each partition maintains its own execution context and data dependencies, allowing threads to run independently and continuously without waiting for synchronization.
Solution Approach 2:
Threads execute network partitions continuously without idle synchronization points. The use of memory buffers ensures that data production and consumption can proceed concurrently, maintaining continuous useful action across all threads and maximizing productivity.
3Device complexity
If nodes and connections are processed in a unified manner, then simplicity of implementation is maintained, but parallel execution efficiency is reduced due to synchronization requirements
Solution Approach 1:
The network is segmented into multiple partitions with each partition containing a subset of nodes and connections. This segmentation enables independent parallel execution of each partition while maintaining relatively simple implementation within each partition. The partitioning strategy balances the workload and minimizes inter-partition dependencies.
Solution Approach 2:
Each partition is optimized for local execution with its own data structures and computation logic. This local optimization allows each thread to efficiently process its assigned partition without being constrained by global synchronization requirements, thereby improving parallel execution speed while keeping individual partition implementations simple.
Data Source
AI summary
Apparatus and methods for developing parallel networks. In some implementations, a network may be partitioned into multiple partitions, wherein individual portions are being executed by respective threads executed in parallel. Individual portions may comprise multiple neurons and synapses. In order to reduce cross-thread traffic and/or reduce number of synchronization locks, network may be partitioned such that for given network portion, the neurons and the input synapses into neurons within the portion are executed within the same thread. Synapse update rules may be configured to allow memory access for postsynaptic neurons and forbid memory access to presynaptic neurons. Individual threads may be afforded pairs of memory buffers configured to effectuate asynchronous data input/output to/from thread. During an even iteration of network operation, even buffer may be utilized to store data generated by the thread during even iteration. Odd buffer may be utilized to read data, generated by other threads during the preceding odd iteration.


