update hip

This commit is contained in:
James McClure
2022-05-12 06:58:10 -04:00
parent 0e769186a5
commit ffe4bdd917

View File

@@ -148,8 +148,8 @@ __global__ void dvc_ScaLBL_D3Q7_Membrane_AssignLinkCoef_halo(
} }
__global__ void dvc_ScaLBL_D3Q7_Membrane_Unpack(int q, __global__ void dvc_ScaLBL_D3Q7_Membrane_Unpack(int q,
int *d3q7_recvlist, int *d3q7_linkList, int start, int nlinks, int count, int *d3q7_recvlist, double *recvbuf, int count,
double *recvbuf, double *dist, int N, double *coef) { double *dist, int N, double *coef) {
//.................................................................................... //....................................................................................
// Unack distribution from the recv buffer // Unack distribution from the recv buffer
// Distribution q matche Cqx, Cqy, Cqz // Distribution q matche Cqx, Cqy, Cqz
@@ -163,41 +163,21 @@ __global__ void dvc_ScaLBL_D3Q7_Membrane_Unpack(int q,
int S = count/NBLOCKS/NTHREADS + 1; int S = count/NBLOCKS/NTHREADS + 1;
for (int s=0; s<S; s++){ for (int s=0; s<S; s++){
//........Get 1-D index for this thread.................... //........Get 1-D index for this thread....................
link = S*blockIdx.x*blockDim.x + s*blockDim.x + threadIdx.x; idx = S*blockIdx.x*blockDim.x + s*blockDim.x + threadIdx.x;
if (idx < count){
/* First unpack the regular links */ n = d3q7_recvlist[idx];
if (link < nlinks) { // update link based on mass transfer coefficients
// get the index for the recv list (deal with reordering of links) if (!(n < 0)){
idx = d3q7_linkList[start+link]; aq = coef[2*idx];
// get the distribution index ap = coef[2*idx+1];
n = d3q7_recvlist[start+idx]; fq = dist[q * N + n];
if (n > N){ fp = recvbuf[idx];
printf(" MEMBRANE ERROR: q=%i, idx=%i, n=%i, Np=%i \n",q,idx,n,N); fqq = (1-aq)*fq+ap*fp;
} dist[q * N + n] = fqq;
else if (!(n < 0)){
fp = recvbuf[start + idx];
dist[q * N + n] = fp;
} }
} }
// else if (link < count){
// /* second enforce custom rule for membrane links */
// // get the index for the recv list (deal with reordering of links)
// idx = d3q7_linkList[link];
// // get the distribution index
// n = d3q7_recvlist[start+idx];
// // update link based on mass transfer coefficients
// if (!(n < 0)){
// aq = coef[2*(link-nlinks)];
// ap = coef[2*(link-nlinks)+1];
// fq = dist[q * N + n];
// fp = recvbuf[start + idx];
// fqq = (1-aq)*fq+ap*fp;
// dist[q * N + n] = fqq;
// }
// }
} }
} }
__global__ void dvc_ScaLBL_D3Q7_Membrane_IonTransport(int *membrane, double *coef, __global__ void dvc_ScaLBL_D3Q7_Membrane_IonTransport(int *membrane, double *coef,
double *dist, double *Den, int memLinks, int Np){ double *dist, double *Den, int memLinks, int Np){
int link,iq,ip,nq,np; int link,iq,ip,nq,np;
@@ -967,13 +947,13 @@ extern "C" void ScaLBL_D3Q7_Membrane_AssignLinkCoef_halo(
extern "C" void ScaLBL_D3Q7_Membrane_Unpack(int q, extern "C" void ScaLBL_D3Q7_Membrane_Unpack(int q,
int *d3q7_recvlist, int *d3q7_linkList, int start, int nlinks, int count, int *d3q7_recvlist, double *recvbuf, int count,
double *recvbuf, double *dist, int N, double *coef) { double *dist, int N, double *coef){
int GRID = count / 1024 + 1; int GRID = count / NTHREADS + 1;
dvc_ScaLBL_D3Q7_Membrane_Unpack<<<GRID,1024 >>>(q, d3q7_recvlist, d3q7_linkList, start, nlinks, count, dvc_ScaLBL_D3Q7_Membrane_Unpack<<<GRID,NTHREADS >>>(q, d3q7_recvlist, recvbuf,count,
recvbuf, dist, N, coef) ; dist, N, coef);
hipError_t err = hipGetLastError(); hipError_t err = hipGetLastError();
if (hipSuccess != err){ if (hipSuccess != err){