@@ -326,14 +326,14 @@ std::vector<float> GPUbenchmark<chunk_type>::benchmarkAsync(void (*kernel)(int,
326326 // Warm up on every stream
327327 for (auto iStream{0 }; iStream < nStreams; ++iStream) {
328328 chunk_type* chunkPtr = getPartPtr<chunk_type>(mState .scratchPtr , mState .chunkReservedGB , iStream);
329- (*kernel)<<<blocks, threads, 0 , streams[iStream]>>> (iStream, chunkPtr, args...);
329+ (*kernel)<<<blocks / mState .getMaxChunks() , threads, 0 , streams[iStream]>>> (iStream, chunkPtr, args...);
330330 }
331331
332332 for (auto iStream{0 }; iStream < nStreams; ++iStream) {
333333 chunk_type* chunkPtr = getPartPtr<chunk_type>(mState .scratchPtr , mState .chunkReservedGB , iStream);
334334 GPUCHECK (cudaEventRecord (starts[iStream], streams[iStream]));
335335 for (auto iLaunch{0 }; iLaunch < nLaunches; ++iLaunch) {
336- (*kernel)<<<blocks, threads, 0 , streams[iStream]>>> (iStream, chunkPtr, args...);
336+ (*kernel)<<<blocks / mState .getMaxChunks() , threads, 0 , streams[iStream]>>> (iStream, chunkPtr, args...);
337337 }
338338 GPUCHECK (cudaEventRecord (stops[iStream], streams[iStream]));
339339 }
@@ -424,7 +424,7 @@ void GPUbenchmark<chunk_type>::readSequential(SplitLevel sl)
424424 nThreads, // args...
425425 mState .deviceReadResultsPtr ,
426426 capacity);
427- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB );
427+ mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState . getNKernelLaunches () );
428428 }
429429 mResultWriter .get ()->snapshotBenchmark ();
430430 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -448,7 +448,7 @@ void GPUbenchmark<chunk_type>::readSequential(SplitLevel sl)
448448 nThreads, // args...
449449 mState .deviceReadResultsPtr ,
450450 capacity);
451- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB );
451+ mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState . getNKernelLaunches () );
452452 }
453453 mResultWriter .get ()->snapshotBenchmark ();
454454 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -479,7 +479,7 @@ void GPUbenchmark<chunk_type>::readConcurrent(SplitLevel sl, int nRegions)
479479 mState .deviceReadResultsPtr , // kernel arguments (chunkId is passed by wrapper)
480480 capacity);
481481 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
482- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB );
482+ mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState . getNKernelLaunches () );
483483 }
484484 mResultWriter .get ()->snapshotBenchmark ();
485485 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -503,7 +503,7 @@ void GPUbenchmark<chunk_type>::readConcurrent(SplitLevel sl, int nRegions)
503503 mState .deviceReadResultsPtr , // kernel arguments (chunkId is passed by wrapper)
504504 capacity);
505505 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
506- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB );
506+ mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState . getNKernelLaunches () );
507507 }
508508 mResultWriter .get ()->snapshotBenchmark ();
509509 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -551,7 +551,7 @@ void GPUbenchmark<chunk_type>::writeSequential(SplitLevel sl)
551551 nThreads,
552552 mState .deviceWriteResultsPtr ,
553553 capacity);
554- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB );
554+ mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState . getNKernelLaunches () );
555555 }
556556 mResultWriter .get ()->snapshotBenchmark ();
557557 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -575,7 +575,7 @@ void GPUbenchmark<chunk_type>::writeSequential(SplitLevel sl)
575575 nThreads,
576576 mState .deviceWriteResultsPtr ,
577577 capacity);
578- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB );
578+ mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState . getNKernelLaunches () );
579579 }
580580 mResultWriter .get ()->snapshotBenchmark ();
581581 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -606,7 +606,7 @@ void GPUbenchmark<chunk_type>::writeConcurrent(SplitLevel sl, int nRegions)
606606 mState .deviceWriteResultsPtr , // kernel arguments (chunkId is passed by wrapper)
607607 capacity);
608608 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
609- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB );
609+ mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState . getNKernelLaunches () );
610610 }
611611 mResultWriter .get ()->snapshotBenchmark ();
612612 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -630,7 +630,7 @@ void GPUbenchmark<chunk_type>::writeConcurrent(SplitLevel sl, int nRegions)
630630 mState .deviceWriteResultsPtr , // kernel arguments (chunkId is passed by wrapper)
631631 capacity);
632632 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
633- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB );
633+ mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState . getNKernelLaunches () );
634634 }
635635 mResultWriter .get ()->snapshotBenchmark ();
636636 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -680,7 +680,7 @@ void GPUbenchmark<chunk_type>::copySequential(SplitLevel sl)
680680 nThreads,
681681 mState .deviceCopyInputsPtr ,
682682 capacity);
683- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB );
683+ mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState . getNKernelLaunches () );
684684 }
685685 mResultWriter .get ()->snapshotBenchmark ();
686686 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -704,7 +704,7 @@ void GPUbenchmark<chunk_type>::copySequential(SplitLevel sl)
704704 nThreads,
705705 mState .deviceCopyInputsPtr ,
706706 capacity);
707- mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB );
707+ mResultWriter .get ()->storeBenchmarkEntry (iChunk, result, mState .chunkReservedGB , mState . getNKernelLaunches () );
708708 }
709709 mResultWriter .get ()->snapshotBenchmark ();
710710 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -735,7 +735,7 @@ void GPUbenchmark<chunk_type>::copyConcurrent(SplitLevel sl, int nRegions)
735735 mState .deviceCopyInputsPtr , // kernel arguments (chunkId is passed by wrapper)
736736 capacity);
737737 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
738- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB );
738+ mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState . getNKernelLaunches () );
739739 }
740740 mResultWriter .get ()->snapshotBenchmark ();
741741 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
@@ -759,7 +759,7 @@ void GPUbenchmark<chunk_type>::copyConcurrent(SplitLevel sl, int nRegions)
759759 mState .deviceCopyInputsPtr , // kernel arguments (chunkId is passed by wrapper)
760760 capacity);
761761 for (auto iResult{0 }; iResult < results.size (); ++iResult) {
762- mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB );
762+ mResultWriter .get ()->storeBenchmarkEntry (iResult, results[iResult], mState .chunkReservedGB , mState . getNKernelLaunches () );
763763 }
764764 mResultWriter .get ()->snapshotBenchmark ();
765765 std::cout << " \033 [1;32m complete\033 [0m" << std::endl;
0 commit comments