 		}
 	);
 
-	std::random_device random_device{};
-	std::mt19937 random_engine{random_device()};
-	std::uniform_real_distribution<float>distribution{0.0, 10.0};
-	auto data_generator = [&]() { return (element_t) distribution(random_engine); };
+	// TODO: Consider actually filling the buffers
 
-	for(auto& buffer_set : buffers) {
-		std::generate_n(buffer_set.host_lhs.get(), num_elements, data_generator);
-		std::generate_n(buffer_set.host_rhs.get(), num_elements, data_generator);
-	}
 	return buffers;
 }
 
 int main(int argc, char **argv)
 {
+	constexpr size_t num_kernels     = 5;
+	constexpr size_t num_elements    = 1e7;
+
 	auto device = cuda::device::current::get();
 	std::cout << "Using CUDA device " << device.name() << " (having ID " << device.id() << ")\n";
 
 	std::cout << "Generating host buffers... " << std::flush;
-	auto buffers = generate_buffers(device);
+	auto buffers = generate_buffers(device, num_kernels, num_elements);
 	std::cout << "done.\n" << std::flush;
 
 	std::vector<cuda::stream_t<> > streams;

	auto global_index = threadIdx.x + blockIdx.x * blockDim.x;
	if (global_index < length) {
		result[global_index] = lhs[global_index] + rhs[global_index];
		gpu_sleep(50000);
	}
}


#include <vector>
#include <algorithm>
#include <unistd.h>

using element_t = float;

using clock_value_t = long long;

