       pixel->blue = rgb_value(200 - iter, 1000);
     }
   }
+
+  if (!quiet)
+    printf("Thread-%d:%d on block %d:%d finished.\n", threadIdx.x, threadIdx.y, blockIdx.x, blockIdx.y);
 }
 
-void threadConfigCalc(int maxThreads, int &threadsPerBlock1dim, int &numBlocksX, int &numBlocksY) {
+void threadConfigCalc(int maxThreads, int &threadsPerBlock1dim, int &numBlocksX, int &numBlocksY, bool quiet = false) {
   double sqroot = sqrt(maxThreads);
   threadsPerBlock1dim = exp2(fmin(floor(log2(sqroot)), 4));
   numBlocksY = floor(sqroot / threadsPerBlock1dim);
   numBlocksX = floor((double)maxThreads / (threadsPerBlock1dim * threadsPerBlock1dim * numBlocksY));
-  printf("%d <= %d, threadsPerBlock: %dx%d, numBlocksXxnumBlocksY: %dx%d\n",
-    threadsPerBlock1dim * threadsPerBlock1dim * numBlocksX * numBlocksY, maxThreads, threadsPerBlock1dim, threadsPerBlock1dim, numBlocksX, numBlocksY);
+
+  if (!quiet)
+    printf("%d <= %d, threadsPerBlock: %dx%d, numBlocksXxnumBlocksY: %dx%d\n",
+      threadsPerBlock1dim * threadsPerBlock1dim * numBlocksX * numBlocksY, maxThreads, threadsPerBlock1dim, threadsPerBlock1dim, numBlocksX, numBlocksY);
 }
 
 void generateImage(int width, int height, Offset offset, int maxThreads, const char* filename, bool quiet) {

#include <stdio.h>
#include <cuComplex.h>
#include <iostream>
#include <getopt.h>
#include <cmath>
#include "offset.h"

}

__global__
void calc(Offset offset, Bitmap bitmap, bool quiet) {
  if (!quiet)
    printf("Thread-%d:%d on block %d:%d started.\n", threadIdx.x, threadIdx.y, blockIdx.x, blockIdx.y);

  // „Thread-<num> execution time was (millis): <num>“,
  // „Threads used in current run: <num>“,
  // „Total execution time for current run (millis): <num>

  double lowerX = offset.lowerX, upperX = offset.upperX;
  double lowerY = offset.lowerY, upperY = offset.upperY;

