diff --git a/lib/libstereo/middlebury/main.cpp b/lib/libstereo/middlebury/main.cpp
index 9bbf0edd1b05cb2c9c25439a737f5ec2c6a8fb74..75e68a99c0e5c851d5ce1f816c71f7b8994edaaa 100644
--- a/lib/libstereo/middlebury/main.cpp
+++ b/lib/libstereo/middlebury/main.cpp
@@ -9,6 +9,8 @@
 #include "middlebury.hpp"
 #include "algorithms.hpp"
 
+#include <cuda_runtime.h>
+
 #include "../../components/common/cpp/include/ftl/config.h"
 
 struct Result {
@@ -141,6 +143,10 @@ void main_default(const std::vector<std::string> &paths,
 
 	std::vector<std::pair<MiddleburyData, std::map<std::string, Result>>> results;
 
+	int devices=0;
+	cudaGetDeviceCount(&devices);
+	cudaSetDevice(devices-1);
+
 	for (const auto &dir : paths) {
 		auto input = load_input(dir);
 		std::map<std::string, Result> result;
diff --git a/lib/libstereo/src/algorithms/brefcensussgm.cu b/lib/libstereo/src/algorithms/brefcensussgm.cu
index 141388f3d570785bdff2e508fe5c044fbd03878c..eea64c294e16957ccfa4b5e25c4256d89812fbf8 100644
--- a/lib/libstereo/src/algorithms/brefcensussgm.cu
+++ b/lib/libstereo/src/algorithms/brefcensussgm.cu
@@ -21,7 +21,7 @@ StereoBRefCensusSgm::StereoBRefCensusSgm() : impl_(nullptr) {
 
 void StereoBRefCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::OutputArray disparity) {
 
-	cudaSetDevice(0);
+	//cudaSetDevice(0);
 
 	if (l.rows() != impl_->cost.height() || r.cols() != impl_->cost.width()) {
 		delete impl_; impl_ = nullptr;
diff --git a/lib/libstereo/src/algorithms/censussgm.cu b/lib/libstereo/src/algorithms/censussgm.cu
index fb229bf668d0b60f40dcad82d9f616a720cf451e..3c15e5275f2eae48a07f2f7758c77a7fdb333c97 100644
--- a/lib/libstereo/src/algorithms/censussgm.cu
+++ b/lib/libstereo/src/algorithms/censussgm.cu
@@ -16,7 +16,7 @@ StereoCensusSgm::StereoCensusSgm() : impl_(nullptr) {
 
 void StereoCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::OutputArray disparity) {
 
-	cudaSetDevice(0);
+	//cudaSetDevice(0);
 
 	if (l.rows() != impl_->cost.height() || r.cols() != impl_->cost.width()) {
 		delete impl_; impl_ = nullptr;
diff --git a/lib/libstereo/src/algorithms/hcensussgm.cu b/lib/libstereo/src/algorithms/hcensussgm.cu
index 420f22f534a1c856864efd273d399f136411ea17..2a7c7586c215624b4a09bf0230d95a1d04534995 100644
--- a/lib/libstereo/src/algorithms/hcensussgm.cu
+++ b/lib/libstereo/src/algorithms/hcensussgm.cu
@@ -70,7 +70,7 @@ StereoHierCensusSgm::StereoHierCensusSgm() : impl_(nullptr) {
 
 void StereoHierCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::OutputArray disparity) {
 
-	cudaSetDevice(0);
+	//cudaSetDevice(0);
 
 	if (l.rows() != impl_->cost.height() || r.cols() != impl_->cost.width()) {
 		delete impl_; impl_ = nullptr;
diff --git a/lib/libstereo/src/algorithms/meancensussgm.cu b/lib/libstereo/src/algorithms/meancensussgm.cu
index e0c1d49d7bb4569faa9086d39a5e16deaa9cd5a5..7058ba79f8f9432a61e8ac1e009cedd8d36ab52c 100644
--- a/lib/libstereo/src/algorithms/meancensussgm.cu
+++ b/lib/libstereo/src/algorithms/meancensussgm.cu
@@ -20,7 +20,7 @@ StereoMeanCensusSgm::StereoMeanCensusSgm() : impl_(nullptr) {
 
 void StereoMeanCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::OutputArray disparity) {
 
-	cudaSetDevice(0);
+	//cudaSetDevice(0);
 
 	if (l.rows() != impl_->cost.height() || r.cols() != impl_->cost.width()) {
 		delete impl_; impl_ = nullptr;
diff --git a/lib/libstereo/src/algorithms/stablesgm.cu b/lib/libstereo/src/algorithms/stablesgm.cu
index 3aeb33a528e483d4bc5885f863bcb78549faa9d9..efaf20a289005f51c80711af4f6735efb2e8196c 100644
--- a/lib/libstereo/src/algorithms/stablesgm.cu
+++ b/lib/libstereo/src/algorithms/stablesgm.cu
@@ -16,7 +16,7 @@ StereoStableSgm::StereoStableSgm() : impl_(nullptr) {
 
 void StereoStableSgm::compute(cv::InputArray l, cv::InputArray r, cv::OutputArray disparity) {
 
-	cudaSetDevice(0);
+	//cudaSetDevice(0);
 
 	if (l.rows() != impl_->cost.height() || r.cols() != impl_->cost.width()) {
 		delete impl_; impl_ = nullptr;
diff --git a/lib/libstereo/src/algorithms/tcensussgm.cu b/lib/libstereo/src/algorithms/tcensussgm.cu
index 131405107a6fe2a92b69cb1c57dc99ff329ae101..6a449937a13936b0a3d7f141cf36ac5ef44e4ad1 100644
--- a/lib/libstereo/src/algorithms/tcensussgm.cu
+++ b/lib/libstereo/src/algorithms/tcensussgm.cu
@@ -16,7 +16,7 @@ StereoTCensusSgm::StereoTCensusSgm() : impl_(nullptr) {
 
 void StereoTCensusSgm::compute(cv::InputArray l, cv::InputArray r, cv::OutputArray disparity) {
 
-	cudaSetDevice(0);
+	//cudaSetDevice(0);
 
 	if (l.rows() != impl_->cost.height() || r.cols() != impl_->cost.width()) {
 		delete impl_; impl_ = nullptr;