LinearOpContext Class — pytorch Architecture
Architecture documentation for the LinearOpContext class in MetalPrepackOpContext.h from the pytorch codebase.
Entity Profile
Source Code
aten/src/ATen/native/metal/MetalPrepackOpContext.h lines 129–196
class LinearOpContext : public torch::jit::CustomClassHolder {
public:
SerializationTypeLinearPrePack pack() {
return std::make_tuple(weight_, bias_, output_min_, output_max_);
}
LinearOpContext() = delete;
LinearOpContext(
at::Tensor&& weight,
std::optional<at::Tensor>&& bias,
std::optional<Scalar> output_min,
std::optional<Scalar> output_max)
: weight_(std::move(weight)),
bias_(std::move(bias)),
output_min_(std::move(output_min)),
output_max_(std::move(output_max)) {}
~LinearOpContext() override {
if (releaseCallback_) {
releaseCallback_(opaqueOpPtr_);
}
}
void release_resources() override {
if (releaseCallback_) {
releaseCallback_(opaqueOpPtr_);
}
}
const Tensor& get_weight() const {
return weight_;
}
const std::optional<Tensor>& get_bias() const {
return bias_;
}
const std::optional<Scalar>& get_output_min() const {
return output_min_;
}
const std::optional<Scalar>& get_output_max() const {
return output_max_;
}
void set_opaqueOpPtr(void* ptr) {
opaqueOpPtr_ = ptr;
}
void* get_opaqueOpPtr() const {
return opaqueOpPtr_;
}
void set_releaseCallback(const std::function<void(void*)>& func) {
releaseCallback_ = func;
}
std::function<void(void*)>& get_releaseCallback() {
return releaseCallback_;
}
private:
Tensor weight_;
std::optional<Tensor> bias_;
std::optional<Scalar> output_min_;
std::optional<Scalar> output_max_;
void* opaqueOpPtr_ = nullptr; // reserved to hold MPSCNNFullyConnected objects
std::function<void(void*)> releaseCallback_ = nullptr;
};
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free