Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F106925989
chol.hpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Wed, Apr 2, 14:52
Size
2 KB
Mime Type
text/x-c
Expires
Fri, Apr 4, 14:52 (1 d, 23 h)
Engine
blob
Format
Raw Data
Handle
25307466
Attached To
rLAMMPS lammps
chol.hpp
View Options
#pragma once
#ifndef __CHOL_HPP__
#define __CHOL_HPP__
/// \file chol.hpp
/// \brief Incomplete Cholesky factorization front interface.
/// \author Kyungjoo Kim (kyukim@sandia.gov)
#include "util.hpp"
#include "control.hpp"
#include "partition.hpp"
namespace
Tacho
{
using
namespace
std
;
// tasking interface
// * default behavior is for non-by-blocks tasks
// * control is only used for by-blocks algorithms
// ===============================================
template
<
int
ArgUplo
,
int
ArgAlgo
,
int
ArgVariant
=
Variant
::
One
,
template
<
int
,
int
>
class
ControlType
=
Control
>
class
Chol
{
public
:
// function interface
// ==================
template
<
typename
ExecViewType
>
KOKKOS_INLINE_FUNCTION
static
int
invoke
(
typename
ExecViewType
::
policy_type
&
policy
,
const
typename
ExecViewType
::
policy_type
::
member_type
&
member
,
typename
ExecViewType
::
matrix_type
&
A
);
// task-data parallel interface
// ============================
template
<
typename
ExecViewType
>
class
TaskFunctor
{
public
:
typedef
typename
ExecViewType
::
policy_type
policy_type
;
typedef
typename
policy_type
::
member_type
member_type
;
typedef
int
value_type
;
private
:
typename
ExecViewType
::
matrix_type
_A
;
policy_type
_policy
;
public
:
KOKKOS_INLINE_FUNCTION
TaskFunctor
(
const
policy_type
&
P
,
const
typename
ExecViewType
::
matrix_type
&
A
)
:
_A
(
A
),
_policy
(
P
)
{
}
string
Label
()
const
{
return
"Chol"
;
}
// task execution
KOKKOS_INLINE_FUNCTION
void
apply
(
value_type
&
r_val
)
{
r_val
=
Chol
::
invoke
<
ExecViewType
>
(
_policy
,
_policy
.
member_single
(),
_A
);
}
// task-data execution
KOKKOS_INLINE_FUNCTION
void
apply
(
const
member_type
&
member
,
value_type
&
r_val
)
{
const
int
result
=
Chol
::
invoke
<
ExecViewType
>
(
_policy
,
member
,
_A
);
if
(
0
==
member
.
team_rank
()
)
{
r_val
=
result
;
}
}
};
};
}
// unblocked version blas operations
#include "scale.hpp"
// blocked version blas operations
#include "gemm.hpp"
#include "trsm.hpp"
#include "herk.hpp"
// cholesky
#include "chol_u.hpp"
#endif
Event Timeline
Log In to Comment