Alsvinn  0.5.3
The fast FVM simulator with UQ support
gpu_array.hpp
Go to the documentation of this file.
1 /* Copyright (c) 2018 ETH Zurich, Kjetil Olsen Lye
2  * This program is free software: you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License as published by
4  * the Free Software Foundation, either version 3 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program. If not, see <http://www.gnu.org/licenses/>.
14  */
15 
16 #pragma once
17 
18 namespace alsfvm {
19 
24 template<class T, size_t N>
25 class gpu_array {
26 public:
27 
29  // empty
30  }
31 
32  __host__ __device__ gpu_array(std::initializer_list<T> initializerList) {
33  int i = 0;
34 
35  for (const T& t : initializerList) {
36  data[i++] = t;
37  }
38  }
39 
41  return data[i];
42  }
43 
44  __host__ __device__ const T& operator[](int i) const {
45  return data[i];
46  }
47 
48  size_t size() const {
49  return N;
50  }
51 private:
52  T data[N];
53 
54 };
55 
56 
57 
58 }
__host__ __device__ T & operator[](int i)
Definition: gpu_array.hpp:40
#define __host__
Definition: types.hpp:46
size_t size() const
Definition: gpu_array.hpp:48
#define __device__
Definition: types.hpp:45
__host__ __device__ gpu_array(std::initializer_list< T > initializerList)
Definition: gpu_array.hpp:32
Various utility functions to implement the tecno flux.
Definition: types.hpp:30
__host__ __device__ const T & operator[](int i) const
Definition: gpu_array.hpp:44
The gpu_array class is akin to the std::array, only also works for gpus.
Definition: gpu_array.hpp:25
__host__ __device__ gpu_array()
Definition: gpu_array.hpp:28