37#ifndef MMA_HIP_KERNEL_H
38#define MMA_HIP_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];
262 const T eps = (
sizeof(
T) ==
sizeof(
float)) ?
300 const int m,
const int n) {
308 for (
int i = 0; i < m; ++i) {
309 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) {
573 for (
int i = 0; i < m; ++i) {
589 if (
idx >= n)
return;
606template<
typename T >
617 for (
int i =
idx; i < n; i +=
str) {
713 for (
int i = 0; i < m; i++) {
752 for (
int i = 0; i < m; i++) {
753 int idx = i +
tj * m;
765 const T* eta,
const T* lambda,
const int n,
const int m) {
770 for (
int i = 0; i < m; i++) {
771 sum =
sum + pij[
tj *m+ i] * lambda[i];
777 eta[
tj] / (beta[
tj] - x[
tj]);
796 for (
int i =
idx; i < n; i +=
str)
819template<
typename T >
821 const int n,
const int m,
const int k) {
831 for (
int i =
idx; i < n; i +=
str)
833 sum += a[m * i + k ];
849template<
typename T >
862 for (
int i =
idx; i < n; i +=
str)
931template<
typename T >
934 const int m,
const int k0,
const int k1) {
944 for (
int i =
idx; i < n; i +=
str)
966 const int n,
const int m) {
979 for (
int i0 = 0;
i0 < m;
i0++) {
980 for (
int i1 = 0;
i1 < m;
i1++) {
981 temp[
tj +
i0 * (n + 1) +
i1 * (m + 1) * (n + 1)] =
GG[
i0 * n +
tj] *
996 for(
int i=0;i<m;i++){
1004template <
typename T>
1015template <
typename T>
1025template <
typename T>
1049 for (
int i = 0; i < m; ++i) {
1057 - xsi[
tj] + eta[
tj];
1061template <
typename T>
1072template<
typename T >
1084 for (
int i =
idx; i < n; i +=
str)
1105template <
typename T>
1108 const T d,
const int n) {
1116template <
typename T>
1128template<
typename T >
1140 for (
int i =
idx; i < n; i +=
str)
1160template<
typename T >
1172 for (
int i =
idx; i < n; i +=
str)
1192template <
typename T>
1200 for (
int i = 0; i < m; i++) {
1212template <
typename T>
1217 const int n,
const int m) {
1219 if (
tj >= n)
return;
1227 for (
int i = 0; i < m; i++) {
1236 rex =
rex + (-xsi + eta);
1244template <
typename T>
1255 template<
typename T >
1265 for (
int i =
idx; i<n ; i +=
str)
1283 template<
typename T >
1297 for (
int i =
idx; i < n; i+=
str) {
1319template <
typename T>
1321 const T c,
const int n) {
1328template <
typename T>
1337template <
typename T>
1351template <
typename T>
1356 const T zeta,
const T z,
const int m) {
1361 1.0/ (d[
tj] + mu[
tj] / y[
tj]));
1366 AA[
tj+
tj*(m+1)]= -zeta/z;
1369template <
typename T>