From 20ba5daba283285ebe869b4fdacfca2d705241af Mon Sep 17 00:00:00 2001 From: xinyulin Date: Sun, 9 Sep 2018 02:02:54 -0400 Subject: [PATCH 01/14] part1 --- src/CMakeLists.txt | 2 +- src/kernel.cu | 60 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fdd636d..dff0113 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,5 +10,5 @@ set(SOURCE_FILES cuda_add_library(src ${SOURCE_FILES} - OPTIONS -arch=sm_20 + OPTIONS -arch=sm_50 ) diff --git a/src/kernel.cu b/src/kernel.cu index 74dffcb..7c8fb64 100644 --- a/src/kernel.cu +++ b/src/kernel.cu @@ -225,15 +225,53 @@ void Boids::copyBoidsToVBO(float *vbodptr_positions, float *vbodptr_velocities) /** * LOOK-1.2 You can use this as a helper for kernUpdateVelocityBruteForce. -* __device__ code can be called from a __global__ context +* __device__ code can be called from a __global__ context !!!! * Compute the new velocity on the body with index `iSelf` due to the `N` boids * in the `pos` and `vel` arrays. */ __device__ glm::vec3 computeVelocityChange(int N, int iSelf, const glm::vec3 *pos, const glm::vec3 *vel) { // Rule 1: boids fly towards their local perceived center of mass, which excludes themselves - // Rule 2: boids try to stay a distance d away from each other - // Rule 3: boids try to match the speed of surrounding boids - return glm::vec3(0.0f, 0.0f, 0.0f); + + glm::vec3 perceived_center = glm::vec3(0.0f, 0.0f, 0.0f); + glm::vec3 c = glm::vec3(0.0f, 0.0f, 0.0f); + glm::vec3 perceived_velocity = glm::vec3(0.0f, 0.0f, 0.0f); + int flag1 = 0; + int flag2 = 0; + for (int i = 0; i < N; ++i) + { + if (i != iSelf) + { + float m_distance = glm::distance(pos[i], pos[iSelf]); + if (m_distance < rule1Distance) + { + perceived_center += pos[i]; + ++flag1; + } + + if (m_distance < rule2Distance) + { + c -= (pos[i] - pos[iSelf]); + } + + if (m_distance < rule3Distance) + { + perceived_velocity += vel[i]; + ++flag2; + } + } + //if ((i != iSelf) && (glm::distance(pos[i], pos[iSelf]) < rule1Distance)) + //{ + // perceived_center += pos[i]; + //} + } + perceived_center /= flag1; + glm::vec3 m_result1 = glm::vec3(0.0f, 0.0f, 0.0f); + m_result1 = (perceived_center - pos[iSelf]) * rule1Scale; + perceived_velocity /= flag2; + glm::vec3 m_result2 = c * rule2Scale; + glm::vec3 m_result3 = perceived_velocity * rule3Scale; + // Rule 2: boids try to stay a distance d away from each other + return m_result1 + m_result2 + m_result3; } /** @@ -242,9 +280,17 @@ __device__ glm::vec3 computeVelocityChange(int N, int iSelf, const glm::vec3 *po */ __global__ void kernUpdateVelocityBruteForce(int N, glm::vec3 *pos, glm::vec3 *vel1, glm::vec3 *vel2) { + + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index > N) return; + glm::vec3 new_velocity = computeVelocityChange(N, index, pos, vel1) + vel1[index]; + glm::clamp(new_velocity, glm::vec3(0.0f), glm::vec3(1.0f) * maxSpeed); + vel2[index] = new_velocity; // Compute a new velocity based on pos and vel1 // Clamp the speed // Record the new velocity into vel2. Question: why NOT vel1? + // cause the synchronizing problem; + } /** @@ -348,7 +394,13 @@ __global__ void kernUpdateVelNeighborSearchCoherent( */ void Boids::stepSimulationNaive(float dt) { // TODO-1.2 - use the kernels you wrote to step the simulation forward in time. + //kernCopyPositionsToVBO << > >(numObjects, dev_pos, vbodptr_positions, scene_scale); + dim3 fullBlocksPerGrid((numObjects + blockSize - 1) / blockSize); + kernUpdateVelocityBruteForce << > > (numObjects, dev_pos, dev_vel1, dev_vel2); + kernUpdatePos << > >(numObjects, dt, dev_pos, dev_vel1); // TODO-1.2 ping-pong the velocity buffers + + std::swap(dev_vel1, dev_vel2); } void Boids::stepSimulationScatteredGrid(float dt) { From b8f7f378884741da4f0831b107feb4593ba50c76 Mon Sep 17 00:00:00 2001 From: xinyulin Date: Sun, 9 Sep 2018 10:12:10 -0400 Subject: [PATCH 02/14] debug part1 --- src/kernel.cu | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/kernel.cu b/src/kernel.cu index 7c8fb64..3412424 100644 --- a/src/kernel.cu +++ b/src/kernel.cu @@ -231,12 +231,12 @@ void Boids::copyBoidsToVBO(float *vbodptr_positions, float *vbodptr_velocities) */ __device__ glm::vec3 computeVelocityChange(int N, int iSelf, const glm::vec3 *pos, const glm::vec3 *vel) { // Rule 1: boids fly towards their local perceived center of mass, which excludes themselves - + // Rule 2: boids try to stay a distance d away from each other glm::vec3 perceived_center = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 c = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 perceived_velocity = glm::vec3(0.0f, 0.0f, 0.0f); - int flag1 = 0; - int flag2 = 0; + int flag1, flag2 = 0; + for (int i = 0; i < N; ++i) { if (i != iSelf) @@ -259,18 +259,29 @@ __device__ glm::vec3 computeVelocityChange(int N, int iSelf, const glm::vec3 *po ++flag2; } } - //if ((i != iSelf) && (glm::distance(pos[i], pos[iSelf]) < rule1Distance)) - //{ - // perceived_center += pos[i]; - //} } - perceived_center /= flag1; - glm::vec3 m_result1 = glm::vec3(0.0f, 0.0f, 0.0f); - m_result1 = (perceived_center - pos[iSelf]) * rule1Scale; - perceived_velocity /= flag2; + if (flag1 > 0) + { + perceived_center /= (float)flag1; + } + else + { + perceived_center = pos[iSelf]; + } + + if (flag2 > 0) + { + perceived_velocity /= (float)flag2; + } + else + { + perceived_velocity = vel[iSelf]; + } + + glm::vec3 m_result1 = (perceived_center - pos[iSelf]) * rule1Scale; glm::vec3 m_result2 = c * rule2Scale; glm::vec3 m_result3 = perceived_velocity * rule3Scale; - // Rule 2: boids try to stay a distance d away from each other + return m_result1 + m_result2 + m_result3; } @@ -284,7 +295,7 @@ __global__ void kernUpdateVelocityBruteForce(int N, glm::vec3 *pos, int index = (blockIdx.x * blockDim.x) + threadIdx.x; if (index > N) return; glm::vec3 new_velocity = computeVelocityChange(N, index, pos, vel1) + vel1[index]; - glm::clamp(new_velocity, glm::vec3(0.0f), glm::vec3(1.0f) * maxSpeed); + new_velocity = glm::clamp(new_velocity, glm::vec3(0.0f), glm::vec3(1.0f) * maxSpeed); vel2[index] = new_velocity; // Compute a new velocity based on pos and vel1 // Clamp the speed From 5893c4f52d30d2d53afb027bc89b6a0b3105f6aa Mon Sep 17 00:00:00 2001 From: xinyulin Date: Sun, 9 Sep 2018 13:38:56 -0400 Subject: [PATCH 03/14] part2.3 --- src/kernel.cu | 299 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 295 insertions(+), 4 deletions(-) diff --git a/src/kernel.cu b/src/kernel.cu index 3412424..2413009 100644 --- a/src/kernel.cu +++ b/src/kernel.cu @@ -86,6 +86,9 @@ int *dev_gridCellEndIndices; // to this cell? // TODO-2.3 - consider what additional buffers you might need to reshuffle // the position and velocity data to be coherent within cells. +glm::vec3* dev_coherentPos; +glm::vec3 *dev_coherentVel1; + // LOOK-2.1 - Grid parameters based on simulation parameters. // These are automatically computed for you in Boids::initSimulation int gridCellCount; @@ -169,6 +172,38 @@ void Boids::initSimulation(int N) { gridMinimum.z -= halfGridWidth; // TODO-2.1 TODO-2.3 - Allocate additional buffers here. + + //int *dev_particleArrayIndices; // What index in dev_pos and dev_velX represents this particle? + //int *dev_particleGridIndices; // What grid cell is this particle in? + // // needed for use with thrust + //thrust::device_ptr dev_thrust_particleArrayIndices; + //thrust::device_ptr dev_thrust_particleGridIndices; + + //int *dev_gridCellStartIndices; // What part of dev_particleArrayIndices belongs + //int *dev_gridCellEndIndices; // to this cell? + + cudaMalloc((void**)&dev_particleArrayIndices, N * sizeof(int)); + checkCUDAErrorWithLine("cudaMalloc dev_particleArrayIndices failedŁĄ"); + + cudaMalloc((void**)&dev_particleGridIndices, N * sizeof(int)); + checkCUDAErrorWithLine("cudaMalloc dev_particleGridIndices failed!"); + + cudaMalloc((void**)&dev_gridCellStartIndices, gridCellCount * sizeof(int)); + checkCUDAErrorWithLine("cudaMalloc dev_gridCellStartIndices failed!"); + + cudaMalloc((void**)&dev_gridCellEndIndices, gridCellCount * sizeof(int)); + checkCUDAErrorWithLine("cudaMalloc dev_gridCellEndIndices failed!"); + + + cudaMalloc((void**)&dev_coherentPos, N * sizeof(glm::vec3)); + checkCUDAErrorWithLine("cudaMalloc dev_coherentPos failed!"); + + cudaMalloc((void**)&dev_coherentVel1, N * sizeof(glm::vec3)); + checkCUDAErrorWithLine("cudaMalloc dev_coherentVel1 failed!"); + + dev_thrust_particleArrayIndices = thrust::device_ptr(dev_particleArrayIndices); + dev_thrust_particleGridIndices = thrust::device_ptr(dev_particleGridIndices); + cudaDeviceSynchronize(); } @@ -363,6 +398,31 @@ __global__ void kernIdentifyCellStartEnd(int N, int *particleGridIndices, // Identify the start point of each cell in the gridIndices array. // This is basically a parallel unrolling of a loop that goes // "this index doesn't match the one before it, must be a new cell!" + + + int index = threadIdx.x + (blockIdx.x * blockDim.x); + int gridIdx = particleGridIndices[index]; + if (index > N) + { + return; + } + if (index == 0) + { + gridCellStartIndices[gridIdx] = 0; + return; + } + if (index == N - 1) + { + gridCellEndIndices[gridIdx] = N - 1; + } + + int oldGridIdx = particleGridIndices[index - 1]; + if (oldGridIdx != gridIdx) + { + gridCellStartIndices[gridIdx] = index; + gridCellEndIndices[oldGridIdx] = index - 1; + + } } __global__ void kernUpdateVelNeighborSearchScattered( @@ -379,6 +439,97 @@ __global__ void kernUpdateVelNeighborSearchScattered( // - Access each boid in the cell and compute velocity change from // the boids rules, if this boid is within the neighborhood distance. // - Clamp the speed change before putting the new speed in vel2 + + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + + + if (index < N) + { + int particleIdx = particleArrayIndices[index]; + glm::vec3 gridIdx3 = (pos[particleIdx] - gridMin) * inverseCellWidth; + + int neighborhoods[9]; + int neighborIdxx = glm::fract(gridIdx3.x) > 0.5 ? 1 : -1; + int neighborIdxy = glm::fract(gridIdx3.y) > 0.5 ? 1 : -1; + int neighborIdxz = glm::fract(gridIdx3.z) > 0.5 ? 1 : -1; + + glm::ivec3 offset[8] = { + glm::ivec3(0,0,0), + glm::ivec3(neighborIdxx, 0, 0), + glm::ivec3(0, neighborIdxy, 0), + glm::ivec3(0, 0, neighborIdxz), + glm::ivec3(neighborIdxx, neighborIdxy, 0), + glm::ivec3(neighborIdxx, 0, neighborIdxz), + glm::ivec3(0, neighborIdxy, neighborIdxz), + glm::ivec3(neighborIdxx, neighborIdxy, neighborIdxz) + }; + + for (int i = 0; i < 8; i++) + { + glm::ivec3 idx = glm::ivec3(gridIdx3) + offset[i]; + if ((idx.x < 0) || (idx.x > gridResolution) || (idx.y < 0) || (idx.y > gridResolution) || (idx.z < 0) || (idx.z > gridResolution)) + { + neighborhoods[i] = gridIndex3Dto1D(idx.x, idx.y, idx.z, gridResolution); + + } + else + { + neighborhoods[i] = -1; + } + + } + + glm::vec3 perceived_center = glm::vec3(0.0f, 0.0f, 0.0f); + glm::vec3 c = glm::vec3(0.0f, 0.0f, 0.0f); + glm::vec3 perceived_velocity = glm::vec3(0.0f, 0.0f, 0.0f); + int flag1, flag2 = 0; + for (int i = 0; i < 8; ++i) + { + int gridIdx = neighborhoods[i]; + + if (gridIdx == -1) + { + continue; + } + + int startIdx = gridCellStartIndices[gridIdx]; + int endIdx = gridCellEndIndices[gridIdx]; + + for (int j = startIdx; j < endIdx; ++j) + { + int boidIdx = particleArrayIndices[j]; + if (boidIdx != particleIdx ) + { + float m_distance = glm::distance(pos[boidIdx], pos[particleIdx]); + if (m_distance < rule1Distance) + { + perceived_center += pos[boidIdx]; + ++flag1; + } + if (m_distance < rule2Distance) + { + c -= (pos[boidIdx] - pos[particleIdx]); + } + if (m_distance < rule3Distance) + { + perceived_velocity += vel1[boidIdx]; + ++flag2; + } + } + } + + if (flag1 > 0) perceived_center /= flag1; + else perceived_center = pos[particleIdx]; + + if (flag2 > 0)perceived_velocity /= flag2; + } + + + glm::vec3 m_result = (perceived_center - pos[particleIdx]) * rule1Scale + c * rule2Scale + perceived_velocity * rule3Scale; + + if (glm::length(m_result) > maxSpeed) m_result = glm::normalize(m_result) * maxSpeed; + vel2[index] = m_result; + } } __global__ void kernUpdateVelNeighborSearchCoherent( @@ -398,20 +549,114 @@ __global__ void kernUpdateVelNeighborSearchCoherent( // - Access each boid in the cell and compute velocity change from // the boids rules, if this boid is within the neighborhood distance. // - Clamp the speed change before putting the new speed in vel2 + + int index = threadIdx.x + blockIdx.x * blockDim.x; + if (index < N) + { + glm::vec3 girdIdx3 = (pos[index] - gridMin) * inverseCellWidth; + int neighborhoods[8]; + int neighborIdxX = glm::fract(girdIdx3.x) > 0.5 ? 1 : -1; + int neighborIdxY = glm::fract(girdIdx3.y) > 0.5 ? 1 : -1; + int neighborIdxZ = glm::fract(girdIdx3.z) > 0.5 ? 1 : -1; + + glm::ivec3 offset[8] = { + glm::ivec3(0, 0, 0), + glm::ivec3(neighborIdxX, 0, 0), + glm::ivec3(0, neighborIdxY, 0), + glm::ivec3(0, 0, neighborIdxZ), + glm::ivec3(neighborIdxX, neighborIdxY, 0), + glm::ivec3(neighborIdxX, 0, neighborIdxZ), + glm::ivec3(0, neighborIdxY, neighborIdxZ), + glm::ivec3(neighborIdxX, neighborIdxY, neighborIdxZ) + }; + + for (int i = 0; i < 0; ++i) + { + glm::ivec3 idx = glm::ivec3(girdIdx3) + offset[i]; + if (idx.x < 0 || idx.x > gridResolution || idx.y < 0 || idx.y > gridResolution || idx.z < 0 || idx.z > gridResolution) { + neighborhoods[i] = gridIndex3Dto1D(idx.x, idx.y, idx.z, gridResolution); + } + else { + neighborhoods[i] = -1; + } + } + + glm::vec3 perceived_center = glm::vec3(0.0f, 0.0f, 0.0f); + glm::vec3 c = glm::vec3(0.0f, 0.0f, 0.0f); + glm::vec3 perceived_velocity = glm::vec3(0.0f, 0.0f, 0.0f); + int flag1, flag2 = 0; + + + for (int i = 0; i < 8; ++i) + { + int gridIdx = neighborhoods[i]; + if (gridIdx == -1) + { + continue; + } + int startIdx = gridCellStartIndices[gridIdx]; + int endIdx = gridCellEndIndices[gridIdx]; + + for (int j = startIdx; j < endIdx; ++j) + { + if (j != index) + { + float m_distance = glm::distance(pos[j], pos[index]); + if (m_distance < rule1Distance) + { + perceived_center += pos[j]; + ++flag1; + } + if (m_distance < rule2Distance) + { + c -= (pos[j] - pos[index]); + } + if (m_distance < rule3Distance) + { + perceived_velocity += vel1[j]; + ++flag2; + } + } + } + } + + if (flag1 > 0)perceived_center /= flag1; + else perceived_center = pos[index]; + + if (flag2 > 0) perceived_velocity /= flag2; + + glm::vec3 new_velocity = rule1Scale * (perceived_center - pos[index]) + rule2Scale * c + rule3Scale * perceived_velocity + vel1[index]; + if (glm::length(new_velocity) > maxSpeed) new_velocity = glm::normalize(new_velocity) * maxSpeed; + + vel2[index] = new_velocity; + } } + +__global__ void kernPosAndVel(int N, int* particelArrayIndices, glm::vec3* pos, + glm::vec3* vel1, glm::vec3 * s_pos, glm::vec3 * s_vel1) +{ + int index = (blockIdx.x * blockDim.x) + threadIdx.x; + if (index < N) + { + int idx = particelArrayIndices[index]; + s_pos[index] = pos[idx]; + s_vel1[index] = vel1[idx]; + } +} /** * Step the entire N-body simulation by `dt` seconds. */ void Boids::stepSimulationNaive(float dt) { // TODO-1.2 - use the kernels you wrote to step the simulation forward in time. - //kernCopyPositionsToVBO << > >(numObjects, dev_pos, vbodptr_positions, scene_scale); + dim3 fullBlocksPerGrid((numObjects + blockSize - 1) / blockSize); kernUpdateVelocityBruteForce << > > (numObjects, dev_pos, dev_vel1, dev_vel2); - kernUpdatePos << > >(numObjects, dt, dev_pos, dev_vel1); + kernUpdatePos << > >(numObjects, dt, dev_pos, dev_vel2); // TODO-1.2 ping-pong the velocity buffers - - std::swap(dev_vel1, dev_vel2); + glm::vec3 *temp = dev_vel1; + dev_vel1 = dev_vel2; + dev_vel2 = temp; } void Boids::stepSimulationScatteredGrid(float dt) { @@ -427,6 +672,23 @@ void Boids::stepSimulationScatteredGrid(float dt) { // - Perform velocity updates using neighbor search // - Update positions // - Ping-pong buffers as needed + + + dim3 fullBlocksPerGrid((numObjects + blockSize - 1) / blockSize); + + kernComputeIndices << > > (numObjects, gridSideCount, gridMinimum, gridInverseCellWidth, dev_pos, dev_particleArrayIndices, dev_particleGridIndices); + //thrust::sort_by_key(dev_particleGridIndices, dev_particleGridIndices + numObjects, dev_particleArrayIndices); + thrust::sort_by_key(dev_thrust_particleGridIndices, dev_thrust_particleGridIndices + numObjects, dev_thrust_particleArrayIndices); + + dim3 fullBlocksPerGridCell((gridCellCount + blockSize - 1) / blockSize); + kernResetIntBuffer << > >(gridCellCount, dev_gridCellStartIndices, -1); + kernResetIntBuffer << > >(gridCellCount, dev_gridCellEndIndices, -1); + kernIdentifyCellStartEnd << > > (numObjects, dev_particleGridIndices, dev_gridCellStartIndices, dev_gridCellEndIndices); + kernUpdateVelNeighborSearchScattered << > > (numObjects, gridSideCount, gridMinimum, gridInverseCellWidth, gridCellWidth, dev_gridCellStartIndices, dev_gridCellEndIndices, dev_particleArrayIndices, dev_pos, dev_vel1, dev_vel2); + kernUpdatePos << > >(numObjects, dt, dev_pos, dev_vel2); + glm::vec3 *temp = dev_vel1; + dev_vel1 = dev_vel2; + dev_vel2 = temp; } void Boids::stepSimulationCoherentGrid(float dt) { @@ -445,6 +707,28 @@ void Boids::stepSimulationCoherentGrid(float dt) { // - Perform velocity updates using neighbor search // - Update positions // - Ping-pong buffers as needed. THIS MAY BE DIFFERENT FROM BEFORE. + + dim3 fullBlocksPerGrid((numObjects + blockSize - 1) / blockSize); + kernComputeIndices << > >(numObjects, gridSideCount, gridMinimum, gridInverseCellWidth, dev_pos, dev_particleArrayIndices, dev_particleGridIndices); + thrust::sort_by_key(dev_thrust_particleGridIndices, dev_thrust_particleGridIndices + numObjects, dev_thrust_particleArrayIndices); + + dim3 fullBlocksPerGridCell((gridCellCount + blockSize - 1) / blockSize); + kernResetIntBuffer << > >(gridCellCount, dev_gridCellStartIndices, -1); + kernResetIntBuffer << > >(gridCellCount, dev_gridCellEndIndices, -1); + + kernIdentifyCellStartEnd << > >(numObjects, dev_particleGridIndices, dev_gridCellStartIndices, dev_gridCellEndIndices); + kernPosAndVel << > >(numObjects, dev_particleArrayIndices, dev_pos, dev_vel1, dev_coherentPos, dev_coherentVel1); + + kernUpdateVelNeighborSearchScattered << > >(numObjects, gridSideCount, gridMinimum, gridInverseCellWidth, gridCellWidth, dev_gridCellStartIndices, dev_gridCellEndIndices, dev_particleArrayIndices, dev_coherentPos, dev_coherentVel1, dev_vel2); + kernUpdatePos << > >(numObjects, dt, dev_coherentPos, dev_vel2); + + glm::vec3* temp1 = dev_pos; + dev_pos = dev_coherentPos; + dev_coherentPos = temp1; + + glm::vec3* temp2 = dev_vel1; + dev_vel1 = dev_vel2; + dev_vel2 = temp2; } void Boids::endSimulation() { @@ -453,6 +737,13 @@ void Boids::endSimulation() { cudaFree(dev_pos); // TODO-2.1 TODO-2.3 - Free any additional buffers here. + cudaFree(dev_gridCellEndIndices); + cudaFree(dev_gridCellStartIndices); + cudaFree(dev_particleArrayIndices); + cudaFree(dev_particleGridIndices); + + cudaFree(dev_coherentPos); + cudaFree(dev_coherentVel1); } void Boids::unitTest() { From 6785299d6dc7961acb10596f479b785fc995584d Mon Sep 17 00:00:00 2001 From: 460xlin <31527895+460xlin@users.noreply.github.com> Date: Sun, 9 Sep 2018 13:59:46 -0400 Subject: [PATCH 04/14] Update README.md --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d63a6a1..6e94bf8 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ **University of Pennsylvania, CIS 565: GPU Programming and Architecture, Project 1 - Flocking** -* (TODO) YOUR NAME HERE - * (TODO) [LinkedIn](), [personal website](), [twitter](), etc. -* Tested on: (TODO) Windows 22, i7-2222 @ 2.22GHz 22GB, GTX 222 222MB (Moore 2222 Lab) +* Xinyu Lin +[Linkedin](https://www.linkedin.com/in/xinyu-lin-138352125/) +* Tested on: Windows 10, Intel64 Family 6 Model 94 Stepping 3 GenuineIntel ~2600 Mhz, 16GB, GTX960M(Private Computer) -### (TODO: Your README) +### Screenshot of flocking boids -Include screenshots, analysis, etc. (Remember, this is public, so don't put -anything here that you don't want to share with the world.) +![](images/1.png) From 955d6ecfe0a45cd41d922ac2d830116058ecb34a Mon Sep 17 00:00:00 2001 From: xinyulin Date: Sun, 9 Sep 2018 14:00:40 -0400 Subject: [PATCH 05/14] image --- images/1.png | Bin 0 -> 37874 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/1.png diff --git a/images/1.png b/images/1.png new file mode 100644 index 0000000000000000000000000000000000000000..6d9e9328f7167cb1a0ef2a10ac0112ad240feedd GIT binary patch literal 37874 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 Date: Sun, 9 Sep 2018 14:17:58 -0400 Subject: [PATCH 06/14] 00 --- images/2.png | Bin 0 -> 38584 bytes src/main.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 images/2.png diff --git a/images/2.png b/images/2.png new file mode 100644 index 0000000000000000000000000000000000000000..0c599f66e9dcc03392d731095cd0dbae167e8cf7 GIT binary patch literal 38584 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

DlQL;*dJa-qM8~IWSkXuXT(-rnV@%SG-to?j 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

y<$lMa_e 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 literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index b82c8c6..063a977 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -14,7 +14,7 @@ // LOOK-2.1 LOOK-2.3 - toggles for UNIFORM_GRID and COHERENT_GRID #define VISUALIZE 1 -#define UNIFORM_GRID 0 +#define UNIFORM_GRID 1 #define COHERENT_GRID 0 // LOOK-1.2 - change this to adjust particle count in the simulation From bf6b50ed124b3d76d07d25a73f2af884451da408 Mon Sep 17 00:00:00 2001 From: 460xlin <31527895+460xlin@users.noreply.github.com> Date: Sun, 9 Sep 2018 14:24:13 -0400 Subject: [PATCH 07/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6e94bf8..0af80fd 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,4 @@ Project 1 - Flocking** ### Screenshot of flocking boids -![](images/1.png) +![](images/2.png) From 05f5285572f70156256b894dc49b6a9e637789ab Mon Sep 17 00:00:00 2001 From: xinyulin Date: Sun, 9 Sep 2018 21:34:39 -0400 Subject: [PATCH 08/14] performance a --- images/3.png | Bin 0 -> 16015 bytes src/kernel.cu | 6 +++--- src/main.cpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 images/3.png diff --git a/images/3.png b/images/3.png new file mode 100644 index 0000000000000000000000000000000000000000..508e74f9c2d52f67b32db500b41e0248def84d35 GIT binary patch literal 16015 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 zCPh#xtA;-Xt4u(dev_particleArrayIndices); - dev_thrust_particleGridIndices = thrust::device_ptr(dev_particleGridIndices); + dev_thrust_particleArrayIndices = thrust::device_pointer_cast(dev_particleArrayIndices); + dev_thrust_particleGridIndices = thrust::device_pointer_cast(dev_particleGridIndices); cudaDeviceSynchronize(); } @@ -528,7 +528,7 @@ __global__ void kernUpdateVelNeighborSearchScattered( glm::vec3 m_result = (perceived_center - pos[particleIdx]) * rule1Scale + c * rule2Scale + perceived_velocity * rule3Scale; if (glm::length(m_result) > maxSpeed) m_result = glm::normalize(m_result) * maxSpeed; - vel2[index] = m_result; + vel2[particleIdx] = m_result; } } diff --git a/src/main.cpp b/src/main.cpp index 063a977..5d66a17 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -13,12 +13,12 @@ // ================ // LOOK-2.1 LOOK-2.3 - toggles for UNIFORM_GRID and COHERENT_GRID -#define VISUALIZE 1 +#define VISUALIZE 0 #define UNIFORM_GRID 1 -#define COHERENT_GRID 0 +#define COHERENT_GRID 1 // LOOK-1.2 - change this to adjust particle count in the simulation -const int N_FOR_VIS = 5000; +const int N_FOR_VIS = 1000000; const float DT = 0.2f; /** From 01d3e5779290b2bed12d97948a78902a7c5b5efe Mon Sep 17 00:00:00 2001 From: xinyulin Date: Sun, 9 Sep 2018 22:00:25 -0400 Subject: [PATCH 09/14] pa --- images/3.png | Bin 16015 -> 17436 bytes images/4.png | Bin 0 -> 12841 bytes src/kernel.cu | 2 +- src/main.cpp | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 images/4.png diff --git a/images/3.png b/images/3.png index 508e74f9c2d52f67b32db500b41e0248def84d35..55bb2231c2ff16e4da0eee50e57fc81bc2f5db42 100644 GIT binary patch literal 17436 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 DrVd?O literal 16015 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 e8ml3pK{q-P@Vf15<=fh!e*Nu=N23zsp zn`K2G{y0fuU8lFYT{rb_@*6!l)Vk{r4(L!GEd!8)*s8QS)KrJSeG3}R`#xNAQzden zy1iDtx-C|K4#=+vF87Xl#MeCxlizVevXCRk0{^1(iX2j8Pxj9Ln;w)$kVJ9svq%4Z g{LMdBJrZ}06b-oJznc#Hdk4WYSrwTQsn Date: Sun, 9 Sep 2018 22:25:13 -0400 Subject: [PATCH 10/14] pic2 --- images/5.png | Bin 0 -> 45189 bytes src/kernel.cu | 2 +- src/main.cpp | 6 +++--- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 images/5.png diff --git a/images/5.png b/images/5.png new file mode 100644 index 0000000000000000000000000000000000000000..5733f6391b59ec6a755308dde4f02384b6ca5f5f GIT binary patch literal 45189 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 Date: Sun, 9 Sep 2018 22:30:57 -0400 Subject: [PATCH 11/14] Update README.md --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0af80fd..99c66a0 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,11 @@ Project 1 - Flocking** ### Screenshot of flocking boids -![](images/2.png) +![](images/5.png) +### Performance Analysis + +*Framerate change with increasing number of boids +![](images/3.png) + +*Framerate change with increasing block size in 5000 boids +![](images/4.png) From 071ae8117073112e791f7b4c52a5bfc578033c08 Mon Sep 17 00:00:00 2001 From: 460xlin <31527895+460xlin@users.noreply.github.com> Date: Sun, 9 Sep 2018 22:31:18 -0400 Subject: [PATCH 12/14] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 99c66a0..fc8af30 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ Project 1 - Flocking** ![](images/5.png) ### Performance Analysis -*Framerate change with increasing number of boids +* Framerate change with increasing number of boids ![](images/3.png) -*Framerate change with increasing block size in 5000 boids +* Framerate change with increasing block size in 5000 boids ![](images/4.png) From ad8d6f8b9cc7fa8ecf7af29605dad726b6b9eaad Mon Sep 17 00:00:00 2001 From: 460xlin <31527895+460xlin@users.noreply.github.com> Date: Sun, 9 Sep 2018 22:49:00 -0400 Subject: [PATCH 13/14] Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index fc8af30..dd5de0d 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,21 @@ Project 1 - Flocking** * Framerate change with increasing block size in 5000 boids ![](images/4.png) + +### Questions +1. For each implementation, how does changing the number of boids affect performance? Why do you think this is? + +* With the increasing number of boids, framerate and performance decrease. Because program needs to check each boid's neighborhoods and the times of checking increases. + +2. For each implementation, how does changing the block count and block size affect performance? Why do you think this is? + +* The block size and block cound does not affect perforance at all. + +3. For the coherent uniform grid: did you experience any performance improvements with the more coherent uniform grid? Was this the outcome you expected? Why or why not? + +* No, in my code, the coherent uniform grid is of the same speed as the uniform grid. + No, the performance of coherent uniform grid is expected to be better than uniform grid. + +4. Did changing cell width and checking 27 vs 8 neighboring cells affect performance? Why or why not? Be careful: it is insufficient (and possibly incorrect) to say that 27-cell is slower simply because there are more cells to check! + +* Yes, because the way we use to check 27 or 8 neighboring cells is a for-loop in each thread, so the increase of checking area will slow down the performance. From 19e2efb323610c14a58ba21e241e15fbf79fcced Mon Sep 17 00:00:00 2001 From: Xinyu Lin <31527895+460xlin@users.noreply.github.com> Date: Fri, 28 Sep 2018 15:49:40 -0400 Subject: [PATCH 14/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd5de0d..66f597b 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Project 1 - Flocking** * Xinyu Lin [Linkedin](https://www.linkedin.com/in/xinyu-lin-138352125/) -* Tested on: Windows 10, Intel64 Family 6 Model 94 Stepping 3 GenuineIntel ~2600 Mhz, 16GB, GTX960M(Private Computer) +* Tested on: Windows 10, Intel(R) Core(TM) i7-6700HQ CPU@2.60GHz, 16GB, GTX960M(Private Computer) ### Screenshot of flocking boids