Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marian-nmt/intgemm.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intgemm/callbacks/configs.h')
-rw-r--r--intgemm/callbacks/configs.h58
1 files changed, 58 insertions, 0 deletions
diff --git a/intgemm/callbacks/configs.h b/intgemm/callbacks/configs.h
new file mode 100644
index 0000000..1222448
--- /dev/null
+++ b/intgemm/callbacks/configs.h
@@ -0,0 +1,58 @@
+#pragma once
+
+#include <tuple>
+
+namespace intgemm {
+namespace callbacks {
+
+/*
+ * Sequence meta-config
+ */
+template <typename... Configs>
+std::tuple<Configs...> Sequence(const Configs&... configs) {
+ return std::make_tuple(configs...);
+}
+
+/*
+ * Configs
+ */
+struct Dummy {
+};
+
+template <typename Type>
+struct Write {
+ Type* output_addr;
+
+ Write(Type* output_addr) : output_addr(output_addr) {}
+};
+
+struct Unquantize {
+ float unquant_mult;
+
+ Unquantize(float unquant_mult) : unquant_mult(unquant_mult) {}
+};
+
+struct UnquantizeAndWrite {
+ float unquant_mult;
+ float* output_addr;
+
+ UnquantizeAndWrite(float unquant_mult, float* output_addr) : unquant_mult(unquant_mult), output_addr(output_addr) {}
+};
+
+struct AddBiasAndWrite {
+ const int* bias_addr;
+ int* output_addr;
+
+ AddBiasAndWrite(const int* bias_addr, int* output_addr) : bias_addr(bias_addr), output_addr(output_addr) {}
+};
+
+struct UnquantizeAndAddBiasAndWrite {
+ float unquant_mult;
+ const float* bias_addr;
+ float* output_addr;
+
+ UnquantizeAndAddBiasAndWrite(float unquant_mult, const float* bias_addr, float* output_addr) : unquant_mult(unquant_mult), bias_addr(bias_addr), output_addr(output_addr) {}
+};
+
+}
+}