Logo
ApraPipes 1.0
Loading...
Searching...
No Matches
CudaMemCopy.h
1#pragma once
2
3#include "Module.h"
4#include "CudaCommon.h"
5#include "FrameMetadata.h"
6
8{
9public:
10 CudaMemCopyProps(cudaMemcpyKind kind, cudastream_sp& _stream) : ModuleProps()
11 {
12 alignLength = 0;
13 memcpyKind = kind;
14 stream_sp = _stream;
15 stream = _stream->getCudaStream();
16 sync = false;
17 if (memcpyKind == cudaMemcpyDeviceToHost)
18 {
19 sync = true;
20 }
21 else if (memcpyKind == cudaMemcpyHostToDevice)
22 {
23 alignLength = 512;
24 }
25 else
26 {
27 throw AIPException(AIP_NOTIMPLEMENTED, "Untested code. <" + std::to_string(memcpyKind) + ">");
28 }
29 }
30
31 cudaMemcpyKind memcpyKind;
32 cudastream_sp stream_sp;
33 cudaStream_t stream;
34 bool sync;
36};
37
38class CudaMemCopy : public Module
39{
40public:
42 virtual ~CudaMemCopy();
43
44 virtual bool init();
45 virtual bool term();
46
48
49protected:
50 bool process(frame_container &frames);
51 bool processSOS(frame_sp &frame);
52 bool validateInputPins();
53 bool validateOutputPins();
54 void addInputPin(framemetadata_sp& metadata, string& pinId); // throws exception if validation fails
55 bool shouldTriggerSOS();
56 bool processEOS(string& pinId);
57
58private:
59 void setOutputMetadata(framemetadata_sp& inputMetadata);
60 framemetadata_sp cloneMetadata(framemetadata_sp metadata, FrameMetadata::MemType memType);
61
63 framemetadata_sp mOutputMetadata;
64 std::string mOutputPinId;
65 bool mCopy2D;
68 size_t mSrcPitch[4];
69 size_t mDstPitch[4];
73 size_t mRowSize[4];
74 size_t mHeight[4];
75};
Definition CudaMemCopy.h:8
CudaMemCopyProps(cudaMemcpyKind kind, cudastream_sp &_stream)
Definition CudaMemCopy.h:10
bool sync
Definition CudaMemCopy.h:34
cudastream_sp stream_sp
Definition CudaMemCopy.h:32
cudaMemcpyKind memcpyKind
Definition CudaMemCopy.h:31
size_t alignLength
Definition CudaMemCopy.h:35
cudaStream_t stream
Definition CudaMemCopy.h:33
Definition CudaMemCopy.h:39
framemetadata_sp mOutputMetadata
Definition CudaMemCopy.h:63
std::string mOutputPinId
Definition CudaMemCopy.h:64
size_t mRowSize[4]
Definition CudaMemCopy.h:73
framemetadata_sp cloneMetadata(framemetadata_sp metadata, FrameMetadata::MemType memType)
Definition CudaMemCopy.cpp:215
bool mCopy2D
Definition CudaMemCopy.h:65
CudaMemCopyProps getProps()
Definition CudaMemCopy.cpp:138
void addInputPin(framemetadata_sp &metadata, string &pinId)
Definition CudaMemCopy.cpp:35
size_t mSrcNextPtrOffset[4]
Definition CudaMemCopy.h:71
int mChannels
Definition CudaMemCopy.h:70
virtual ~CudaMemCopy()
Definition CudaMemCopy.cpp:9
virtual bool term()
Definition CudaMemCopy.cpp:75
bool validateOutputPins()
Definition CudaMemCopy.cpp:24
bool shouldTriggerSOS()
Definition CudaMemCopy.cpp:257
size_t mDstNextPtrOffset[4]
Definition CudaMemCopy.h:72
void setOutputMetadata(framemetadata_sp &inputMetadata)
Definition CudaMemCopy.cpp:153
bool processEOS(string &pinId)
Definition CudaMemCopy.cpp:262
size_t mDstPitch[4]
Definition CudaMemCopy.h:69
CudaMemCopy(CudaMemCopyProps props)
Definition CudaMemCopy.cpp:5
FrameMetadata::MemType mMemType
Definition CudaMemCopy.h:66
FrameMetadata::FrameType mFrameType
Definition CudaMemCopy.h:67
size_t mHeight[4]
Definition CudaMemCopy.h:74
virtual bool init()
Definition CudaMemCopy.cpp:59
bool processSOS(frame_sp &frame)
Definition CudaMemCopy.cpp:145
CudaMemCopyProps props
Definition CudaMemCopy.h:62
bool process(frame_container &frames)
Definition CudaMemCopy.cpp:80
size_t mSrcPitch[4]
Definition CudaMemCopy.h:68
bool validateInputPins()
Definition CudaMemCopy.cpp:13
MemType
Definition FrameMetadata.h:58
FrameType
Definition FrameMetadata.h:29
Definition Module.h:33
Definition Module.h:151