File: 2DBFS_optimizations.txt

package info (click to toggle)
combblas 2.0.0-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 190,488 kB
  • sloc: cpp: 55,918; ansic: 25,134; sh: 3,691; makefile: 548; csh: 66; python: 49; perl: 21
file content (29 lines) | stat: -rw-r--r-- 964 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
New signature #1: 
SpImpl:SpMXSV(...., vector< pair<IT,IT> > vec_boundaries) // default is vec_boundaries  = empty vector

- This hints the parallel logic down to the sequential operation
- Advantages:
 a) We no longer need to repartition in the parallel function
 b) Potentially smaller (but multiple) working sets. Any help?



The original prototype was:
void SpImpl::SpMXSpV(const Dcsc<IT,NT1> & Adcsc, 
			IT mA, 
			IT nA, 
			const IT * indx, 
			const NT2 * numx, 
			IT veclen,
                	vector<IT> & indy,  // becomes a vector of vectors, size = boundaries.size() = p_c
			vector< typename promote_trait<NT1,NT2>::T_promote > & numy) // same change here


New signature #2:
SpImpl:SpMXSV(...., vector< pair<IT,IT> > mat_boundaries) // default is mat_boundaries = empty vector

mat_boundaries.size() is ideally equal to the number of threads available.
If not, each thread handles multiple mat_boundaries.


How we do combine signatures #1 and #2?