Repository navigation
Expand file tree
/
Copy pathMemoryManager.cu
More file actions
109 lines (96 loc) · 4.01 KB
/
Copy pathMemoryManager.cu
File metadata and controls
109 lines (96 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include "MemoryManager.cuh"
#include <stdio.h>
EXTERN_C
{
EXPORT int _HostToHostCopy(MemoryBuffer& dest, const MemoryBuffer& source)
{
return cudaMemcpy((void *)dest.pointer, (void *)source.pointer, dest.TotalSize(), cudaMemcpyHostToHost);
}
EXPORT int _HostToHostCopyRaw(const ptr_t destPointer, const ptr_t sourcePointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer dest(destPointer, size, memorySpace, mathDomain);
MemoryBuffer source(sourcePointer, size, memorySpace, mathDomain);
return _HostToHostCopy(dest, source);
}
EXPORT int _HostToDeviceCopy(MemoryBuffer& dest, const MemoryBuffer& source)
{
return cudaMemcpy((void *)dest.pointer, (void *)source.pointer, dest.TotalSize(), cudaMemcpyHostToDevice);
}
EXPORT int _HostToDeviceCopyRaw(const ptr_t destPointer, const ptr_t sourcePointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer dest(destPointer, size, memorySpace, mathDomain);
MemoryBuffer source(sourcePointer, size, memorySpace, mathDomain);
return _HostToDeviceCopy(dest, source);
}
EXPORT int _DeviceToHostCopy(MemoryBuffer& dest, const MemoryBuffer& source)
{
return cudaMemcpy((void *)dest.pointer, (void *)source.pointer, dest.TotalSize(), cudaMemcpyDeviceToHost);
}
EXPORT int _DeviceToHostCopyRaw(const ptr_t destPointer, const ptr_t sourcePointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer dest(destPointer, size, memorySpace, mathDomain);
MemoryBuffer source(sourcePointer, size, memorySpace, mathDomain);
return _DeviceToHostCopy(dest, source);
}
EXPORT int _DeviceToDeviceCopy(MemoryBuffer& dest, const MemoryBuffer& source)
{
return cudaMemcpy((void *)dest.pointer, (void *)source.pointer, dest.TotalSize(), cudaMemcpyDeviceToDevice);
}
EXPORT int _DeviceToDeviceCopyRaw(const ptr_t destPointer, const ptr_t sourcePointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer dest(destPointer, size, memorySpace, mathDomain);
MemoryBuffer source(sourcePointer, size, memorySpace, mathDomain);
return _DeviceToDeviceCopy(dest, source);
}
EXPORT int _AutoCopy(MemoryBuffer& dest, const MemoryBuffer& source)
{
return cudaMemcpy((void *)dest.pointer, (void *)source.pointer, dest.TotalSize(), cudaMemcpyDefault);
}
EXPORT int _AutoCopyRaw(const ptr_t destPointer, const ptr_t sourcePointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer dest(destPointer, size, memorySpace, mathDomain);
MemoryBuffer source(sourcePointer, size, memorySpace, mathDomain);
return _AutoCopy(dest, source);
}
EXPORT int _Alloc(MemoryBuffer& buf)
{
return cudaMalloc((void **)&buf.pointer, buf.TotalSize());
}
EXPORT int _AllocRaw(ptr_t& pointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer tmp(0, size, memorySpace, mathDomain);
int ret = _Alloc(tmp);
pointer = tmp.pointer;
return ret;
}
EXPORT int _AllocHost(MemoryBuffer& buf)
{
return cudaMallocHost((void **)&buf.pointer, buf.TotalSize());
}
EXPORT int _AllocHostRaw(ptr_t& pointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer tmp(0, size, memorySpace, mathDomain);
int ret = _AllocHost(tmp);
pointer = tmp.pointer;
return ret;
}
EXPORT int _Free(const MemoryBuffer& buf)
{
cudaDeviceSynchronize();
return cudaFree((void *)buf.pointer);
}
EXPORT int _FreeRaw(const ptr_t pointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer buf(pointer, size, memorySpace, mathDomain);
return _Free(buf);
}
EXPORT int _FreeHost(const MemoryBuffer& buf)
{
return cudaFreeHost((void *)buf.pointer);
}
EXPORT int _FreeHostRaw(const ptr_t pointer, const unsigned size, const MemorySpace memorySpace, const MathDomain mathDomain)
{
MemoryBuffer buf(pointer, size, memorySpace, mathDomain);
return _FreeHost(buf);
}
}