From c72bc7cd47ecb5665a287fb88e101f88118f5232 Mon Sep 17 00:00:00 2001 From: Willem Jan Palenstijn Date: Wed, 16 Apr 2014 11:13:40 +0000 Subject: Split up processVol in Vol/Sino cases --- src/CudaDataOperationAlgorithm.cpp | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'src/CudaDataOperationAlgorithm.cpp') diff --git a/src/CudaDataOperationAlgorithm.cpp b/src/CudaDataOperationAlgorithm.cpp index 50b2faa..dcb6c3c 100644 --- a/src/CudaDataOperationAlgorithm.cpp +++ b/src/CudaDataOperationAlgorithm.cpp @@ -130,47 +130,40 @@ void CCudaDataOperationAlgorithm::run(int _iNrIterations) astraCUDA::setGPUIndex(m_iGPUIndex); + astraCUDA::SDimensions dims; + // We slightly abuse dims here: width/height is not necessarily a volume + dims.iVolWidth = m_pData[0]->getWidth(); + dims.iVolHeight = m_pData[0]->getHeight(); + if (m_sOperation == "$1*s1" || m_sOperation == "$1.*s1") // data * scalar { - unsigned int width = m_pData[0]->getWidth(); - unsigned int height = m_pData[0]->getHeight(); if (m_pMask == NULL) - astraCUDA::processVolCopy(m_pData[0]->getData(), m_fScalar[0], width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), m_fScalar[0], dims); else - astraCUDA::processVolCopy(m_pData[0]->getData(), m_pMask->getDataConst(), m_fScalar[0], width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), m_pMask->getDataConst(), m_fScalar[0], dims); } else if (m_sOperation == "$1/s1" || m_sOperation == "$1./s1") // data / scalar { - unsigned int width = m_pData[0]->getWidth(); - unsigned int height = m_pData[0]->getHeight(); if (m_pMask == NULL) - astraCUDA::processVolCopy(m_pData[0]->getData(), 1.0f/m_fScalar[0], width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), 1.0f/m_fScalar[0], dims); else - astraCUDA::processVolCopy(m_pData[0]->getData(), m_pMask->getDataConst(), 1.0f/m_fScalar[0], width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), m_pMask->getDataConst(), 1.0f/m_fScalar[0], dims); } else if (m_sOperation == "$1+s1") // data + scalar { - unsigned int width = m_pData[0]->getWidth(); - unsigned int height = m_pData[0]->getHeight(); - astraCUDA::processVolCopy(m_pData[0]->getData(), m_fScalar[0], width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), m_fScalar[0], dims); } else if (m_sOperation == "$1-s1") // data - scalar { - unsigned int width = m_pData[0]->getWidth(); - unsigned int height = m_pData[0]->getHeight(); - astraCUDA::processVolCopy(m_pData[0]->getData(), -m_fScalar[0], width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), -m_fScalar[0], dims); } else if (m_sOperation == "$1.*$2") // data .* data { - unsigned int width = m_pData[0]->getWidth(); - unsigned int height = m_pData[0]->getHeight(); - astraCUDA::processVolCopy(m_pData[0]->getData(), m_pData[1]->getDataConst(), width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), m_pData[1]->getDataConst(), dims); } else if (m_sOperation == "$1+$2") // data + data { - unsigned int width = m_pData[0]->getWidth(); - unsigned int height = m_pData[0]->getHeight(); - astraCUDA::processVolCopy(m_pData[0]->getData(), m_pData[1]->getDataConst(), width, height); + astraCUDA::processVolCopy(m_pData[0]->getData(), m_pData[1]->getDataConst(), dims); } } -- cgit v1.2.3