Теперь, если я использую этот код, чтобы попытаться получить доступ к GPU-RAM из CPU-Core с помощью CUDA5.5 в GeForce GTX460SE (CC2.1), то я получаю исключение «Нарушение прав доступа»:
#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;
}
Но мы знаем, что есть UVA (Unified Virtual Addressing). И есть несколько новинок:
- 25 октября 2013 г. - 331.17 Beta Linux GPU Driver: новый модуль NVIDIA Unified Kernel Memory - это новый модуль ядра для функции Unified Memory, которая будет представлена в предстоящем выпуске NVIDIA CUDA. Новый модуль - nvidia-uvm.ko, он позволит использовать единое пространство памяти между графическим процессором и системной оперативной памятью. http://www.phoronix.com/scan.php?page=news_item&px=MTQ5NDc
- Ключевые особенности CUDA 6: Унифицированная память - упрощает программирование, позволяя приложениям получать доступ к памяти ЦП и ГП без необходимости вручную копировать данные из одного в другой, а также упрощает добавление поддержки ускорения ГП в широком диапазоне языки программирования. http://www.techpowerup.com/194505/nvidia-dramatically-simplify-parallel-programming-with-cuda-6.html
Можно ли получить доступ к памяти GPU-RAM из CPU-Core с помощью простого указателя в новом CUDA6?