After run gdr_copy_to_mapping, how does the kernel function utilize the data transferred from host? In other words, can cudamalloc and cudaMemcpy be replaced?
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
- Tipo de issue
- Documentación
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp
- Área
- networking
Línea de trabajo
Start with the gdr_copy_to_mapping and gdr_copy_from_mapping entry points shown in the sample, then inspect the repository's usage examples and documentation for mapped GPU memory and kernel synchronization. Establish whether the mapped allocation can be used by the kernel and whether cudaDeviceSynchronize is sufficient; done when the supported call sequence and any limitations are documented.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
A sample code is here, plz :
#define DTYPE float
__global__ void sample(const float* A, const float* B, int64_t n) {
int i = blockIdx.x * blockDim.x + threadIdx.x;
printf("%f at %p\n", A[0], A);
if (i < N)
{
B[i] = A[i] +1;
}
}
int main(){
gdr_t gdr_handle;
void *gpu_buffer;
gpu_mem_handle_t mhandle;
void *gpu_map_addr = NULL;
gdr_mh_t mh;
cudaError_t cuda_status;
CUdevice dev;
CUcontext dev_ctx;
ASSERTDRV(cuInit(0));
ASSERTDRV(cuDeviceGet(&dev, 0));
ASSERTDRV(cuDevicePrimaryCtxRetain(&dev_ctx, dev));
ASSERTDRV(cuCtxSetCurrent(dev_ctx));
ASSERTDRV(gpu_mem_alloc(&mhandle, SIZE, 1, 1));
gdr_handle = gdr_open();
if (!gdr_handle)
{
printf("RDMA initialize failed.\n");
goto close_and_clear;
}
printf("RDMA initialize succeed.\n");
if (gdr_pin_buffer(gdr_handle, mhandle.ptr, 2*size_bytes, 0, 0, &mh) != 0)
{
printf("*** ERROR: gdr_pin_buffer failed\n");
goto close_and_clear;
}
if (gdr_map(gdr_handle, mh, &gpu_map_addr, 2*size_bytes) != 0)
{
printf("*** ERROR: gdr_map failed\n");
gdr_unpin_buffer(gdr_handle, mh);
goto close_and_clear;
}
DTYPE *a = (DTYPE *)malloc(size_bytes);
DTYPE *b = (DTYPE *)malloc(size_bytes);
gdr_copy_to_mapping(mh, gpu_map_addr, a, size_bytes);
//***HOW TO CALL KERNAL FUNCTION?
//***cudaDeviceSynchronize() CAN BE CALLED TO WAITE?
gdr_copy_from_mapping(mh, gpu_map_addr+size_bytes, b, size_bytes);
close_and_clear:
gdr_unmap(gdr_handle, mh, gpu_map_addr, SIZE);
gdr_unpin_buffer(gdr_handle, mh);
cudaFree(gpu_buffer);
gdr_close(gdr_handle);
free(buffer);
return 0;
}
- Lenguaje dominante
- C
- Estrellas
- 1.4k
- Forks
- 198
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de NVIDIA/gdrcopy
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Proposal: honor `TMPDIR` in gdrcopy package build scriptsPosiblemente ocupada @efegokdemir la tomó hace 53 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
Todos los issues de NVIDIA/gdrcopy
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
SPIDevice selects an active-high device as soon as it is createdPosiblemente ocupada @mikeysklar la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
adafruit/circuitpython#11869 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
gnif/LookingGlass#1352 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
kovidgoyal/kitty#10862 ·
Los mantenedores suelen responder en 1 día