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?
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 20/100
- Tipo di issue
- Documentazione
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- cpp
- Ambito
- networking
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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;
}
- Lingua principale
- C
- Stelle
- 1.4k
- Fork
- 198
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di NVIDIA/gdrcopy
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Proposal: honor `TMPDIR` in gdrcopy package build scriptsForse già presa @efegokdemir l’ha presa 53 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
Tutte le issue di NVIDIA/gdrcopy
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
I maintainer di solito rispondono entro 1 giorno
-
SPIDevice selects an active-high device as soon as it is createdForse già presa @mikeysklar l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
adafruit/circuitpython#11869 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
gnif/LookingGlass#1352 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
kovidgoyal/kitty#10862 ·
I maintainer di solito rispondono entro 1 giorno