SPB Git

spb/forge Public MIT

Forge — LLM training from scratch in pure C++20 + Metal on Apple Silicon.

C++ 61.2% C 23% Python 7.6% TeX 7.2% CMake 1.1%
3.0 KB · 95 lines cpp
Raw Blame History
1//-------------------------------------------------------------------------------------------------------------------------------------------------------------2//3// Metal/MTLIOCompressor.hpp4//5// Copyright 2020-2024 Apple Inc.6//7// Licensed under the Apache License, Version 2.0 (the "License");8// you may not use this file except in compliance with the License.9// You may obtain a copy of the License at10//11//     http://www.apache.org/licenses/LICENSE-2.012//13// Unless required by applicable law or agreed to in writing, software14// distributed under the License is distributed on an "AS IS" BASIS,15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.16// See the License for the specific language governing permissions and17// limitations under the License.18//19//-------------------------------------------------------------------------------------------------------------------------------------------------------------2021#pragma once2223#include "MTLDefines.hpp"24#include "MTLHeaderBridge.hpp"25#include "MTLPrivate.hpp"26#include "MTLDevice.hpp"2728#include "../Foundation/Foundation.hpp"2930namespace MTL31{32using IOCompressionContext=void*;3334_MTL_ENUM(NS::Integer, IOCompressionStatus) {35    IOCompressionStatusComplete = 0,36    IOCompressionStatusError = 1,37};3839size_t IOCompressionContextDefaultChunkSize();4041IOCompressionContext IOCreateCompressionContext(const char* path, IOCompressionMethod type, size_t chunkSize);4243void IOCompressionContextAppendData(IOCompressionContext context, const void* data, size_t size);4445IOCompressionStatus IOFlushAndDestroyCompressionContext(IOCompressionContext context);4647}4849#if defined(MTL_PRIVATE_IMPLEMENTATION)5051namespace MTL::Private {5253MTL_DEF_FUNC(MTLIOCompressionContextDefaultChunkSize, size_t (*)(void));5455MTL_DEF_FUNC( MTLIOCreateCompressionContext, void* (*)(const char*, MTL::IOCompressionMethod, size_t) );5657MTL_DEF_FUNC( MTLIOCompressionContextAppendData, void (*)(void*, const void*, size_t) );5859MTL_DEF_FUNC( MTLIOFlushAndDestroyCompressionContext, MTL::IOCompressionStatus (*)(void*) );6061}6263_NS_EXPORT size_t MTL::IOCompressionContextDefaultChunkSize()64{65    return MTL::Private::MTLIOCompressionContextDefaultChunkSize();66}6768_NS_EXPORT void* MTL::IOCreateCompressionContext(const char* path, IOCompressionMethod type, size_t chunkSize)69{70    if ( MTL::Private::MTLIOCreateCompressionContext )71    {72        return MTL::Private::MTLIOCreateCompressionContext( path, type, chunkSize );73    }74    return nullptr;75}7677_NS_EXPORT void MTL::IOCompressionContextAppendData(void* context, const void* data, size_t size)78{79    if ( MTL::Private::MTLIOCompressionContextAppendData )80    {81        MTL::Private::MTLIOCompressionContextAppendData( context, data, size );82    }83}8485_NS_EXPORT MTL::IOCompressionStatus MTL::IOFlushAndDestroyCompressionContext(void* context)86{87    if ( MTL::Private::MTLIOFlushAndDestroyCompressionContext )88    {89        return MTL::Private::MTLIOFlushAndDestroyCompressionContext( context );90    }91    return MTL::IOCompressionStatusError;92}9394#endif95