Benchmarking stuff

This commit is contained in:
fares 2019-11-25 02:52:09 -05:00
parent cec065b6fd
commit 44b8cdf5c1
11 changed files with 595 additions and 24 deletions

View file

@ -0,0 +1,101 @@
Warps: 2, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
292351
Warps: 2, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
174990
Warps: 2, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
87686
Warps: 2, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
44034
Warps: 2, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
29981
Warps: 4, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
751528
Warps: 4, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
490532
Warps: 4, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
245460
Warps: 4, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
122924
Warps: 4, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
61656
Warps: 8, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
609347
Warps: 8, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
337922
Warps: 8, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
103378
Warps: 8, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
44932
Warps: 8, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
30426
Warps: 16, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
446749
Warps: 16, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
197890
Warps: 16, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
106086
Warps: 16, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
46464
Warps: 16, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
31573
Warps: 32, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
274885
Warps: 32, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
185833
Warps: 32, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
95355
Warps: 32, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
49745
Warps: 32, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/saxpy/saxpy.hex -s -b
33326

View file

@ -0,0 +1,80 @@
Warps: 2, Threads: 2
2037907
Warps: 2, Threads: 4
1205061
Warps: 2, Threads: 8
583051
Warps: 2, Threads: 16
358821
Warps: 2, Threads: 32
168914
Warps: 4, Threads: 2
1647415
Warps: 4, Threads: 4
Warps: 4, Threads: 2
1719354
Warps: 4, Threads: 4
837672
Warps: 4, Threads: 8
358354
Warps: 4, Threads: 16
218991
Warps: 4, Threads: 32
174153
Warps: 8, Threads: 2
1684691
Warps: 8, Threads: 4
1035207
Warps: 8, Threads: 8
552477
Warps: 8, Threads: 16
316346
Warps: 8, Threads: 32
128139
Warps: 16, Threads: 2
1666519
Warps: 16, Threads: 4
1043940
Warps: 16, Threads: 8
554168
Warps: 16, Threads: 16
316615
Warps: 16, Threads: 32
131018
Warps: 32, Threads: 2
1637051
Warps: 32, Threads: 4
1036768
Warps: 32, Threads: 8
544135
Warps: 32, Threads: 16
310251
Warps: 32, Threads: 32
157421

View file

@ -0,0 +1,276 @@
Warps: 2, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
14663775
Warps: 2, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
10280838
Warps: 2, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
5133778
Warps: 2, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
2670416
Warps: 2, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
1353300
Warps: 4, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
14014523
Warps: 4, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
6700429
Warps: 4, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
4196995
Warps: 4, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
2179254
Warps: 4, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
1303963
Warps: 8, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
8146968
Warps: 8, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
4180557
Warps: 8, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
1946300
Warps: 8, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
1056178
Warps: 8, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
449062
Warps: 16, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
4103843
Warps: 16, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
2198894
Warps: 16, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
1080948
Warps: 16, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
630038
Warps: 16, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
448537
Warps: 32, Threads: 2
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
2512219
Warps: 32, Threads: 4
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
1524192
Warps: 32, Threads: 8
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
936191
Warps: 32, Threads: 16
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
446168
Warps: 32, Threads: 32
../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/sgemm/sgemm.hex -s -b
ctx->num_groups[0]: 64
ctx->num_groups[1]: 64
ctx->num_groups[2]: 64
ctx->local_size[0]: 1
ctx->local_size[1]: 1
ctx->local_size[2]: 1
380334

View file

@ -0,0 +1,51 @@
Warps: 2, Threads: 2
1.313778
Warps: 2, Threads: 4
1.869814
Warps: 2, Threads: 8
3.794385
Warps: 2, Threads: 16
7.532425
Warps: 2, Threads: 32
15.194329
Warps: 4, Threads: 2
1.373928
Warps: 4, Threads: 4
2.106374
Warps: 4, Threads: 8
4.214628
Warps: 4, Threads: 16
8.372964
Warps: 4, Threads: 32
16.604193
Warps: 8, Threads: 2
0.647895
Warps: 8, Threads: 4
1.232910
Warps: 8, Threads: 8
2.505588
Warps: 8, Threads: 16
5.622365
Warps: 8, Threads: 32
13.141898
Warps: 16, Threads: 2
0.683937
Warps: 16, Threads: 4
1.362874
Warps: 16, Threads: 8
2.877766
Warps: 16, Threads: 16
7.303546
Warps: 16, Threads: 32
12.981466
Warps: 32, Threads: 2
0.919473
Warps: 32, Threads: 4
1.601678
Warps: 32, Threads: 8
3.462736
Warps: 32, Threads: 16
7.460658
Warps: 32, Threads: 32
14.898925

View file

@ -0,0 +1,27 @@
for PROJECT in sfilter; do
echo "" > $PROJECT.result
for number_of_warps in 2 4 8 16 32; do
for number_of_threads in 2 4 8 16 32; do
echo "$PROJECT = Warp Count: $number_of_warps Thread Count: $number_of_threads Launched"
echo "#define TOTAL_THREADS $number_of_threads" > ../../runtime/config.h
echo "#define TOTAL_WARPS $number_of_warps" >> ../../runtime/config.h
cd ../opencl/$PROJECT
make clean &>> /dev/null
make &>> /dev/null
cd ../../test_benchmark
echo "Warps: $number_of_warps, Threads: $number_of_threads" >> $PROJECT.result
# echo ../../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/$PROJECT/$PROJECT.hex -s -b &>> $PROJECT.result
../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/$PROJECT/$PROJECT.hex -s -b &>> $PROJECT.result
done
done
done

View file

@ -0,0 +1,24 @@
PROJECT=sgemm
echo "" > $PROJECT.result
for number_of_warps in 2 4 8 16 32; do
for number_of_threads in 2 4 8 16 32; do
echo "Warp Count: $number_of_warps Thread Count: $number_of_threads Launched"
echo "#define TOTAL_THREADS $number_of_threads" > ../../runtime/config.h
echo "#define TOTAL_WARPS $number_of_warps" >> ../../runtime/config.h
cd ../opencl/$PROJECT
make clean &>> /dev/null
make &>> /dev/null
cd ../../test_benchmark
echo "Warps: $number_of_warps, Threads: $number_of_threads" >> $PROJECT.result
../../simX/obj_dir/Vcache_simX -E -a rv32i --core ../opencl/$PROJECT/$PROJECT.hex -s -b &>> $PROJECT.result
done
done

2
runtime/config.h Normal file
View file

@ -0,0 +1,2 @@
#define TOTAL_THREADS 4
#define TOTAL_WARPS 4

View file

@ -1,15 +1,16 @@
#pragma once
#include "../intrinsics/vx_intrinsics.h"
#include "vx_api.h"
#include <inttypes.h>
#include "../config.h"
#ifdef __cplusplus
extern "C" {
#endif
#define TOTAL_WARPS 2
#define TOTAL_THREADS 16
func_t global_function_pointer;
// void (func_t)(void *)
@ -105,7 +106,7 @@ void pocl_spawn(struct context_t * ctx, const void * pfn, void * arguments)
{
pocl_threads = TOTAL_THREADS;
global_x = ctx->num_groups[0] / TOTAL_THREADS;
printf("pocl_threads: %d\n", pocl_threads);
// printf("pocl_threads: %d\n", pocl_threads);
// printf("global_x: %d\n", global_x);
}
else
@ -149,8 +150,17 @@ void pocl_spawn(struct context_t * ctx, const void * pfn, void * arguments)
unsigned end_inst = vx_getInst();
printf("pocl_spawn: Total Cycles: %d\n", (end_cycles - starting_cycles));
printf("pocl_spawn: Total Inst : %d\n", (end_inst - starting_inst ));
unsigned total_cycles = (unsigned) (end_cycles - starting_cycles);
// float total_inst = (float) (end_inst - starting_inst );
// float ipc = total_inst/total_cycles;
printf("%d\n", total_cycles);
vx_tmc(0);
// printf("pocl_spawn: Total Cycles: %d\n", );
// printf("pocl_spawn: Total Inst : %d\n", (end_inst - starting_inst ));
// int z;
// int y;

View file

@ -413,7 +413,7 @@ void Core::fetch()
w[schedule_w].step(&inst_in_fetch);
D(3, "Now " << w[schedule_w].activeThreads << " active threads in " << schedule_w << flush);
// this->getCacheDelays(&inst_in_fetch);
this->getCacheDelays(&inst_in_fetch);
D(3, "Got cache delays" << flush);
if (inst_in_fetch.stall_warp)
{
@ -697,15 +697,15 @@ bool Core::running() const {
}
void Core::printStats() const {
unsigned long insts = 0;
for (unsigned i = 0; i < w.size(); ++i)
insts += w[i].insts;
// unsigned long insts = 0;
// for (unsigned i = 0; i < w.size(); ++i)
// insts += w[i].insts;
cerr << "Total steps: " << steps << endl;
for (unsigned i = 0; i < w.size(); ++i) {
// cout << "=== Warp " << i << " ===" << endl;
w[i].printStats();
}
// cerr << "Total steps: " << steps << endl;
// for (unsigned i = 0; i < w.size(); ++i) {
// // cout << "=== Warp " << i << " ===" << endl;
// w[i].printStats();
// }
}
Warp::Warp(Core *c, Word id) :
@ -836,13 +836,13 @@ bool Warp::interrupt(Word r0) {
}
void Warp::printStats() const {
cout << "Steps : " << steps << endl
<< "Insts : " << insts << endl
<< "Loads : " << loads << endl
<< "Stores: " << stores << endl;
// cout << "Steps : " << steps << endl
// << "Insts : " << insts << endl
// << "Loads : " << loads << endl
// << "Stores: " << stores << endl;
unsigned const grade = reg[0][28];
if (grade == 1) cout << "GRADE: PASSED\n";
else cout << "GRADE: FAILED " << (grade >> 1) << "\n";
// if (grade == 1) cout << "GRADE: PASSED\n";
// else cout << "GRADE: FAILED " << (grade >> 1) << "\n";
}

View file

@ -2225,8 +2225,8 @@ void Instruction::executeOn(Warp &c, trace_inst_t * trace_inst) {
// cout << "After for loop" << endl;
break;
default:
cout << "pc: " << hex << (c.pc-4) << "\n";
cout << "aERROR: Unsupported instruction: " << *this << "\n" << flush;
D(3, "pc: " << hex << (c.pc-4));
D(3, "aERROR: Unsupported instruction: " << *this);
exit(1);
}

View file

@ -104,7 +104,7 @@ int emu_main(int argc, char **argv) {
// mu.attach(console, 0xf0000000);
// core.w[0].pc = 0x8000007c; // If I want to start at a specific location
std::cout << "ABOUT TO START\n";
// std::cout << "ABOUT TO START\n";
// bool count_down = false;
// int cycles_left;
// while (!count_down || (count_down && (cycles_left == 0)))