diff options
Diffstat (limited to 'fastos/src/tests/prefetchtest.cpp')
-rw-r--r-- | fastos/src/tests/prefetchtest.cpp | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/fastos/src/tests/prefetchtest.cpp b/fastos/src/tests/prefetchtest.cpp deleted file mode 100644 index fba57e4048f..00000000000 --- a/fastos/src/tests/prefetchtest.cpp +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -/* - * FastOS_Prefetch test program. - * - * Author: Olaf Birkeland - */ - -#include "tests.h" -#include <vespa/fastos/time.h> -#include <vespa/fastos/prefetch.h> - -class PrefetchTestApp : public BaseTest -{ -public: - virtual ~PrefetchTestApp() {} - - bool PrefetchTest () - { - bool rc = false; - int j, size, *a; - int or1, or2; - FastOS_Time start, stop; - double timeVal; - - TestHeader("Prefetch Test"); - - // 32MB - size = 32; - size *= 1024*1024/sizeof(*a); - - if ((a = static_cast<int *>(calloc(size, sizeof(*a)))) != nullptr) - { - // Standard loop - start.SetNow(); - or1 = 1; - for(j=0; j<size; j++) - or1 |= a[j]; - stop.SetNow(); - timeVal = stop.MilliSecs() - start.MilliSecs(); - Progress(or1==1, "Result = %d", or1); - ProgressFloat(true, "%4.3f MB/s (standard loop)", - float(size*sizeof(*a)/(1E3*timeVal))); - - - // Unrolled loop - start.SetNow(); - or1 = or2 = 2; - for(j=0; j<size; j+=8) - { - or1 |= a[j+0]|a[j+1]|a[j+2]|a[j+3]; - or2 |= a[j+4]|a[j+5]|a[j+6]|a[j+7]; - } - or1 |= or2; - stop.SetNow(); - timeVal = stop.MilliSecs() - start.MilliSecs(); - Progress(or1 == 2, "Result = %d", or1); - ProgressFloat(true, "%4.3f MB/s (unrolled loop)", - float(size*sizeof(*a)/(1E3*timeVal))); - - - // Unrolled loop with prefetch - start.SetNow(); - or1 = or2 = 3; - for(j=0; j<size; j+=8) - { - FastOS_Prefetch::NT(&a[j+32]); - or1 |= a[j+0]|a[j+1]|a[j+2]|a[j+3]; - or2 |= a[j+4]|a[j+5]|a[j+6]|a[j+7]; - } - or1 |= or2; - stop.SetNow(); - timeVal = stop.MilliSecs() - start.MilliSecs(); - Progress(or1 == 3, "Result = %d", or1); - ProgressFloat(true, "%4.3f MB/s (unrolled loop with prefetch)", - float(size*sizeof(*a)/(1E3*timeVal))); - - // Unrolled loop - start.SetNow(); - or1 = or2 = 4; - for(j=0; j<size; j+=8) - { - or1 |= a[j+0]|a[j+1]|a[j+2]|a[j+3]; - or2 |= a[j+4]|a[j+5]|a[j+6]|a[j+7]; - } - or1 |= or2; - stop.SetNow(); - timeVal = stop.MilliSecs() - start.MilliSecs(); - Progress(or1 == 4, "Result = %d", or1); - ProgressFloat(true, "%4.3f MB/s (unrolled loop)", - float(size*sizeof(*a)/(1E3*timeVal))); - - - // Standard loop - start.SetNow(); - or1 = 5; - for(j=0; j<size; j++) - or1 |= a[j]; - stop.SetNow(); - timeVal = stop.MilliSecs() - start.MilliSecs(); - Progress(or1 == 5, "Result = %d", or1); - ProgressFloat(true, "%4.3f MB/s (standard loop)", - float(size*sizeof(*a)/(1E3*timeVal))); - - - // Unrolled loop with prefetch - start.SetNow(); - or1 = or2 = 6; - for(j=0; j<size; j+=8) - { - FastOS_Prefetch::NT(&a[j+32]); - or1 |= a[j+0]|a[j+1]|a[j+2]|a[j+3]; - or2 |= a[j+4]|a[j+5]|a[j+6]|a[j+7]; - } - or1 |= or2; - stop.SetNow(); - timeVal = stop.MilliSecs() - start.MilliSecs(); - Progress(or1 == 6, "Result = %d", or1); - ProgressFloat(true, "%4.3f MB/s (unrolled loop with prefetch)", - float(size*sizeof(*a)/(1E3*timeVal))); - - - free(a); - rc = true; - } - else - Progress(false, "Out of memory!!"); - - PrintSeparator(); - - return rc; - } - - int Main () override - { - int rc = 1; - printf("grep for the string '%s' to detect failures.\n\n", failString); - - if(PrefetchTest()) - rc = 0; - - printf("END OF TEST (%s)\n", _argv[0]); - - return rc; - } -}; - - -int main (int argc, char **argv) -{ - PrefetchTestApp app; - setvbuf(stdout, nullptr, _IOLBF, 8192); - return app.Entry(argc, argv); -} |