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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#!/bin/sh
rm -rf bandwidth-0.13/
tar -xvf bandwidth-0.13.tar.gz
rm -f memory-bandwidth
echo "#!/bin/sh
case \"\$1\" in
\"TEST_L2READ\")
./bandwidth -l2read | grep \"L2 cache sequential read\"
;;
\"TEST_L2WRITE\")
./bandwidth -l2write | grep \"L2 cache sequential write\"
;;
\"TEST_READ\")
./bandwidth -read | grep \"Main memory sequential read\"
;;
\"TEST_WRITE\")
./bandwidth -write | grep \"Main memory sequential write\"
;;
esac
" > memory-bandwidth
chmod +x memory-bandwidth
cd bandwidth-0.13/
patch -p1 <<'EOT'
--- bandwidth-0.13/main.c 2007-08-13 02:36:55.000000000 +0200
+++ bandwidth-0.13-patched/main.c 2008-04-07 03:23:59.000000000 +0200
@@ -403,9 +403,52 @@
free(a2);
}
+void usage(char *argv0)
+{
+ printf ("usage: %s -l2read -l2write -read -write -fb -library\n"
+ "or: %s -all\n"
+ "will run the specified test(s), or all of them\n",
+ argv0, argv0);
+}
-main()
+int main(int argc, char **argv)
{
+ char *argv0 = argv[0] ? argv[0] : "bandwidth";
+ int do_l2_seq_read = 0,
+ do_l2_seq_write = 0,
+ do_main_seq_read = 0,
+ do_main_seq_write = 0,
+ do_fb_readwrite = 0,
+ do_library_test = 0,
+ do_all_tests = 0;
+
+ if (argc <= 1) {
+ usage(argv0);
+ exit(1);
+ }
+ while (argc > 1) {
+ if (!strcmp(argv[1], "-all"))
+ do_all_tests = 1;
+ else if (!strcmp(argv[1], "-l2read"))
+ do_l2_seq_read = 1;
+ else if (!strcmp(argv[1], "-l2write"))
+ do_l2_seq_write = 1;
+ else if (!strcmp(argv[1], "-read"))
+ do_main_seq_read = 1;
+ else if (!strcmp(argv[1], "-write"))
+ do_main_seq_write = 1;
+ else if (!strcmp(argv[1], "-fb"))
+ do_fb_readwrite = 1;
+ else if (!strcmp(argv[1], "-library"))
+ do_library_test = 1;
+ else {
+ usage(argv0);
+ exit(1);
+ }
+ --argc;
+ ++argv;
+ }
+
printf ("This is bandwidth version %s\n", VERSION);
printf ("Copyright (C) 2005,2007 by Zack T Smith\n\n");
@@ -414,15 +457,21 @@
system ("grep MHz /proc/cpuinfo | uniq | sed \"s/[\\t\\n: a-zA-Z]//g\"");
fflush (stdout);
- l2_seq_read ();
- l2_seq_write ();
-
- main_seq_read ();
- main_seq_write ();
+ if(do_l2_seq_read || do_all_tests)
+ l2_seq_read ();
+ if(do_l2_seq_write || do_all_tests)
+ l2_seq_write ();
+
+ if(do_main_seq_read || do_all_tests)
+ main_seq_read ();
+ if(do_main_seq_write || do_all_tests)
+ main_seq_write ();
- fb_readwrite();
+ if(do_fb_readwrite || do_all_tests)
+ fb_readwrite();
- library_test();
+ if(do_library_test || do_all_tests)
+ library_test();
return 0;
}
EOT
make
ln bandwidth ../
|