37#ifndef MMA_CUDA_KERNEL_H
38#define MMA_CUDA_KERNEL_H
66 const T zeta,
const T z,
const int m) {
72 (
T)1.0 / (d[
tj] + mu[
tj] / y[
tj]);
110 for (
int j = 0;
j < m;
j++) {
116 for (
int j = 0;
j < m;
j++) {
139 if (
tid == 0 &&
abs(
A[0]) > (
T)1
e-12)
b[0] /=
A[0];
144 for (
int k = 0; k < n; k++) {
149 for (
int i = k + 1; i < n; i++) {
158 for (
int j = k;
j < n;
j++) {
159 T temp =
A[k * n +
j];
174 for (
int i =
tid + k + 1; i < n; i +=
blockDim.x) {
177 for (
int j = k + 1;
j < n;
j++) {
188 for (
int j = 0;
j < i;
j++) {
196 for (
int i = n - 1 -
tid; i >= 0; i -=
blockDim.x) {
199 for (
int j = i + 1;
j < n;
j++) {
202 if (
abs(
A[i * n + i]) > (
T)1
e-12) {
203 b[i] =
sum /
A[i * n + i];
261 const T eps = (
sizeof(
T) ==
sizeof(
float)) ?
299 const int m,
const int n) {
307 for (
int i = 0; i < m; ++i) {
308 acc += pij[i +
tj * m] * lambda[i];
341template<
typename T >
345 const T asydecr,
const T asyincr,
const int n) {
363 (
prod >
T(0)) ? asyincr :
T(1);
431 for (
int i = 0; i < m; ++i) {
432 int idx = i +
tj * m;
490 for (
int i = 0; i < m; ++i) {
491 const int idx = i +
tj * m;
527 for (
int i = 0; i < m; ++i) {
576 for (
int i = 0; i < m; ++i) {
592 if (
idx >= n)
return;
728 for (
int i = 0; i < m; i++) {
767 for (
int i = 0; i < m; i++) {
768 int idx = i +
tj * m;
781 const T* eta,
const T* lambda,
const int n,
const int m) {
786 for (
int i = 0; i < m; i++) {
787 sum =
sum + pij[
tj *m+ i] * lambda[i];
793 eta[
tj] / (beta[
tj] - x[
tj]);
816 for (
int i =
idx; i < n; i +=
str)
839template<
typename T >
841 const int n,
const int m,
const int k) {
851 for (
int i =
idx; i < n; i +=
str)
853 sum += a[m * i + k ];
869template<
typename T >
882 for (
int i =
idx; i < n; i +=
str)
952template<
typename T >
955 const int m,
const int k0,
const int k1) {
965 for (
int i =
idx; i < n; i +=
str)
987 const int n,
const int m) {
1000 for (
int i0 = 0;
i0 < m;
i0++) {
1001 for (
int i1 = 0;
i1 < m;
i1++) {
1002 temp[
tj +
i0 * (n + 1) +
i1 * (m + 1) * (n + 1)] =
GG[
i0 * n +
tj] *
1010template <
typename T>
1017 for(
int i=0;i<m;i++){
1025template <
typename T>
1036template <
typename T>
1047template <
typename T>
1071 for (
int i = 0; i < m; ++i) {
1079 - xsi[
tj] + eta[
tj];
1084template <
typename T>
1095template <
typename T>
1107 for (
int i =
idx; i < n; i +=
str) {
1126template <
typename T>
1129 const T d,
const int n) {
1137template <
typename T>
1149template<
typename T >
1161 for (
int i =
idx; i < n; i +=
str)
1181template<
typename T >
1193 for (
int i =
idx; i < n; i +=
str)
1213template <
typename T>
1221 for (
int i = 0; i < m; i++) {
1233template <
typename T>
1238 const int n,
const int m) {
1240 if (
tj >= n)
return;
1248 for (
int i = 0; i < m; i++) {
1257 rex =
rex + (-xsi + eta);
1265template <
typename T>
1276 template<
typename T >
1286 for (
int i =
idx; i<n ; i +=
str)
1304 template<
typename T >
1318 for (
int i =
idx; i < n; i+=
str) {
1340template <
typename T>
1342 const T c,
const int n) {
1349template <
typename T>
1358template <
typename T>
1372template <
typename T>
1377 const T zeta,
const T z,
const int m) {
1382 1.0/ (d[
tj] + mu[
tj] / y[
tj]));
1387 AA[
tj+
tj*(m+1)]= -zeta/z;
1390template <
typename T>