tBugfixes - sphere - GPU-based 3D discrete element method algorithm with option… | |
git clone git://src.adamsgaard.dk/sphere | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit ff0ef120a58910bd4dd4e366c584a7d4b451c9a7 | |
parent 5bfd34d61e71717237371f1b319a5ca90987abaa | |
Author: Anders Damsgaard Christensen <[email protected]> | |
Date: Fri, 26 Oct 2012 23:13:27 +0200 | |
Bugfixes | |
Diffstat: | |
M src/device.cu | 21 +++++++++++---------- | |
M src/sphere.h | 8 ++++---- | |
2 files changed, 15 insertions(+), 14 deletions(-) | |
--- | |
diff --git a/src/device.cu b/src/device.cu | |
t@@ -11,6 +11,7 @@ | |
#include "datatypes.h" | |
#include "utility.cuh" | |
#include "constants.cuh" | |
+#include "debug.h" | |
#include "sorting.cuh" | |
#include "contactmodels.cuh" | |
t@@ -337,10 +338,10 @@ __host__ void DEM::transferToGlobalDeviceMemory() | |
cout << " Transfering data to the device: "; | |
// Copy structure data from host to global device memory | |
- cudaMemcpy(k, dev_k, sizeof(k), cudaMemcpyDeviceToHost); | |
- cudaMemcpy(e, dev_e, sizeof(e), cudaMemcpyDeviceToHost); | |
- cudaMemcpy(time, dev_time, sizeof(time), cudaMemcpyDeviceToHost); | |
- cudaMemcpy(walls, dev_walls, sizeof(walls), cudaMemcpyDeviceToHost); | |
+ cudaMemcpy(&k, dev_k, sizeof(k), cudaMemcpyDeviceToHost); | |
+ cudaMemcpy(&e, dev_e, sizeof(e), cudaMemcpyDeviceToHost); | |
+ cudaMemcpy(&time, dev_time, sizeof(time), cudaMemcpyDeviceToHost); | |
+ cudaMemcpy(&walls, dev_walls, sizeof(walls), cudaMemcpyDeviceToHost); | |
checkForCudaErrors("End of transferFromGlobalDeviceMemory"); | |
if (verbose == 1) | |
t@@ -361,8 +362,8 @@ __host__ void DEM::startTime() | |
// Particle memory size | |
- unsigned int memSizeF = sizeof(Float) * np; | |
- unsigned int memSizeF4 = sizeof(Float4) * np; | |
+ //unsigned int memSizeF = sizeof(Float) * np; | |
+ //unsigned int memSizeF4 = sizeof(Float4) * np; | |
// Allocate device memory for particle variables, | |
// tied to previously declared pointers in structures | |
t@@ -384,7 +385,7 @@ __host__ void DEM::startTime() | |
// GPU workload configuration | |
unsigned int threadsPerBlock = 256; | |
// Create enough blocks to accomodate the particles | |
- unsigned int blocksPerGrid = iDivUp(p.np, threadsPerBlock); | |
+ unsigned int blocksPerGrid = iDivUp(np, threadsPerBlock); | |
dim3 dimGrid(blocksPerGrid, 1, 1); // Blocks arranged in 1D grid | |
dim3 dimBlock(threadsPerBlock, 1, 1); // Threads arranged in 1D block | |
// Shared memory per block | |
t@@ -749,8 +750,8 @@ __host__ void DEM::startTime() | |
freeGlobalDeviceMemory(); | |
// Contact info arrays | |
- delete[] host_contacts; | |
- delete[] host_distmod; | |
- delete[] host_delta_t; | |
+ delete[] k.contacts; | |
+ delete[] k.distmod; | |
+ delete[] k.delta_t; | |
} /* EOF */ | |
diff --git a/src/sphere.h b/src/sphere.h | |
t@@ -21,11 +21,11 @@ class DEM { | |
// Structure containing individual particle kinematics | |
Kinematics k; // host | |
- Kinematics dev_k; // device | |
+ Kinematics *dev_k; // device | |
// Structure containing energy values | |
Energies e; // host | |
- Energies dev_e; // device | |
+ Energies *dev_e; // device | |
// Structure of global parameters | |
Params params; // host | |
t@@ -34,7 +34,7 @@ class DEM { | |
Grid grid; // host | |
// Structure containing sorting arrays | |
- Sorting dev_sort; // device | |
+ Sorting *dev_sort; // device | |
// Structure of temporal parameters | |
Time time; // host | |
t@@ -42,7 +42,7 @@ class DEM { | |
// Structure of wall parameters | |
Walls walls; // host | |
- Walls dev_walls; // device | |
+ Walls *dev_walls; // device | |
// GPU initialization, must be called before startTime() | |
void initializeGPU(void); |