# Synor Compute SDK for Swift Access distributed heterogeneous compute at 90% cost reduction. ## Installation ### Swift Package Manager Add to `Package.swift`: ```swift dependencies: [ .package(url: "https://github.com/synor/compute-sdk-swift", from: "0.1.0") ] ``` ### Xcode File > Add Packages > Enter URL: `https://github.com/synor/compute-sdk-swift` ## Quick Start ```swift import SynorCompute let client = SynorCompute(apiKey: "your-api-key") // Matrix multiplication on GPU let a = Tensor.random(shape: [512, 512]) let b = Tensor.random(shape: [512, 512]) Task { let result = try await client.matmul(a, b, precision: .fp16, processor: .gpu ) if result.isSuccess { print("Time: \(result.executionTimeMs ?? 0)ms") print("Cost: $\(result.cost ?? 0)") } } ``` ## Tensor Operations ```swift // Create tensors let zeros = Tensor.zeros(shape: [3, 3]) let ones = Tensor.ones(shape: [2, 2]) let random = Tensor.random(shape: [10, 10]) let randn = Tensor.randn(shape: [100]) let eye = Tensor.eye(size: 3) // From array let data: [Float] = [1, 2, 3, 4, 5, 6] let tensor = Tensor(data: data, shape: [2, 3]) // Operations let reshaped = tensor.reshape(to: [3, 2]) let transposed = tensor.transpose() // Math let mean = tensor.mean() let sum = tensor.sum() let std = tensor.std() ``` ## Async/Await API ```swift // Matrix multiplication let result = try await client.matmul(a, b, precision: .fp16, processor: .gpu, strategy: .speed ) // Convolution let conv = try await client.conv2d(input, kernel, stride: (1, 1), padding: (1, 1) ) // Attention let attention = try await client.attention(query, key, value, numHeads: 8, flash: true ) ``` ## LLM Inference ```swift // Single response let response = try await client.inference( model: "llama-3-70b", prompt: "Explain quantum computing", maxTokens: 512, temperature: 0.7 ) print(response.result ?? "") // Streaming with AsyncSequence for try await chunk in client.inferenceStream( model: "llama-3-70b", prompt: "Write a poem" ) { print(chunk, terminator: "") } ``` ## Configuration ```swift let config = SynorConfig( apiKey: "your-api-key", baseUrl: "https://api.synor.io/compute/v1", defaultProcessor: .gpu, defaultPrecision: .fp16, timeout: 30, debug: true ) let client = SynorCompute(config: config) ``` ## SwiftUI Integration ```swift import SwiftUI import SynorCompute struct ComputeView: View { @StateObject private var vm = ComputeViewModel() var body: some View { VStack { if vm.isLoading { ProgressView() } else if let result = vm.result { Text("Result: \(result)") } Button("Compute") { Task { await vm.compute() } } } } } @MainActor class ComputeViewModel: ObservableObject { @Published var result: String? @Published var isLoading = false private let client = SynorCompute(apiKey: "your-api-key") func compute() async { isLoading = true defer { isLoading = false } do { let response = try await client.inference( model: "llama-3-70b", prompt: "Hello" ) result = response.result } catch { result = "Error: \(error.localizedDescription)" } } } ``` ## Error Handling ```swift do { let result = try await client.matmul(a, b) } catch let error as SynorError { switch error { case .apiError(let statusCode, let message): print("API Error \(statusCode): \(message)") case .networkError(let underlying): print("Network error: \(underlying)") case .invalidArgument(let message): print("Invalid argument: \(message)") } } catch { print("Unexpected error: \(error)") } ``` ## Types ```swift // Processor types enum ProcessorType: String, Codable { case cpu, gpu, tpu, npu, lpu, fpga, auto } // Precision enum Precision: String, Codable { case fp64, fp32, fp16, bf16, int8, int4 } // Job status enum JobStatus: String, Codable { case pending, running, completed, failed, cancelled } ``` ## Requirements - iOS 15.0+ / macOS 12.0+ / tvOS 15.0+ / watchOS 8.0+ - Swift 5.9+ ## Testing ```bash swift test ``` ## License MIT