Sekarang, jika saya menggunakan kode ini untuk mencoba akses ke GPU-RAM dari CPU-Cores dengan menggunakan CUDA5.5 di GeForce GTX460SE (CC2.1), maka saya mendapatkan pengecualian "Pelanggaran Akses":
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
int main()
{
unsigned char* gpu_ptr = NULL;
cudaMalloc((void **)&gpu_ptr, 1024*1024);
*gpu_ptr = 1;
int q; std::cin >> q;
return 0;
}
Tapi kita tahu, bahwa ada UVA (Unified Virtual Addressing). Dan ada beberapa yang baru:
- 25 Oktober 2013 - Driver GPU Linux 331.17 Beta: Modul NVIDIA Unified Kernel Memory yang baru adalah modul kernel baru untuk fitur Unified Memory yang akan diekspos pada rilis CUDA NVIDIA yang akan datang. Modul baru ini adalah nvidia-uvm.ko dan akan memungkinkan adanya ruang memori terpadu antara GPU dan RAM sistem. http://www.phoronix.com/scan.php?page=news_item&px=MTQ5NDc
- Fitur utama CUDA 6 meliputi: Memori Terpadu -- Menyederhanakan pemrograman dengan memungkinkan aplikasi mengakses memori CPU dan GPU tanpa perlu menyalin data secara manual dari satu ke yang lain, dan membuatnya lebih mudah untuk menambahkan dukungan akselerasi GPU dalam berbagai macam bahasa pemrograman. http://www.techpowerup.com/194505/nvidia-dramatically-simplify-parallel-programming-with-cuda-6.html
Apakah mungkin untuk mengakses memori GPU-RAM dari CPU-Cores dengan menggunakan penunjuk sederhana di CUDA6 baru?