これ何がいけないんだろう
#include <stdlib.h> #include <iostream> using namespace std; int main( void ) { float3 h_ptr[ 1024 ][ 1024 ]; float4 *d_ptr = NULL; if ( cudaMalloc( &d_ptr, sizeof( float4 ) * 1024 * 1024 ) != cudaSuccess ) { cout << cudaGetErrorString( cudaGetLastError() ) << endl; return 0; } cudaMemcpy3DParms params; memset( ¶ms, 0, sizeof( params ) ); params.srcPtr = make_cudaPitchedPtr( d_ptr, sizeof( float4 ), sizeof( float4 ), 1024 ); params.dstPtr = make_cudaPitchedPtr( h_ptr, sizeof( float3 ), sizeof( float3 ), 1024 ); params.extent = make_cudaExtent( sizeof( float3 ), 1024, 1024 ); params.kind = cudaMemcpyHostToDevice; if ( cudaMemcpy3D( ¶ms ) != cudaSuccess ) { cout << cudaGetErrorString( cudaGetLastError() ) << endl; } cudaFree( d_ptr ); return 0; }
cudaMemcpy3Dで必ずセグフォになる・・・