       nvtxRangePush(bc.name);
 #endif
       auto* ctx = createContext(tables, field_size, true, stream);
-      fprintf(stderr, "%10s: Created context.\n", bc.name);
+      LOG_INFO("%12s: Created context.", bc.name);
 
       // Run with no output buffers to get size of output.
       ComputeStuff::MC::buildPN(ctx,

      nvtxRangePop();
#endif
      CHECKED_CUDA(cudaMemGetInfo(&free, &total));
      fprintf(stderr, "%10s: %.2f FPS (%.0fMVPS) cuda: %.2fms (%.0f MVPS) %ux%ux%u Nv=%u Ni=%u memfree=%zumb/%zumb\n",
              bc.name,
              iterations / elapsed, (float(iterations) * field_size.x * field_size.y * field_size.z) / (1000000.f * elapsed),
              cuda_ms / cuda_ms_n, (float(cuda_ms_n) * field_size.x * field_size.y * field_size.z) / (1000.f * cuda_ms),

  {
    glfwSetErrorCallback(onGLFWError);
    if (!glfwInit()) {
      LOG_ERROR("GLFW failed to initialize.");
      exit(EXIT_FAILURE);
    }
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
