mac - cudaMallocManaged() devuelve "operación no admitida"
cuda tutorial (1)
Intentó versiones de depuración y liberación de 32 bits.
Use una versión de depuración o liberación de 64 bits.
De la documentación :
J.1.4. Requisitos del sistema
La memoria unificada tiene tres requisitos básicos:
• una GPU con arquitectura SM 3.0 o superior (clase Kepler o más reciente)
• una aplicación host de 64 bits y un sistema operativo, excepto en Android
• Linux o Windows
La aplicación de host de 64 bits significa que no puede compilar para una depuración o versión de lanzamiento de 32 bits.
Probar la memoria administrada en CUDA 6.0 me da una operation not supported
cuando se llama a cudaMallocManaged()
.
#include "cuda_runtime.h"
#include <stdio.h>
#define CHECK(r) {_check((r), __LINE__);}
void _check(cudaError_t r, int line) {
if (r != cudaSuccess) {
printf("CUDA error on line %d: %s/n", line, cudaGetErrorString(r), line);
exit(0);
}
}
int main()
{
int *c;
CHECK(cudaMallocManaged(&c, sizeof(int)));
*c = 0;
return 0;
}
GeForce GTX 750 Ti (Maxwell), compilado con CUDA 6.0 usando compute_50, sm_50. Windows 7 de 64 bits. Probado con los controladores 335.23 (whql) y 337.50 (beta). Visual Studio 2012. Intentos de depuración y versiones de 32 bits.
C: / rd / projects / cpp / test_cuda6 / test_cuda6> "C: / Archivos de programa / NVIDIA GPU Computing Toolkit / CUDA / v6.0 / bin / nvcc.exe" -gencode = arch = compute_50, code = / "sm_50, compute_50 / "--use-local-env --cl-versión 2012 -ccbin" C: / Archivos de programa (x86) / Microsoft Visual Studio 11.0 / VC / bin "-I / C / common / inc -I" C: / Archivos de programa / NVIDIA GPU Computing Toolkit / CUDA / v6.0 / include "-I" C: / Archivos de programa / NVIDIA GPU Computing Toolkit / CUDA / v6.0 / include "--keep-dir Release -maxrregcount = 0 - -machine 32 -compile -cudart static -DWIN32 -DNDEBUG -D_CONSOLE -D_MBCS -Xcompiler "/ EHsc / W3 / nologo / O2 / Zi / MD" -o Release / kernel.cu.obj "C: / rd / projects / cpp / test_cuda6 / test_cuda6 / kernel.cu "
El programa se ejecuta sin error si reemplazo cudaMallocManaged()
con cudaMalloc()
.
¿Alguna idea sobre cómo hacer funcionar cudaMallocManaged()
?