|
Cytnx v0.9.5
|
Benefit from both side. One can do simple prototype on python side and easy transfer to C++ with small effort!
The avaliable types are :
| cytnx type | c++ type | Type object |
|---|---|---|
| cytnx_double | double | Type.Double |
| cytnx_float | float | Type.Float |
| cytnx_uint64 | uint64_t | Type.Uint64 |
| cytnx_uint32 | uint32_t | Type.Uint32 |
| cytnx_uint16 | uint16_t | Type.Uint16 |
| cytnx_int64 | int64_t | Type.Int64 |
| cytnx_int32 | int32_t | Type.Int32 |
| cytnx_int16 | int16_t | Type.Int16 |
| cytnx_complex128 | std::complex<double> | Type.ComplexDouble |
| cytnx_complex64 | std::complex<float> | Type.ComplexFloat |
| cytnx_bool | bool | Type.Bool |
See cytnx::linalg for further details
| func | inplace | CPU | GPU | callby tn |
|---|---|---|---|---|
| Add | x | Y | Y | Y |
| Sub | x | Y | Y | Y |
| Mul | x | Y | Y | Y |
| Div | x | Y | Y | Y |
| Cpr | x | Y | Y | Y |
| Mod | x | Y | Y | Y |
| +,+=[tn] | x | Y | Y | Y (Tensor.Add_) |
| -,-=[tn] | x | Y | Y | Y (Tensor.Sub_) |
| *,*=[tn] | x | Y | Y | Y (Tensor.Mul_) |
| /,/=[tn] | x | Y | Y | Y (Tensor.Div_) |
| == [tn] | x | Y | Y | Y (Tensor.Cpr_) |
| Svd | x | Y | Y | Y |
| *Svd_truncate | x | Y | Y | N |
| InvM | InvM_ | Y | Y | Y |
| Inv | Inv_ | Y | Y | Y |
| Conj | Conj_ | Y | Y | Y |
| Exp | Exp_ | Y | Y | Y |
| Expf | Expf_ | Y | Y | Y |
| *ExpH | x | Y | Y | N |
| *ExpM | x | Y | Y | N |
| Eigh | x | Y | Y | Y |
| Matmul | x | Y | Y | N |
| Diag | x | Y | Y | N |
| *Tensordot | x | Y | Y | N |
| Outer | x | Y | Y | N |
| Kron | x | Y | N | N |
| Norm | x | Y | Y | Y |
| Vectordot | x | Y | .Y | N |
| Tridiag | x | Y | N | N |
| *Dot | x | Y | Y | N |
| Eig | x | Y | N | Y |
| Pow | Pow_ | Y | Y | Y |
| Abs | Abs_ | Y | N | Y |
| Qr | x | Y | N | N |
| Qdr | x | Y | N | N |
| Min | x | Y | N | Y |
| Max | x | Y | N | Y |
| *Trace | x | Y | N | N |
iterative solver
\link cytnx::linalg::Lanczos_ER Lanczos_ER\endlink
* this is a high level linalg
^ this is temporary disable
. this is floating point type only
Tensor: zeros(), ones(), arange(), identity(), eye(),
See cytnx::random for further details
| func | Tn | Stor | CPU | GPU |
|---|---|---|---|---|
| *Make_normal | Y | Y | Y | Y |
| ^normal | Y | x | Y | Y |
^ this is generator
[Note] The difference of initializer and generator is that initializer is used to initialize the Tensor, and generator generates a new Tensor.
[Currently Linux only]
without CUDA
with CUDA
See test.cpp for using C++ . See test.py for using python
[Creator and Project manager] Kai-Hsin Wu (Boston Univ.) kaihsinwu@gmail.com Chang Teng Lin (NTU, Taiwan): major maintainer and developer Ke Hsu (NTU, Taiwan): major maintainer and developer Hao Ti (NTU, Taiwan): documentation and linalg Ying-Jer Kao (NTU, Taiwan): setuptool, cmake
Yen-Hsin Wu (NTU, Taiwan) Po-Kwan Wu (OSU) Wen-Han Kao (UMN, USA) Yu-Hsueh Chen (NTU, Taiwan) PoChung Chen (NCHU, Taiwan)
* example/DMRG:
https://www.tensors.net/dmrg