Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
d65973b
LUSolver: inv(trans(L)) . (inv(L) . b)
byjtew Sep 12, 2023
72e8996
LUSolver: inv(L) . (inv(U) . b)
byjtew Sep 13, 2023
bf97dbc
Iteration bugfix
byjtew Sep 13, 2023
1e096a1
Fine-grained for matrices
byjtew Sep 13, 2023
ed4520d
remove useless print
byjtew Sep 13, 2023
5cc28a0
SpMV refactor
byjtew Sep 14, 2023
05f2b26
LLtSolver fix
byjtew Sep 14, 2023
581ff02
LUSolver fix
byjtew Sep 14, 2023
1392f23
global offset fix
byjtew Sep 14, 2023
75b59ce
Massive refactoring for Matrix structure
byjtew Sep 14, 2023
7a6f463
Output refactoring
byjtew Sep 14, 2023
85bf4d2
Remove nodes reindexing phase
byjtew Sep 18, 2023
fae9a17
Example of LLtSolver for 4x4 dense matrix
byjtew Sep 18, 2023
90592bd
Update requirement + new visualisation tool
byjtew Sep 18, 2023
e58cca2
remove useless datafile
byjtew Sep 19, 2023
4117075
Updated data + fixes
byjtew Sep 20, 2023
fb5e519
LLtSvoler computation bugfix
byjtew Sep 20, 2023
3d4567f
LLtSolver result 3x3 with 50% sparsity
byjtew Sep 20, 2023
d8276c7
1000x1000 5% sparsity LLtSolver
byjtew Sep 20, 2023
6e46bf8
DAG visulisation tool refactoring
byjtew Sep 20, 2023
821eb48
Fix LUSolver
byjtew Sep 22, 2023
d81113b
Add SpMV source_node parameter
byjtew Sep 22, 2023
7d886f8
ALUSolver implementation
byjtew Sep 22, 2023
16fa8fd
output default filename change
byjtew Sep 22, 2023
848d17f
Final fix
byjtew Sep 22, 2023
97af999
size_t usage instead of int
byjtew Sep 28, 2023
1e6fd10
Move In/Out to private local APIs
byjtew Sep 28, 2023
0666405
Usage of unordered_map instead of vector to limit memory usage
byjtew Sep 28, 2023
39d65e0
New version of the generator - structure only
byjtew Oct 5, 2023
39527da
rajat11 updated - no postprocessing on ids
byjtew Oct 5, 2023
6222f19
west0497 - no postprocessing on ids
byjtew Oct 5, 2023
8230b0b
lovely
byjtew Oct 5, 2023
32cb3ba
-sink + -reindex + -idx_from_one options
byjtew Oct 6, 2023
c384b4d
Restricted + reindexed results
byjtew Oct 6, 2023
3abc8ed
Reimplementation of methods using the parser
byjtew Oct 12, 2023
c9713de
solver.sh improvement
byjtew Oct 27, 2023
a8cb613
ilu script (redundant for mr)
byjtew Oct 27, 2023
2979fa1
rajat05
byjtew Oct 27, 2023
af28a5f
rajat12
byjtew Oct 27, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
tools/HyperDAG_generator/generator
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,14 @@ fixedIn: generates a random DAG where each node has an indegree that is equal to

expectedIn: generates a random DAG where each node has an indegree that is equal to the "indegree" parameter in expectation. That is, for node i, there is an edge from each node 0,1,...,(i-1) to node i independently with a fixed probability p, and p is always chosen such that the expected number of incoming edges of node i is "indegree". If i<"indegree", the node i has an edge from all previous nodes, and its degree is only i. Additionally, if the sourceProb parameter is used, then each node is chosen as a source with this given probability, meaning that it does not have any incoming edges at all (corresponding to e.g. new input scalars in a real-world computation). Possible parameters: -output, -N, -indegree, -sourceProb

SpMV: generates a DAG that corresponds to the fine-grained representation of a sparse matrix - dense vector multiplication. By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. The matrix A is then multiplied by a dense vector of length N. In the end, nodes of the DAG which are no connected to the final vector (e.g. cells of the vector that correspond to a matrix column that is entirely zero) are removed. It is also possible to read the input matrix from a file if the "input" parameter is used. Possible parameters: -output, -N, -input, -nonzeroProb
SpMV: generates a DAG that corresponds to the fine-grained representation of a sparse matrix - dense vector multiplication (out-of-place). By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. The matrix A is then multiplied by a dense vector of length N. In the end, nodes of the DAG which are no connected to the final vector (e.g. cells of the vector that correspond to a matrix column that is entirely zero) are removed. It is also possible to read the input matrix from a file if the "input" parameter is used. Possible parameters: -output, -N, -input, -nonzeroProb

SpMVExp: generates a DAG that corresponds to the fine-grained representation of the operation where we multiply a sparse matrix A by a dense vector v, K times consecutively (A^k * v). By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. The matrix A is then multiplied by a dense vector (of length N) K times consecutively. In the end, nodes of the DAG which are not predecessors of a nonzero value in the final vector are removed. Note that this step can remove larger parts of the DAG when some intermediate values are computed, but then always only multiplied by zeros (in some cases, the number of nodes in the DAG can even decrease when K is incremented!). It is also possible to read the input matrix from a file if the "input" parameter is used. Possible parameters: -output, -N, -K, -input, -nonzeroProb

LLtSolver: generates a DAG that corresponds to the fine-grained representation of: z = inv(trans(L)) . (inv(L) . x). By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. The matrix L (lower triangular matrix) is then multiplied by a dense vector of length N, then the result is re-multiplied by this same matrix L but transposed. In the end, nodes of the DAG which are no connected to the final vector (e.g. cells of the vector that correspond to a matrix column that is entirely zero) are removed. It is also possible to read the input matrix from a file if the "input" parameter is used. Possible parameters: -output, -N, -input, -nonzeroProb

LUSolver: generates a DAG that corresponds to the fine-grained representation of: z = inv(U) . (inv(L) . x). By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. The matrix L (lower triangular matrix) is then multiplied by a dense vector of length N, then the result is re-multiplied by this same matrix L but transposed. In the end, nodes of the DAG which are no connected to the final vector (e.g. cells of the vector that correspond to a matrix column that is entirely zero) are removed. It is also possible to read the input matrix from a file if the "input" parameter is used. Possible parameters: -output, -N, -input, -nonzeroProb

kNN: generates a DAG that corresponds to the fine-grained representation of the operation where we multiply a sparse matrix A by a sparse vector v, K times consecutively (A^k * v). By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. The vector "v" only has one nonzero cell (at a randomly chosen index) in the beginning. The matrix A is then multiplied by the vector v, and this is done K times consecutively. In the end, nodes of the DAG which are no connected to the final vector are removed. It is also possible to read the input matrix from a file if the "input" parameter is used; in this case, we can also specify the index of v where the nonzero cell is located, through the "sourceNode" parameter. Possible parameters: -output, -N, -K, -input, -nonzeroProb, -sourceNode

CG: generates a DAG that corresponds to the fine-grained representation of K iterations of the conjugate gradient method for a sparse matrix A (corresponding to a simple version of the iterative method, as described in the pseudocode in the appropriate Wikipedia article). By default, it generates an input matrix A of size NxN, where each cell is independently nonzero with a given probability, specified by the "nonzeroProb" parameter. It is also possible to read the input matrix from a file if the "input" parameter is used. Possible parameters: -output, -N, -K, -input, -nonzeroProb
Expand All @@ -69,7 +73,7 @@ CG: generates a DAG that corresponds to the fine-grained representation of K ite
POSSIBLE PARAMETERS (case sensitive):
-------------------------------------

"-mode" : compulsory parameter, describes the method used for generating a hyperDAG. Possible values are: ER, fixedIn, expectedIn, SpMV, SpMVExp, kNN, CG
"-mode" : compulsory parameter, describes the method used for generating a hyperDAG. Possible values are: ER, fixedIn, expectedIn, SpMV, SpMVExp, LLtSolver, kNN, CG

"-output": describes the name of the output file where the hyperDAG is written. If not specified, the default name is "output.txt"

Expand Down
4 changes: 4 additions & 0 deletions tools/HyperDAG_generator/compile.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
command="g++ generator.cpp -o generator -g -Ofast -ltbb -std=c++17"

echo $command
eval $command
Loading