Rumah >pembangunan bahagian belakang >C++ >Mengapa CudaMemcpy Menyebabkan Kerosakan Segmentasi, dan Bagaimana Saya Boleh Membetulkan Ralat Penyahrujukan Penunjuk Peranti?
Apabila menggunakan cudaMemcpy, kesalahan segmentasi boleh berlaku jika anda cuba mengakses penuding peranti di luar fungsi cudaMemcpy. Ini kerana, walaupun penunjuk peranti diluluskan melalui rujukan, membatalkan rujukannya dalam kod hos adalah dilarang.
Untuk menyelesaikan isu ini, anda mesti mengikut langkah berikut:
# Allocate device memory for host pointer cudaMalloc((void**)&A, sizeof(float)); # Copy host pointer value to device pointer cudaMemcpy(&A, &(Grid_dev->cdata[i]), sizeof(float *), cudaMemcpyDeviceToHost); # Update host pointer to point to device array CurrentGrid->cdata[i] = new float[size]; # Copy device array to host cudaMemcpy(CurrentGrid->cdata[i], A, size*sizeof(float), cudaMemcpyDeviceToHost);
Atas ialah kandungan terperinci Mengapa CudaMemcpy Menyebabkan Kerosakan Segmentasi, dan Bagaimana Saya Boleh Membetulkan Ralat Penyahrujukan Penunjuk Peranti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!