Functionele sleutelwoord voor een verenigde geheugentoewijzing cuda

stemmen
0

Ik begin met CUDA programmering en als het begin tot het implementeren van een deeltje integrator, ik maakte een integrator klasse die gegevens bevat over deeltjes en moet in staat zijn om het te integreren. De gegevens zijn afkomstig van een andere container klasse, en ik wil deze gegevens toe te wijzen aan de verenigde geheugen. Hiervoor heb ik een lid functie '_allocate', alles wat het doet is roepen cudaMallocManaged voor het lid variabelen. Nu vroeg ik me af in wat voor soort functionele keyword ik deze functie moet wikkelen.

Ik heb gelezen dat je niet 'global' kan gebruiken in een klasse definitie, nu ben ik met behulp van zowel de host en device, aangezien unified geheugen beschikbaar voor zowel host en device zou moeten zijn, maar ik ben niet zeker of dit de juiste manier.

Dit is de klasse Ik wil graag om dit te implementeren in:


template <typename T>
class Leapfrog : public Integrator<T> {
  public:

   ...

  private:
    T *positions; 
    T *masses; 
    T *velocities; 
    T *types; 
    __device__ __host__ bool _allocate();
    __device__ __host__ bool _free();
    __device__ __host__ bool _load_data();
};

// allocates space on the unified memory for the 
// private variables positions, masses, velocities, types

template <typename T>
__host__ __device__ void Leapfrog<T>::_allocate(){
  cudaMallocManaged(&positions, particleset.N*3*sizeof(T));
  cudaMallocManaged(&masses, particleset.N*sizeof(T));
  cudaMallocManaged(&velocities, particleset.N*3*sizeof(T));
  cudaMallocManaged(&types, particleset.N*sizeof(T));
}

Ik weet niet of dit relevant is voor de functionele zoekwoord is, maar ik wil ook cudaError te checken na de toewijzing te zien of het gelukt is

De vraag is gesteld op 24/10/2019 om 12:57
bron van user
In andere talen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more