LSSTApplications
10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
home
lsstsw
stack
Linux64
afw
11.0-2-g04d2804
src
gpu
detail
CudaMemory.cc
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2008 - 2012 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
38
#ifdef GPU_BUILD
39
40
#include <cuda.h>
41
#include <cuda_runtime.h>
42
43
#include "
lsst/afw/image/Image.h
"
44
#include "
lsst/afw/gpu/GpuExceptions.h
"
45
#include "
lsst/afw/gpu/detail/GpuBuffer2D.h
"
46
#include "
lsst/afw/gpu/detail/CudaMemory.h
"
47
48
using namespace
std;
49
50
namespace
lsst {
51
namespace
afw {
52
namespace
gpu {
53
namespace
detail {
54
55
template
<
typename
T>
56
int
GpuMemOwner<T>::TransferFromImageBase(
const
lsst::afw::image::ImageBase<T>
& img)
57
{
58
const
T* imgPtr=img.
getArray
().
getData
();
59
int
const
imgStride=img.
getArray
().
getStrides
()[0] ;
60
int
const
imgMemSize=imgStride * img.
getHeight
();
61
Transfer(imgPtr,imgMemSize);
62
return
imgStride;
63
}
64
65
template
<
typename
T>
66
int
GpuMemOwner<T>::AllocImageBaseBuffer(
const
lsst::afw::image::ImageBase<T>
& img)
67
{
68
int
const
imgStride=img.
getArray
().
getStrides
()[0] ;
69
int
const
imgMemSize=imgStride * img.
getHeight
();
70
Alloc(imgMemSize);
71
return
imgStride;
72
}
73
74
template
<
typename
T>
75
void
GpuMemOwner<T>::CopyToImageBase(
lsst::afw::image::ImageBase<T>
& img)
const
76
{
77
T* imgPtr=img.
getArray
().
getData
();
78
int
const
imgStride=img.
getArray
().
getStrides
()[0] ;
79
int
const
imgMemSize=imgStride * img.
getHeight
();
80
assert(imgMemSize==size);
81
CopyFromGpu(imgPtr);
82
}
83
84
//
85
// Explicit instantiations
86
//
88
#define MASKEDIMAGE(PIXTYPE) afwImage::MaskedImage<PIXTYPE, afwImage::MaskPixel, afwImage::VariancePixel>
89
#define IMAGE(PIXTYPE) afwImage::Image<PIXTYPE>
90
#define NL
/* */
91
92
#define INSTANTIATE(PIXELT) \
93
template class GpuMemOwner<PIXELT>;
94
95
INSTANTIATE
(
double
)
96
INSTANTIATE
(
float
)
97
INSTANTIATE
(
int
)
98
INSTANTIATE
(boost::uint16_t)
100
101
102
}}}}
// namespace lsst::afw::gpu::detail ends
103
104
#endif
105
ndarray::ArrayBase::getStrides
Index getStrides() const
Return a Vector of the strides of all dimensions.
Definition:
ArrayBase.h:139
GpuExceptions.h
additional GPU exceptions
INSTANTIATE
#define INSTANTIATE(MATCH)
Definition:
makeMatchStatistics.cc:100
lsst::afw::image::ImageBase::getArray
Array getArray()
Definition:
Image.cc:296
lsst::afw::image::ImageBase
The base class for all image classed (Image, Mask, MaskedImage, ...)
Definition:
Image.h:115
GpuBuffer2D.h
contains GpuBuffer2D class (for simple handling of images or 2D arrays)
Image.h
Support for 2-D images.
lsst::afw::image::ImageBase::getHeight
int getHeight() const
Return the number of rows in the image.
Definition:
Image.h:239
ndarray::ArrayBase::getData
Element * getData() const
Return a raw pointer to the first element of the array.
Definition:
ArrayBase.h:117
CudaMemory.h
Functions and a class to help allocating GPU global memory and transferring data to and from a GPU...
Generated on Thu Sep 24 2015 02:29:16 for LSSTApplications by
1.8.5