@Cache_this(limit=<NUM_LIT:3>, ignore_args=(<NUM_LIT:0>,))<EOL><INDENT>def psicomputations(self, kern, Z, variational_posterior, return_psi2_n=False):<DEDENT>
variance, lengthscale = kern.variance, kern.lengthscale<EOL>N,M,Q = self.get_dimensions(Z, variational_posterior)<EOL>self._initGPUCache(N,M,Q)<EOL>self.sync_params(lengthscale, Z, variational_posterior.mean, variational_posterior.variance, variational_posterior.binary_prob)<EOL>psi1_gpu = self.gpuCache['<STR_LIT>']<EOL>psi2_gpu = self.gpuCache['<STR_LIT>']<EOL>psi2n_gpu = self.gpuCache['<STR_LIT>']<EOL>l_gpu = self.gpuCache['<STR_LIT>']<EOL>Z_gpu = self.gpuCache['<STR_LIT>']<EOL>mu_gpu = self.gpuCache['<STR_LIT>']<EOL>S_gpu = self.gpuCache['<STR_LIT>']<EOL>log_denom1_gpu = self.gpuCache['<STR_LIT>']<EOL>log_denom2_gpu = self.gpuCache['<STR_LIT>']<EOL>log_gamma_gpu = self.gpuCache['<STR_LIT>']<EOL>log_gamma1_gpu = self.gpuCache['<STR_LIT>']<EOL>psi0 = np.empty((N,))<EOL>psi0[:] = variance<EOL>self.g_psi1computations.prepared_call((self.blocknum,<NUM_LIT:1>),(self.threadnum,<NUM_LIT:1>,<NUM_LIT:1>),psi1_gpu.gpudata, log_denom1_gpu.gpudata, log_gamma_gpu.gpudata, log_gamma1_gpu.gpudata, np.float64(variance),l_gpu.gpudata,Z_gpu.gpudata,mu_gpu.gpudata,S_gpu.gpudata, np.int32(N), np.int32(M), np.int32(Q))<EOL>self.g_psi2computations.prepared_call((self.blocknum,<NUM_LIT:1>),(self.threadnum,<NUM_LIT:1>,<NUM_LIT:1>),psi2_gpu.gpudata, psi2n_gpu.gpudata, log_denom2_gpu.gpudata, log_gamma_gpu.gpudata, log_gamma1_gpu.gpudata, np.float64(variance),l_gpu.gpudata,Z_gpu.gpudata,mu_gpu.gpudata,S_gpu.gpudata, np.int32(N), np.int32(M), np.int32(Q))<EOL>if self.GPU_direct:<EOL><INDENT>return psi0, psi1_gpu, psi2_gpu<EOL><DEDENT>else:<EOL><INDENT>return psi0, psi1_gpu.get(), psi2_gpu.get()<EOL><DEDENT>
Z - MxQ
mu - NxQ
S - NxQ