Funkcionális kulcsszót egységes memóriafoglalási CUDA

szavazat
0

Én kezdő ki CUDA programozási és a kezdetektől a végrehajtási részecske integrátor, tettem integrátor osztály, amely az előbbi adatokat részecskék és képesnek kell lennie arra, hogy integrálni. Az adatok származik egy másik tartályba osztály, és szeretnék kiosztani ezeket az adatokat az egységes memória. Erre a célra van egy tag függvény „_allocate”, annyit tesz, hívja cudaMallocManaged az elem változó. Most arra gondoltam, hogy milyen fajta funkcionális kulcsszó kéne lezárja ezt a funkciót.

Azt olvastam, hogy nem tudja használni a „globális” egy osztály definíció, most én vagyok a gazda- és a készülék, mivel az egységes memória kell rendelkezésre állniuk a gazda- és a készülék, de nem vagyok biztos abban, hogy ez a helyes út.

Ez az osztály szeretnék végre ezt:


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));
}

Nem tudom, ha ez releváns funkcionális kulcsszó, de azt is szeretné, hogy ellenőrizze cudaError elosztása után, hogy ha ez sikeres volt

A kérdést 24/10/2019 12:57
a forrás felhasználó
Más nyelveken...                            

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