@@ -42,17 +42,19 @@ public static unsafe DeviceMemory<float> AllocateDevice([NotNull] this Gpu gpu,
42
42
43
43
// Memory copy
44
44
DeviceMemory < float > result_gpu = gpu . AllocateDevice < float > ( source . Entities * length ) ;
45
- CUDAInterop . CUDA_MEMCPY2D_st * ptSt = stackalloc CUDAInterop . CUDA_MEMCPY2D_st [ 1 ] ;
46
- ptSt [ 0 ] = new CUDAInterop . CUDA_MEMCPY2D_st
45
+ CUDAInterop . CUDA_MEMCPY2D_st * ptSt = stackalloc [ ]
47
46
{
48
- srcMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_HOST ,
49
- srcHost = source . Ptr + sizeof ( float ) * offset ,
50
- srcPitch = new IntPtr ( sizeof ( float ) * source . Length ) ,
51
- dstMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_DEVICE ,
52
- dstDevice = result_gpu . Handle ,
53
- dstPitch = new IntPtr ( sizeof ( float ) * length ) ,
54
- WidthInBytes = new IntPtr ( sizeof ( float ) * length ) ,
55
- Height = new IntPtr ( source . Entities )
47
+ new CUDAInterop . CUDA_MEMCPY2D_st
48
+ {
49
+ srcMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_HOST ,
50
+ srcHost = source . Ptr + sizeof ( float ) * offset ,
51
+ srcPitch = new IntPtr ( sizeof ( float ) * source . Length ) ,
52
+ dstMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_DEVICE ,
53
+ dstDevice = result_gpu . Handle ,
54
+ dstPitch = new IntPtr ( sizeof ( float ) * length ) ,
55
+ WidthInBytes = new IntPtr ( sizeof ( float ) * length ) ,
56
+ Height = new IntPtr ( source . Entities )
57
+ }
56
58
} ;
57
59
CUDAInterop . cudaError_enum result = CUDAInterop . cuMemcpy2D ( ptSt ) ;
58
60
return result == CUDAInterop . cudaError_enum . CUDA_SUCCESS
@@ -103,17 +105,19 @@ public static unsafe void CopyTo([NotNull] this DeviceMemory<float> source, in T
103
105
if ( destination . Length - offset < length ) throw new ArgumentOutOfRangeException ( nameof ( offset ) , "The input offset isn't valid" ) ;
104
106
105
107
// Memory copy
106
- CUDAInterop . CUDA_MEMCPY2D_st * ptSt = stackalloc CUDAInterop . CUDA_MEMCPY2D_st [ 1 ] ;
107
- ptSt [ 0 ] = new CUDAInterop . CUDA_MEMCPY2D_st
108
+ CUDAInterop . CUDA_MEMCPY2D_st * ptSt = stackalloc [ ]
108
109
{
109
- srcMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_DEVICE ,
110
- srcDevice = source . Handle ,
111
- srcPitch = new IntPtr ( sizeof ( float ) * length ) ,
112
- dstMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_HOST ,
113
- dstHost = destination . Ptr + sizeof ( float ) * offset ,
114
- dstPitch = new IntPtr ( sizeof ( float ) * destination . Length ) ,
115
- WidthInBytes = new IntPtr ( sizeof ( float ) * length ) ,
116
- Height = new IntPtr ( destination . Entities )
110
+ new CUDAInterop . CUDA_MEMCPY2D_st
111
+ {
112
+ srcMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_DEVICE ,
113
+ srcDevice = source . Handle ,
114
+ srcPitch = new IntPtr ( sizeof ( float ) * length ) ,
115
+ dstMemoryType = CUDAInterop . CUmemorytype_enum . CU_MEMORYTYPE_HOST ,
116
+ dstHost = destination . Ptr + sizeof ( float ) * offset ,
117
+ dstPitch = new IntPtr ( sizeof ( float ) * destination . Length ) ,
118
+ WidthInBytes = new IntPtr ( sizeof ( float ) * length ) ,
119
+ Height = new IntPtr ( destination . Entities )
120
+ }
117
121
} ;
118
122
CUDAInterop . cudaError_enum result = CUDAInterop . cuMemcpy2D ( ptSt ) ;
119
123
if ( result != CUDAInterop . cudaError_enum . CUDA_SUCCESS )
0 commit comments