74 throw std::runtime_error(
"Invalid BLAS_Precision value");
96 return "CblasNoTrans";
100 return "CblasConjTrans";
102 throw std::runtime_error(
"Invalid BLAS_Transpose value");
115 throw std::runtime_error(
"Invalid BLAS_Transpose value");
135 return "CblasRowMajor";
137 return "CblasColMajor";
148 throw std::runtime_error(
"Invalid BLAS_Layout value");
192 const std::vector<std::string>&
outputs,
193 const std::vector<std::string>&
inputs,
216 BLASLibDependency() =
default;
220 static BLASLibDependency inst;
224 std::string_view
name()
const override {
228#if defined(__APPLE__)
229 out_list.push_back(
"Accelerate/Accelerate.h");
231 out_list.push_back(
"cblas.h");
235 static std::vector<std::string_view> ids{
"bfloat16"};
size_t element_id() const
const DebugInfo & debug_info() const
Definition code_snippet_factory.h:51
const std::vector< std::string > & outputs() const
Get output connector names (const).
const std::vector< std::string > & inputs() const
Get input connector names (const).
Definition data_flow_graph.h:29
graph::Vertex vertex() const
Get the graph vertex for this node.
const LibraryNodeCode & code() const
Get the operation code.
const ImplementationType & implementation_type() const
Get the implementation type (const).
Base class for mathematical library nodes with expansion support.
Definition math_node.h:68
void enumerate_includes(std::vector< std::string > &out_list) const override
Definition blas_node.h:227
std::vector< std::string_view > & globally_unique_ids() const override
Definition blas_node.h:234
std::string_view name() const override
Definition blas_node.h:224
static const BLASLibDependency * instance()
Definition blas_node.h:219
std::optional< double > constant_input(const std::string &conn) const
The value of the scalar input conn if a constant feeds it.
types::PrimitiveType scalar_primitive() const
Get the corresponding scalar primitive type.
BLAS_Precision precision() const
Get the precision/data type.
BLASNode(size_t element_id, const DebugInfo &debug_info, const graph::Vertex vertex, data_flow::DataFlowGraph &parent, const data_flow::LibraryNodeCode &code, const std::vector< std::string > &outputs, const std::vector< std::string > &inputs, const data_flow::ImplementationType &implementation_type, const BLAS_Precision &precision)
Construct a BLAS node.
BLAS_Precision precision_
Floating-point precision for the operation.
Definition blas_node.h:171
Mathematical library node base class with expansion support.
StringEnum ImplementationType
Implementation type identifier for library nodes.
Definition library_node.h:75
StringEnum LibraryNodeCode
Definition library_node.h:65
boost::graph_traits< Graph >::vertex_descriptor Vertex
Definition graph.h:25
Definition batched_gemm_node.h:13
constexpr char BLAS_Transpose_to_char(BLAS_Transpose transpose)
Definition blas_node.h:106
BLAS_Precision
Precision/data type for BLAS operations.
Definition blas_node.h:52
@ z
Definition blas_node.h:58
@ d
Definition blas_node.h:56
@ h
Definition blas_node.h:54
@ c
Definition blas_node.h:57
@ invalid
Definition blas_node.h:53
@ s
Definition blas_node.h:55
data_flow::ImplementationType ImplementationType_BLAS
BLAS implementation type Uses standard CPU BLAS libraries (OpenBLAS, Intel MKL, etc....
Definition blas_node.h:156
BLAS_Transpose
Transpose operation for BLAS matrices.
Definition blas_node.h:87
@ No
Definition blas_node.h:88
@ Trans
Definition blas_node.h:89
@ ConjTrans
Definition blas_node.h:90
constexpr std::string_view BLAS_Layout_to_short_string(BLAS_Layout layout)
Definition blas_node.h:141
BLAS_Layout
Memory layout for BLAS matrices.
Definition blas_node.h:127
@ RowMajor
Definition blas_node.h:128
@ ColMajor
Definition blas_node.h:129
constexpr std::string_view BLAS_Layout_to_string(BLAS_Layout layout)
Definition blas_node.h:132
constexpr std::string_view BLAS_Precision_to_string(BLAS_Precision precision)
Definition blas_node.h:61
constexpr std::string_view BLAS_Transpose_to_string(BLAS_Transpose transpose)
Definition blas_node.h:93
Definition batched_gemm_node.h:12
PrimitiveType
Enumeration of all primitive data types supported by sdfglib.
Definition type.h:35