TRIQS/nda 2.0.0
Multi-dimensional array library for C++
Loading...
Searching...
No Matches
cutensor_interface.hpp
Go to the documentation of this file.
1// Copyright (c) 2024--present, The Simons Foundation
2// This file is part of TRIQS/nda and is licensed under the Apache License, Version 2.0.
3// SPDX-License-Identifier: Apache-2.0
4// See LICENSE in the root of this distribution for details.
5
10
11#pragma once
12
13#include "../tools.hpp"
14
15#include <complex>
16#include <string_view>
17
18namespace nda::tensor::device {
19
20 void set_synchronization(bool do_sync) noexcept;
21 bool get_synchronization() noexcept;
22
23 void permute(float alpha, const_tensor_view<float> A, std::string_view idx_A, tensor_view<float> B, std::string_view idx_B);
24 void permute(double alpha, const_tensor_view<double> A, std::string_view idx_A, tensor_view<double> B, std::string_view idx_B);
25 void permute(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, tensor_view<std::complex<float>> B,
26 std::string_view idx_B);
27 void permute(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A, tensor_view<std::complex<double>> B,
28 std::string_view idx_B);
29
30 void elementwise_binary(float alpha, const_tensor_view<float> A, std::string_view idx_A, float gamma, const_tensor_view<float> C,
31 std::string_view idx_C, tensor_view<float> D, binary_op op_AC = binary_op::SUM);
32 void elementwise_binary(double alpha, const_tensor_view<double> A, std::string_view idx_A, double gamma, const_tensor_view<double> C,
33 std::string_view idx_C, tensor_view<double> D, binary_op op_AC = binary_op::SUM);
34 void elementwise_binary(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, std::complex<float> gamma,
35 const_tensor_view<std::complex<float>> C, std::string_view idx_C, tensor_view<std::complex<float>> D,
36 binary_op op_AC = binary_op::SUM);
37 void elementwise_binary(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A, std::complex<double> gamma,
38 const_tensor_view<std::complex<double>> C, std::string_view idx_C, tensor_view<std::complex<double>> D,
39 binary_op op_AC = binary_op::SUM);
40
41 void elementwise_trinary(float alpha, const_tensor_view<float> A, std::string_view idx_A, float beta, const_tensor_view<float> B,
42 std::string_view idx_B, float gamma, const_tensor_view<float> C, std::string_view idx_C, tensor_view<float> D,
43 binary_op op_AB = binary_op::SUM, binary_op op_ABC = binary_op::SUM);
44 void elementwise_trinary(double alpha, const_tensor_view<double> A, std::string_view idx_A, double beta, const_tensor_view<double> B,
45 std::string_view idx_B, double gamma, const_tensor_view<double> C, std::string_view idx_C, tensor_view<double> D,
46 binary_op op_AB = binary_op::SUM, binary_op op_ABC = binary_op::SUM);
47 void elementwise_trinary(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, std::complex<float> beta,
48 const_tensor_view<std::complex<float>> B, std::string_view idx_B, std::complex<float> gamma,
49 const_tensor_view<std::complex<float>> C, std::string_view idx_C, tensor_view<std::complex<float>> D,
50 binary_op op_AB = binary_op::SUM, binary_op op_ABC = binary_op::SUM);
51 void elementwise_trinary(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A, std::complex<double> beta,
52 const_tensor_view<std::complex<double>> B, std::string_view idx_B, std::complex<double> gamma,
53 const_tensor_view<std::complex<double>> C, std::string_view idx_C, tensor_view<std::complex<double>> D,
54 binary_op op_AB = binary_op::SUM, binary_op op_ABC = binary_op::SUM);
55
56 void reduce(float alpha, const_tensor_view<float> A, std::string_view idx_A, float beta, const_tensor_view<float> C, std::string_view idx_C,
57 tensor_view<float> D, binary_op op_reduce = binary_op::SUM);
58 void reduce(double alpha, const_tensor_view<double> A, std::string_view idx_A, double beta, const_tensor_view<double> C, std::string_view idx_C,
59 tensor_view<double> D, binary_op op_reduce = binary_op::SUM);
60 void reduce(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, std::complex<float> beta,
61 const_tensor_view<std::complex<float>> C, std::string_view idx_C, tensor_view<std::complex<float>> D,
62 binary_op op_reduce = binary_op::SUM);
63 void reduce(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A, std::complex<double> beta,
64 const_tensor_view<std::complex<double>> C, std::string_view idx_C, tensor_view<std::complex<double>> D,
65 binary_op op_reduce = binary_op::SUM);
66
67 void contract(float alpha, const_tensor_view<float> A, std::string_view idx_A, const_tensor_view<float> B, std::string_view idx_B, float beta,
68 const_tensor_view<float> C, std::string_view idx_C, tensor_view<float> D);
69 void contract(double alpha, const_tensor_view<double> A, std::string_view idx_A, const_tensor_view<double> B, std::string_view idx_B, double beta,
70 const_tensor_view<double> C, std::string_view idx_C, tensor_view<double> D);
71 void contract(std::complex<float> alpha, const_tensor_view<std::complex<float>> A, std::string_view idx_A, const_tensor_view<std::complex<float>> B,
72 std::string_view idx_B, std::complex<float> beta, const_tensor_view<std::complex<float>> C, std::string_view idx_C,
73 tensor_view<std::complex<float>> D);
74 void contract(std::complex<double> alpha, const_tensor_view<std::complex<double>> A, std::string_view idx_A,
75 const_tensor_view<std::complex<double>> B, std::string_view idx_B, std::complex<double> beta,
76 const_tensor_view<std::complex<double>> C, std::string_view idx_C, tensor_view<std::complex<double>> D);
77
78} // namespace nda::tensor::device
binary_op
Binary operations for tensor operations.
Definition tools.hpp:67
tensor_view< const T > const_tensor_view
Alias for a tensor_view with const value type.
Definition tools.hpp:234
Provides various traits and utilities for the tensor interface.