Changes

Jump to: navigation, search

GPU610/TeamKCM

1,439 bytes added, 21:58, 1 December 2014
Using Shared Memory
===== Assignment 2 Code =====
<syntaxhighlight lang="cpp">
__global__ void kernel(double* solutionNew, double* solutionLast, double* x, int n, float dt, float dx, float K, int j){
int k = blockIdx.x * blockDim.x + threadIdx.x;
if( k < n){
k += 1;
solutionNew[k] = solutionLast[k]+dt*(K/dx/dx*
(solutionLast[k-1]+solutionLast[k+1]-2.*solutionLast[k]
+(x[k]*j*dt*1000))
);
}
}
</syntaxhighlight>
===== Improved Code =====
<syntaxhighlight lang="cpp">
__global__ void kernel(double* solutionNew, double* solutionLast, double* x, int n, float dt, float dx, float K, int j){
int k = blockIdx.x * blockDim.x + threadIdx.x;
double *t_c;
__shared__ double s_c[1024];
if ( n < 1024 && k < (n + 1))
s_c[k] = solutionLast[k];
__syncthreads();
if( n < 1024) t_c = s_c;
else t_c = solutionLast;
if( k ==0){ solutionNew[k] =10; } else if( k == Improved Code ==n){ solutionNew[k] =120; } if( k < n){ k +=1; solutionNew[k] =t_c[k]+dt*(K/dx/dx* (t_c[k-1]+t_c[k+1]-2.*t_c[k] +(x[k]*j*dt*1000)) ); } }</syntaxhighlight>

Navigation menu