summaryrefslogtreecommitdiffstats
path: root/cuda/2d
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <WillemJan.Palenstijn@uantwerpen.be>2014-04-02 14:21:59 +0000
committerwpalenst <WillemJan.Palenstijn@uantwerpen.be>2014-04-02 14:21:59 +0000
commit2895e27613dab0815e9f0f2f0ed7853d31f856b4 (patch)
tree851d7171e07aa6db322cbf9286107b3db20f6a4e /cuda/2d
parent1d1e084d501883784eab283c622cb28510f36d27 (diff)
downloadastra-2895e27613dab0815e9f0f2f0ed7853d31f856b4.tar.gz
astra-2895e27613dab0815e9f0f2f0ed7853d31f856b4.tar.bz2
astra-2895e27613dab0815e9f0f2f0ed7853d31f856b4.tar.xz
astra-2895e27613dab0815e9f0f2f0ed7853d31f856b4.zip
Add global astra_set_gpu_index function
Diffstat (limited to 'cuda/2d')
-rw-r--r--cuda/2d/algo.cu12
-rw-r--r--cuda/2d/astra.cu53
-rw-r--r--cuda/2d/darthelper.cu12
-rw-r--r--cuda/2d/darthelper.h2
4 files changed, 43 insertions, 36 deletions
diff --git a/cuda/2d/algo.cu b/cuda/2d/algo.cu
index 5ae5d08..f04607f 100644
--- a/cuda/2d/algo.cu
+++ b/cuda/2d/algo.cu
@@ -99,12 +99,14 @@ void ReconAlgo::reset()
bool ReconAlgo::setGPUIndex(int iGPUIndex)
{
- cudaSetDevice(iGPUIndex);
- cudaError_t err = cudaGetLastError();
+ if (iGPUIndex != -1) {
+ cudaSetDevice(iGPUIndex);
+ cudaError_t err = cudaGetLastError();
- // Ignore errors caused by calling cudaSetDevice multiple times
- if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
- return false;
+ // Ignore errors caused by calling cudaSetDevice multiple times
+ if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
+ return false;
+ }
return true;
}
diff --git a/cuda/2d/astra.cu b/cuda/2d/astra.cu
index 5d53da0..2240629 100644
--- a/cuda/2d/astra.cu
+++ b/cuda/2d/astra.cu
@@ -195,13 +195,15 @@ bool AstraFBP::init(int iGPUIndex)
return false;
}
- cudaSetDevice(iGPUIndex);
- cudaError_t err = cudaGetLastError();
+ if (iGPUIndex != -1) {
+ cudaSetDevice(iGPUIndex);
+ cudaError_t err = cudaGetLastError();
- // Ignore errors caused by calling cudaSetDevice multiple times
- if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
- {
- return false;
+ // Ignore errors caused by calling cudaSetDevice multiple times
+ if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
+ {
+ return false;
+ }
}
bool ok = allocateVolume(pData->D_volumeData, pData->dims.iVolWidth+2, pData->dims.iVolHeight+2, pData->volumePitch);
@@ -563,13 +565,14 @@ bool astraCudaFP(const float* pfVolume, float* pfSinogram,
dims.iVolWidth = iVolWidth;
dims.iVolHeight = iVolHeight;
- cudaSetDevice(iGPUIndex);
- cudaError_t err = cudaGetLastError();
-
- // Ignore errors caused by calling cudaSetDevice multiple times
- if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
- return false;
+ if (iGPUIndex != -1) {
+ cudaSetDevice(iGPUIndex);
+ cudaError_t err = cudaGetLastError();
+ // Ignore errors caused by calling cudaSetDevice multiple times
+ if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
+ return false;
+ }
bool ok;
@@ -649,13 +652,14 @@ bool astraCudaFanFP(const float* pfVolume, float* pfSinogram,
dims.iVolWidth = iVolWidth;
dims.iVolHeight = iVolHeight;
- cudaSetDevice(iGPUIndex);
- cudaError_t err = cudaGetLastError();
-
- // Ignore errors caused by calling cudaSetDevice multiple times
- if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
- return false;
+ if (iGPUIndex != -1) {
+ cudaSetDevice(iGPUIndex);
+ cudaError_t err = cudaGetLastError();
+ // Ignore errors caused by calling cudaSetDevice multiple times
+ if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
+ return false;
+ }
bool ok;
@@ -759,13 +763,14 @@ bool astraCudaFanFP(const float* pfVolume, float* pfSinogram,
dims.iVolWidth = iVolWidth;
dims.iVolHeight = iVolHeight;
- cudaSetDevice(iGPUIndex);
- cudaError_t err = cudaGetLastError();
-
- // Ignore errors caused by calling cudaSetDevice multiple times
- if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
- return false;
+ if (iGPUIndex != -1) {
+ cudaSetDevice(iGPUIndex);
+ cudaError_t err = cudaGetLastError();
+ // Ignore errors caused by calling cudaSetDevice multiple times
+ if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
+ return false;
+ }
bool ok;
diff --git a/cuda/2d/darthelper.cu b/cuda/2d/darthelper.cu
index db0036e..28b77cc 100644
--- a/cuda/2d/darthelper.cu
+++ b/cuda/2d/darthelper.cu
@@ -344,12 +344,14 @@ void dartSmoothing(float* out, const float* in, float b, unsigned int radius, un
bool setGPUIndex(int iGPUIndex)
{
- cudaSetDevice(iGPUIndex);
- cudaError_t err = cudaGetLastError();
+ if (iGPUIndex != -1) {
+ cudaSetDevice(iGPUIndex);
+ cudaError_t err = cudaGetLastError();
- // Ignore errors caused by calling cudaSetDevice multiple times
- if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
- return false;
+ // Ignore errors caused by calling cudaSetDevice multiple times
+ if (err != cudaSuccess && err != cudaErrorSetOnActiveProcess)
+ return false;
+ }
return true;
}
diff --git a/cuda/2d/darthelper.h b/cuda/2d/darthelper.h
index e05f01e..3694b96 100644
--- a/cuda/2d/darthelper.h
+++ b/cuda/2d/darthelper.h
@@ -29,8 +29,6 @@ $Id$
#ifndef _CUDA_ARITH2_H
#define _CUDA_ARITH2_H
-#include <cuda.h>
-
namespace astraCUDA {
void roiSelect(float* out, float radius, unsigned int width, unsigned int height);