LIBINT 2.7.2
graph_registry.h
1/*
2 * Copyright (C) 2004-2021 Edward F. Valeev
3 *
4 * This file is part of Libint.
5 *
6 * Libint is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * Libint is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with Libint. If not, see <http://www.gnu.org/licenses/>.
18 *
19 */
20
21#ifndef _libint2_src_bin_libint_tforms_h_
22#define _libint2_src_bin_libint_tforms_h_
23
24#include <string>
25#include <memory.h>
26
27namespace libint2 {
28
34 public:
37
38 GraphRegistry* clone() const;
39
41 bool accumulate_targets() const { return accumulate_targets_; }
42 void accumulate_targets(bool at) { accumulate_targets_ = at; }
44 bool return_targets() const { return return_targets_; }
45 void return_targets(bool rt) { return_targets_ = rt; }
47 unsigned int unroll_threshold() const { return unroll_threshold_; }
48 void unroll_threshold(unsigned int ut) {
49 unroll_threshold_ = ut;
50 }
53 bool uncontract() const { return uncontract_; }
54 void uncontract(bool uc) { uncontract_ = uc; }
56 bool ignore_missing_prereqs() const { return ignore_missing_prereqs_; }
57 void ignore_missing_prereqs(bool imp) { ignore_missing_prereqs_ = imp; }
59 bool do_cse() const { return do_cse_; }
60 void do_cse(bool dc) { do_cse_ = dc; }
62 const std::string& stack_name() const { return stack_name_; }
63 void stack_name(const std::string& stack_name) { stack_name_ = stack_name; }
65 bool condense_expr() const { return condense_expr_; }
66 void condense_expr(bool ce) { condense_expr_ = ce; }
68 int current_timer() const { return current_timer_; }
69 void current_timer(int ct) { current_timer_ = ct; }
70
71 private:
72 bool accumulate_targets_;
73 bool return_targets_;
74 unsigned int unroll_threshold_;
75 bool uncontract_;
76 bool ignore_missing_prereqs_;
77 bool do_cse_;
78 bool condense_expr_;
79 std::string stack_name_;
80 int current_timer_;
81 };
82
87 public:
90
92 bool accumulate_targets_directly() const { return accumulate_targets_directly_; }
93 void accumulate_targets_directly(bool atd) { accumulate_targets_directly_ = atd; }
95 MemoryManager::Size size_of_target_accum() const { return size_of_target_accum_; }
96 void size_of_target_accum(const MemoryManager::Size& sota) { size_of_target_accum_ = sota; }
97
98 private:
99 bool accumulate_targets_directly_;
100 MemoryManager::Size size_of_target_accum_;
101 };
102
103}
104
105#endif
106
Externally accessible registry of information about a graph.
Definition: graph_registry.h:33
bool do_cse() const
Do Common Subexpression Elimination (CSE)? The default is false.
Definition: graph_registry.h:59
bool condense_expr() const
Condense expressions? The default is false.
Definition: graph_registry.h:65
const std::string & stack_name() const
Names the primary scratch space for the intermediates. The default is "libint->stack".
Definition: graph_registry.h:62
bool accumulate_targets() const
Accumulate (true) or assign (false) target vertices? The default is to assign.
Definition: graph_registry.h:41
bool ignore_missing_prereqs() const
Ignore missing prerequisites – generate the code as is, without generating code for the prerequisites...
Definition: graph_registry.h:56
int current_timer() const
if -1, no profiling, otherwise, indicates the current timer
Definition: graph_registry.h:68
unsigned int unroll_threshold() const
Will unroll the integral sets with size <= unroll_threshold. Default is 0 (no unrolling).
Definition: graph_registry.h:47
bool return_targets() const
Return pointers to targets via Libint_t::targets? Default is true.
Definition: graph_registry.h:44
bool uncontract() const
Minimum size when can unroll Will uncontract the integral sets if true.
Definition: graph_registry.h:53
Internal registry of information.
Definition: graph_registry.h:86
MemoryManager::Size size_of_target_accum() const
The size of the buffer at the beginning of stack allocated to hold accumulated targets.
Definition: graph_registry.h:95
bool accumulate_targets_directly() const
Are targets computed, then accumulated, or accumulated directly? The latter possible only if all targ...
Definition: graph_registry.h:92
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:24