FreeTensor
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
schedule_log.h File Reference
#include <array>
#include <exception>
#include <iostream>
#include <mutex>
#include <variant>
#include <ast.h>
#include <hash.h>
#include <serialize/to_string.h>
#include <shared_linked_list.h>
Include dependency graph for schedule_log.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  freetensor::ScheduleLogItem
 
class  freetensor::ScheduleLogItemImpl< TYPE, _Invocable, _Params, _Result >
 
struct  freetensor::ScheduleLogItemEqual
 
struct  freetensor::ScheduleLogItemHash
 

Namespaces

namespace  freetensor
 

Macros

#define MAKE_SCHEDULE_LOG(TYPE, FUNC, ...)
 

Typedefs

using freetensor::IDMetadataPack = std::pair< ID, Metadata >
 
typedef SharedLinkedList< Ref< ScheduleLogItem >, ScheduleLogItemHash, ScheduleLogItemEqual > freetensor::ScheduleLog
 

Enumerations

enum class  freetensor::ScheduleType : int {
  freetensor::Split = 0 , freetensor::Reorder , freetensor::Merge , freetensor::Fission ,
  freetensor::Fuse , freetensor::Swap , freetensor::Blend , freetensor::Cache ,
  freetensor::CacheReduction , freetensor::SetMemType , freetensor::VarSplit , freetensor::VarMerge ,
  freetensor::VarReorder , freetensor::VarUnsqueeze , freetensor::VarSqueeze , freetensor::Inline ,
  freetensor::Parallelize , freetensor::ParallelizeAs , freetensor::Unroll , freetensor::Vectorize ,
  freetensor::SeparateTail , freetensor::AsMatMul , freetensor::Permute , freetensor::PlutoFuse ,
  freetensor::PlutoPermute , freetensor::NumTypes
}
 

Functions

std::ostream & freetensor::operator<< (std::ostream &os, ScheduleType type)
 
std::ostream & freetensor::operator<< (std::ostream &os, const IDMetadataPack &pack)
 
template<typename... Args>
auto freetensor::getIDFromPack (const std::tuple< Args... > &args)
 
template<typename... Args>
auto freetensor::getMetadataFromPack (const std::tuple< Args... > &args)
 
template<typename... Args>
auto freetensor::getPackFromID (auto schedule, const std::tuple< Args... > &args)
 
std::ostream & freetensor::operator<< (std::ostream &os, const ScheduleLogItem &log)
 

Variables

constexpr std::array freetensor::scheduleTypeNames
 

Macro Definition Documentation

◆ MAKE_SCHEDULE_LOG

#define MAKE_SCHEDULE_LOG (   TYPE,
  FUNC,
  ... 
)
Value:
([this](const auto &func, const auto &_params) { \
auto params = getPackFromID(this, _params); \
/* decay is required: we must not store an reference */ \
typedef ScheduleLogItemImpl< \
ScheduleType::TYPE, std::decay_t<decltype(func)>, \
std::decay_t<decltype(params)>, \
std::decay_t<decltype(std::apply(func, _params))>> \
BaseClass; \
class ScheduleLogItem##TYPE : public BaseClass { \
public: \
ScheduleLogItem##TYPE(const typename BaseClass::Invocable &f, \
const typename BaseClass::Params &p) \
: BaseClass(f, p) {} \
}; \
return Ref<ScheduleLogItem##TYPE>::make(func, params); \
})(futureSchedule(FUNC), std::make_tuple(__VA_ARGS__))

Make a log item with specifc parameter and result types, used in each schedule