Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
6e87997
Create scatter.cpp
gouthamdeepak1705 Sep 16, 2024
199a46a
Update scatter.cpp
gouthamdeepak1705 Sep 16, 2024
b22128c
Update random_matrix_generator.py
gouthamdeepak1705 Sep 16, 2024
06c541d
Update scatter.cpp
gouthamdeepak1705 Sep 16, 2024
5cf80e5
Create gather.cpp
gouthamdeepak1705 Sep 17, 2024
2198d0f
Update random_matrix_generator.py
gouthamdeepak1705 Sep 17, 2024
b3a4ff2
Update cache_simulator.py
gouthamdeepak1705 Sep 17, 2024
73296ec
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
10789dd
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
e84624e
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
7317eae
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
d748764
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
453eda0
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
b4925cf
Update scatter.cpp
gouthamdeepak1705 Sep 17, 2024
83c9f37
Update scatter.cpp
gouthamdeepak1705 Sep 18, 2024
3ce9eda
Update scatter.cpp
gouthamdeepak1705 Sep 18, 2024
42cfcb5
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
a6aff31
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
04c2a55
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
5cf5368
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
9d99838
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
e7ffa7b
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
ad50e6e
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
220e424
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
2eeb35d
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
c46fbf8
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
6c679bc
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
2c5eba0
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
1246667
Update gather.cpp
gouthamdeepak1705 Sep 18, 2024
d09aaf8
Create convolve.cpp
gouthamdeepak1705 Sep 18, 2024
0525baa
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
a39ab40
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
ba5f8f6
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
c885286
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
cb0f201
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
ca0090f
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
1277703
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
6c7a144
Update convolve.cpp
gouthamdeepak1705 Sep 18, 2024
8467750
Update convolve.cpp
gouthamdeepak1705 Sep 19, 2024
229f529
Update convolve.cpp
gouthamdeepak1705 Sep 19, 2024
6494aa0
Update convolve.cpp
gouthamdeepak1705 Sep 19, 2024
994fad2
Update convolve.cpp
gouthamdeepak1705 Sep 19, 2024
ea7bf90
Update convolve.cpp
gouthamdeepak1705 Sep 19, 2024
9e352f3
Update convolve.cpp
gouthamdeepak1705 Sep 19, 2024
27d3603
Update scatter.cpp
gouthamdeepak1705 Sep 20, 2024
598f537
Update gather.cpp
gouthamdeepak1705 Sep 20, 2024
33ad09e
Update convolve.cpp
gouthamdeepak1705 Sep 20, 2024
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
2 changes: 1 addition & 1 deletion Simulator/src/cache_simulator.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def main():

logger.info('Loading config...')
config_file = open(arguments['config_file'])
configs = yaml.load(config_file)
configs = yaml.load(config_file, Loader=yaml.FullLoader)
hierarchy = build_hierarchy(configs, logger)
logger.info('Memory hierarchy built.')

Expand Down
101 changes: 101 additions & 0 deletions src/convolve.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
#include <sstream>
#include <string>
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

void parsec_roi_begin()
{
}

void parsec_roi_end()
{
}

struct Result {
vector< vector<int> > A;
};

Result read(string filename) {
vector< vector<int> > A;
Result ab;
string line;
ifstream infile;
infile.open(filename.c_str());

int i = 0;
while (getline(infile, line) && !line.empty()) {
istringstream iss(line);
A.resize(A.size() + 1);
int a, j = 0;
while (iss >> a) {
A[i].push_back(a);
j++;
}
i++;
}
infile.close();
ab.A = A;
return ab;
}

vector<vector<int>> initializeIdentityKernel(int size) {
vector<vector<int>> kernel(size, vector<int>(size, 0));
for (int i = 0; i < size; ++i) {
kernel[i][i] = 1;
}
return kernel;
}

vector<vector<int>> convolve(const vector<vector<int>>& matrix, const vector<vector<int>>& kernel) {
int matrixSize = matrix.size();
int kernelSize = kernel.size();
int outputSize = matrixSize - kernelSize + 1;

vector<vector<int>> result(outputSize, vector<int>(outputSize, 0));

for (int row = 0; row <= matrixSize - kernelSize; ++row) {
for (int col = 0; col <= matrixSize - kernelSize; ++col) {
int convSum = 0;
for (int i = 0; i < kernelSize; ++i) {
for (int j = 0; j < kernelSize; ++j) {
convSum += matrix[row + i][col + j] * kernel[i][j];
}
}
result[row][col] = convSum;
}
}

return result;
}

void printMatrix(vector< vector<int> > matrix) {
vector< vector<int> >::iterator it;
vector<int>::iterator inner;
for (it = matrix.begin(); it != matrix.end(); ++it) {
for (inner = it->begin(); inner != it->end(); ++inner) {
cout << *inner;
if (inner + 1 != it->end()) {
cout << "\t";
}
}
cout << endl;
}
}

int main(int argc, char* argv[]) {
string filename;
if (argc < 3) {
filename = "2000.in";
} else {
filename = argv[2];
}
Result result = read(filename);
vector<vector<int>> kernel = initializeIdentityKernel(7);
parsec_roi_begin();
vector< vector<int> > C = convolve(result.A, kernel);
parsec_roi_end();
return 0;
}
95 changes: 95 additions & 0 deletions src/gather.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#include <sstream>
#include <string>
#include <fstream>
#include <iostream>
#include <vector>
#include <ctime>
#include <unordered_set>

using namespace std;

void parsec_roi_begin()
{
}

void parsec_roi_end()
{
}

struct Result {
vector< vector<int> > A;
};

Result read(string filename) {
vector< vector<int> > A;
Result ab;
string line;
ifstream infile;
infile.open (filename.c_str());

int i = 0;
while (getline(infile, line) && !line.empty()) {
istringstream iss(line);
A.resize(A.size() + 1);
int a, j = 0;
while (iss >> a) {
A[i].push_back(a);
j++;
}
i++;
}
infile.close();
ab.A = A;
return ab;
}

vector<int> gather(const vector<vector<int>>& A) {
int n = A.size();
int elements = 1000;
vector<int> indices(elements), result(elements);
unordered_set<int> unique_indices;

for(int i = 0; i < elements; ++i) {
int random_index;
do {
random_index = rand() % (n * n);
} while(unique_indices.find(random_index) != unique_indices.end());

indices[i] = random_index;
unique_indices.insert(random_index);
}

int offset = 5;
for(int idx = 0; idx < elements; ++idx) {
int rowIndex = indices[idx] / n;
int columnIndex = indices[idx] % n;
result[idx] = A[rowIndex][columnIndex] + offset;
}

return result;
}

void printVector(const vector<int>& vec) {
for (size_t i = 0; i < vec.size(); i++) {
cout << vec[i];
if (i + 1 != vec.size()) {
cout << "\t";
}
}
cout << endl;
}

int main (int argc, char* argv[]) {
srand(time(0));
string filename;
if (argc < 3) {
filename = "2000.in";
} else {
filename = argv[2];
}
Result result = read (filename);
parsec_roi_begin();
vector<int> C = gather(result.A);
parsec_roi_end();
return 0;
}
95 changes: 95 additions & 0 deletions src/scatter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#include <sstream>
#include <string>
#include <fstream>
#include <iostream>
#include <vector>
#include <ctime>

using namespace std;

void parsec_roi_begin()
{

}

void parsec_roi_end()
{

}

struct Result {
vector< vector<int> > A;
};

Result read(string filename) {
vector< vector<int> > A;
Result ab;
string line;
ifstream infile;
infile.open (filename.c_str());

int i = 0;
while (getline(infile, line) && !line.empty()) {
istringstream iss(line);
A.resize(A.size() + 1);
int a, j = 0;
while (iss >> a) {
A[i].push_back(a);
j++;
}
i++;
}
infile.close();
ab.A = A;
return ab;
}

vector< vector<int> > scatter(vector< vector<int> > A) {
int n = A.size();
int numElements = 1000;
vector<int> indices(numElements);
vector<int> values(numElements);

for(int i = 0; i < numElements; i++) {
int randomIndex = rand() % (n * n);
indices[i] = randomIndex;
values[i] = rand();
}

for(int i = 0; i < numElements; i++) {
int row = indices[i] / n;
int column = indices[i] % n;
A[row][column] = values[i];
}

return A;
}

void printMatrix(vector< vector<int> > matrix) {
vector< vector<int> >::iterator it;
vector<int>::iterator inner;
for (it=matrix.begin(); it != matrix.end(); it++) {
for (inner = it->begin(); inner != it->end(); inner++) {
cout << *inner;
if(inner+1 != it->end()) {
cout << "\t";
}
}
cout << endl;
}
}

int main (int argc, char* argv[]) {
srand(time(0));
string filename;
if (argc < 3) {
filename = "2000.in";
} else {
filename = argv[2];
}
Result result = read (filename);
parsec_roi_begin();
vector< vector<int> > C = scatter(result.A);
parsec_roi_end();
return 0;
}
19 changes: 2 additions & 17 deletions utils/random_matrix_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def saveMatrix(matrixA, matrixB, filename):
else:
print("New file created: ",filename)
f = open(filename, "w")
for i, matrix in enumerate([matrixA, matrixB]):
for i, matrix in enumerate([matrixA]):
if i != 0:
f.write("\n")
for line in matrix:
Expand Down Expand Up @@ -61,7 +61,6 @@ def main():
outpath = args.dump
#Create dense matrix
matrixA = createRandomMatrix(n)
matrixB = createRandomMatrix(n)
#print(matrixA)
#Convert to sparse matrix by replacing value below threshold to 0
if (args.sparsity):
Expand All @@ -71,27 +70,13 @@ def main():
size=int(matrixA.size * (args.sparsity/100)))
flatA = matrixA.flatten()
flatA[indicesA] = 0
#Replace random x %element to 0 in matrixB
matrixB = np.asarray(matrixB)
indicesB = np.random.choice(np.arange(matrixB.size), replace=False,
size=int(matrixB.size * (args.sparsity/100)))
flatB = matrixB.flatten()
flatB[indicesB] = 0
#Reshape it back to square matrix
flatA = flatA.reshape(n,n)
flatB = flatB.reshape(n,n)
#print(flatA)
matrixA_csr = sparse.csr_matrix(flatA)
#print(matrixA_csr)
matrixB_csr = sparse.csr_matrix(flatB)
matrixA = flatA.tolist()
matrixB = flatB.tolist()
csr_Amatrix = "csrA_"+args.dump
csr_Bmatrix = "csrB_"+args.dump
saveCSRMatrix(matrixA_csr, csr_Amatrix)
saveCSRMatrix(matrixB_csr, csr_Bmatrix)
#print(matrixA)
saveMatrix(matrixA, matrixB, args.dump)
saveMatrix(matrixA, args.dump, "input_matrix.in")

if __name__ == '__main__':
main()