From 8b86011bb9817a492ae758256f921abe39c20cbc Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Mon, 15 Apr 2019 19:18:07 +0200 Subject: Allow disabling read or write portion through arguments. --- membw.c | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/membw.c b/membw.c index 0ae9d7b..6eb3b6c 100644 --- a/membw.c +++ b/membw.c @@ -36,7 +36,7 @@ static inline int64_t gettime(void) void print_usage(int argc, char **argv) { fprintf(stderr, - "Usage: %s [repeats]\n" + "Usage: %s [repeats] [rw]\n" "\tN: array size in kB\n", argv[0]); } @@ -52,6 +52,8 @@ int main(int argc, char **argv) int64_t start; int64_t duration = 0; + int do_read = 1, do_write = 1; + if (argc < 2) { print_usage(argc, argv); return 1; @@ -73,33 +75,48 @@ int main(int argc, char **argv) } } + if (argc >= 4) { + do_read = 0; + do_write = 0; + for (int i = 0; argv[3][i]; i++) { + if (argv[3][i] == 'r') + do_read = 1; + if (argv[3][i] == 'w') + do_write = 1; + } + } + ret = posix_memalign((void**)&mem, 64, N); if (ret != 0) { fprintf(stderr, "Error allocating memory\n"); return 2; } - start = gettime(); + if (do_write) { + start = gettime(); - for (unsigned int i = 0; i < repeats; i++) - membw_mem_write_avx(mem, N); + for (unsigned int i = 0; i < repeats; i++) + membw_mem_write_avx(mem, N); - duration = gettime() - start; + duration = gettime() - start; - fprintf(stdout, "Written %u x %g MB in %g ms: write bandwidth: %g MB/s\n", - repeats, (double)N / (1024 * 1024), duration / 1e3, - (double)N * repeats / duration * 1e6 / (1024 * 1024)); + fprintf(stdout, "Written %u x %g MB in %g ms: write bandwidth: %g MB/s\n", + repeats, (double)N / (1024 * 1024), duration / 1e3, + (double)N * repeats / duration * 1e6 / (1024 * 1024)); + } - start = gettime(); + if (do_read) { + start = gettime(); - for (unsigned int i = 0; i < repeats; i++) - membw_mem_read_avx(mem, N); + for (unsigned int i = 0; i < repeats; i++) + membw_mem_read_avx(mem, N); - duration = gettime() - start; + duration = gettime() - start; - fprintf(stdout, "Read %u x %g MB in %g ms: read bandwidth: %g MB/s\n", - repeats, (double)N / (1024 * 1024), duration / 1e3, - (double)N * repeats / duration * 1e6 / (1024 * 1024)); + fprintf(stdout, "Read %u x %g MB in %g ms: read bandwidth: %g MB/s\n", + repeats, (double)N / (1024 * 1024), duration / 1e3, + (double)N * repeats / duration * 1e6 / (1024 * 1024)); + } free(mem); -- cgit v1.2.3