tBugfixes - sphere - GPU-based 3D discrete element method algorithm with optional fluid coupling
(HTM) git clone git://src.adamsgaard.dk/sphere
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit ff0ef120a58910bd4dd4e366c584a7d4b451c9a7
(DIR) parent 5bfd34d61e71717237371f1b319a5ca90987abaa
(HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
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(-)
---
(DIR) 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 */
(DIR) 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);