birleşik bellek ayırma cuda için Fonksiyonel anahtar kelime

oy
0

Ben CUDA programlama başlıyorum ve bir parçacık entegratörü uygulamak için bir başlangıç ​​olarak, ben parçacıkların ilgili verileri tutan ve entegre etmek mümkün olmalıdır entegratör sınıfını yaptı. veri başka konteyner sınıfından geliyor ve ben birleşik bellek bu verileri vermek ister. Bu amaçla, ben öyle tüm üye değişkenleri için cudaMallocManaged çağrısıdır, '_allocate' üye fonksiyonu var. Şimdi ben bu fonksiyonu yerleştirilmeli fonksiyonel anahtar kelimenin ne tür içinde merak ediyorum.

Sana birleşik bellek konak hem de cihaz için geçerli olmalıdır çünkü şu anda, ana ve cihaz hem kullanıyorum, bir sınıf tanımı 'küresel' kullanamazsınız okudum ama bu doğru yolu olup olmadığından emin değilim.

Bunun içinde bu uygulamaya geçirmek istediğimiz sınıftır:


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

Bu fonksiyonel anahtar kelime için alakalı olup olmadığını bilmiyorum, ama başarılı olup olmadığını ben de görmek için tahsis sonra cudaError kontrol etmek istiyorum

Oluştur 24/10/2019 saat 12:57
kaynak kullanıcı
Diğer dillerde...                            

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