-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrid.h
41 lines (31 loc) · 1.34 KB
/
grid.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#ifndef GRID_H
#define GRID_H
#include <cuda.h>
// cuRAND
#include <curand.h>
#include <curand_kernel.h>
#include "types.h"
struct Grid
{
DimensionEnum dimension; // размерность решётки
int xSize, ySize, zSize; // размеры решётки
int interactionEnergy; // энергия взаимодействия между спинами
double externalField; // значение внешнего магнитного поля
int interactionRadius; // радиус взаимодействия
uint percentOfNonmagnetic; // количество немагнитных частиц
double temperature; // температура
curandState* randomStates; // состояния генераторов случайных чисел CUDA
uchar* deviceMatrix; // решётка на GPU
int percentOfCube; // размер для визуализации в %
};
// CUDA functions
void cudaInitGrid(Grid* g);
void cudaFreeGrid(Grid* g);
void cudaSetParams(Grid* g);
void cudaAlgorithmStep(Grid* g, uint algorithmSteps);
double cudaMagnetization(Grid* g);
double cudaEnergy(Grid* g);
void cudaInitVBO(Grid* g, struct cudaGraphicsResource** cudaVertexResource,
struct cudaGraphicsResource** cudaIndexResource);
void cudaUpdateVBO(Grid* g, struct cudaGraphicsResource** cudaVertexResource);
#endif // GRID_H