 #include <cuda_runtime.h>
 #include <thrust/count.h>
 #include <thrust/device_vector.h>
+#include <thrust/system/cuda/execution_policy.h>
 
 #include "plugin_factory.h"
 

		                                              d_Tparcel, d_prevTparcel, d_PLCL, d_PLFC, d_Psource, d_cinh,
		                                              d_found);

		CUDA_CHECK(cudaMemcpyAsync(&found[0], d_found, sizeof(unsigned char) * N, cudaMemcpyDeviceToHost, stream));
		CUDA_CHECK(cudaMemcpyAsync(d_prevTparcel, d_Tparcel, sizeof(double) * N, cudaMemcpyDeviceToDevice, stream));

		CUDA_CHECK(cudaFree(h_prevPenv->values));


	auto hPa100 = h->LevelForHeight(myTargetInfo->Producer(), 100.);

	thrust::device_ptr<unsigned char> dt_found = thrust::device_pointer_cast(d_found);

	while (curLevel.Value() > hPa100.first.Value())
	{
		auto PenvInfo = Fetch(conf, myTargetInfo->Time(), curLevel, param("P-HPA"), myTargetInfo->ForecastType());
