@@ -75,11 +75,11 @@ __global__ void readChunkSBKernel(
7575 chunk_t * results,
7676 size_t chunkSize)
7777{
78- chunk_t sink{0 };
78+ chunk_t sink{0 }; // local memory -> excluded from bandwidth accounting
7979 for (size_t i = threadIdx .x ; i < chunkSize; i += blockDim .x ) {
80- sink += chunkPtr[i];
80+ sink += chunkPtr[i]; // 1 read operation, performed "chunkSize" times
8181 }
82- results[chunkId] = sink;
82+ results[chunkId] = sink; // writing done once
8383}
8484
8585template <class chunk_t >
@@ -89,7 +89,7 @@ __global__ void readChunkMBKernel(
8989 chunk_t * results,
9090 size_t chunkSize)
9191{
92- chunk_t sink{0 };
92+ chunk_t sink{0 }; // local memory -> excluded from bandwidth accounting
9393 for (int i = blockIdx .x * blockDim .x + threadIdx .x ; i < chunkSize; i += blockDim .x * gridDim .x ) {
9494 sink += chunkPtr[i];
9595 }
@@ -130,7 +130,7 @@ __global__ void copyChunkSBKernel(
130130 size_t chunkSize)
131131{
132132 for (size_t i = threadIdx .x ; i < chunkSize; i += blockDim .x ) {
133- chunkPtr[i ] = inputs[chunkId ];
133+ chunkPtr[chunkSize - i - 1 ] = chunkPtr[i ];
134134 }
135135}
136136
@@ -142,7 +142,7 @@ __global__ void copyChunkMBKernel(
142142 size_t chunkSize)
143143{
144144 for (int i = blockIdx .x * blockDim .x + threadIdx .x ; i < chunkSize; i += blockDim .x * gridDim .x ) {
145- chunkPtr[i ] = inputs[chunkId ];
145+ chunkPtr[chunkSize - i - 1 ] = chunkPtr[i ];
146146 }
147147}
148148
@@ -423,7 +423,7 @@ void GPUbenchmark<chunk_t>::readSequential(SplitLevel sl)
423423 nThreads, // args...
424424 mState .deviceReadResultsPtr ,
425425 capacity);
426- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
426+ mResultWriter .get ()->storeBenchmarkEntry (Test::Read, iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
427427 }
428428 mResultWriter .get ()->snapshotBenchmark ();
429429 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -447,7 +447,7 @@ void GPUbenchmark<chunk_t>::readSequential(SplitLevel sl)
447447 nThreads, // args...
448448 mState .deviceReadResultsPtr ,
449449 capacity);
450- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
450+ mResultWriter .get ()->storeBenchmarkEntry (Test::Read, iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
451451 }
452452 mResultWriter .get ()->snapshotBenchmark ();
453453 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -478,7 +478,7 @@ void GPUbenchmark<chunk_t>::readConcurrent(SplitLevel sl, int nRegions)
478478 mState .deviceReadResultsPtr , // kernel arguments (chunkId is passed by wrapper)
479479 capacity);
480480 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
481- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
481+ mResultWriter .get ()->storeBenchmarkEntry (Test::Read, iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
482482 }
483483 mResultWriter .get ()->snapshotBenchmark ();
484484 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -502,7 +502,7 @@ void GPUbenchmark<chunk_t>::readConcurrent(SplitLevel sl, int nRegions)
502502 mState .deviceReadResultsPtr , // kernel arguments (chunkId is passed by wrapper)
503503 capacity);
504504 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
505- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
505+ mResultWriter .get ()->storeBenchmarkEntry (Test::Read, iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
506506 }
507507 mResultWriter .get ()->snapshotBenchmark ();
508508 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -550,7 +550,7 @@ void GPUbenchmark<chunk_t>::writeSequential(SplitLevel sl)
550550 nThreads,
551551 mState .deviceWriteResultsPtr ,
552552 capacity);
553- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
553+ mResultWriter .get ()->storeBenchmarkEntry (Test::Write, iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
554554 }
555555 mResultWriter .get ()->snapshotBenchmark ();
556556 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -574,7 +574,7 @@ void GPUbenchmark<chunk_t>::writeSequential(SplitLevel sl)
574574 nThreads,
575575 mState .deviceWriteResultsPtr ,
576576 capacity);
577- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
577+ mResultWriter .get ()->storeBenchmarkEntry (Test::Write, iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
578578 }
579579 mResultWriter .get ()->snapshotBenchmark ();
580580 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -605,7 +605,7 @@ void GPUbenchmark<chunk_t>::writeConcurrent(SplitLevel sl, int nRegions)
605605 mState .deviceWriteResultsPtr , // kernel arguments (chunkId is passed by wrapper)
606606 capacity);
607607 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
608- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
608+ mResultWriter .get ()->storeBenchmarkEntry (Test::Write, iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
609609 }
610610 mResultWriter .get ()->snapshotBenchmark ();
611611 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -629,7 +629,7 @@ void GPUbenchmark<chunk_t>::writeConcurrent(SplitLevel sl, int nRegions)
629629 mState .deviceWriteResultsPtr , // kernel arguments (chunkId is passed by wrapper)
630630 capacity);
631631 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
632- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
632+ mResultWriter .get ()->storeBenchmarkEntry (Test::Write, iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
633633 }
634634 mResultWriter .get ()->snapshotBenchmark ();
635635 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -679,7 +679,7 @@ void GPUbenchmark<chunk_t>::copySequential(SplitLevel sl)
679679 nThreads,
680680 mState .deviceCopyInputsPtr ,
681681 capacity);
682- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
682+ mResultWriter .get ()->storeBenchmarkEntry (Test::Copy, iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
683683 }
684684 mResultWriter .get ()->snapshotBenchmark ();
685685 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -703,7 +703,7 @@ void GPUbenchmark<chunk_t>::copySequential(SplitLevel sl)
703703 nThreads,
704704 mState .deviceCopyInputsPtr ,
705705 capacity);
706- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
706+ mResultWriter .get ()->storeBenchmarkEntry (Test::Copy, iChunk, result, mState .chunkReservedGB , mState .getNKernelLaunches ());
707707 }
708708 mResultWriter .get ()->snapshotBenchmark ();
709709 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -734,7 +734,7 @@ void GPUbenchmark<chunk_t>::copyConcurrent(SplitLevel sl, int nRegions)
734734 mState .deviceCopyInputsPtr , // kernel arguments (chunkId is passed by wrapper)
735735 capacity);
736736 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
737- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
737+ mResultWriter .get ()->storeBenchmarkEntry (Test::Copy, iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
738738 }
739739 mResultWriter .get ()->snapshotBenchmark ();
740740 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -758,7 +758,7 @@ void GPUbenchmark<chunk_t>::copyConcurrent(SplitLevel sl, int nRegions)
758758 mState .deviceCopyInputsPtr , // kernel arguments (chunkId is passed by wrapper)
759759 capacity);
760760 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
761- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
761+ mResultWriter .get ()->storeBenchmarkEntry (Test::Copy, iResult, results[iResult], mState .chunkReservedGB , mState .getNKernelLaunches ());
762762 }
763763 mResultWriter .get ()->snapshotBenchmark ();
764764 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
0 commit comments