synor/sdk/csharp/README.md
Gulshan Yadav 162227dc71 docs(sdk): add comprehensive documentation for all 12 SDKs
Add README.md documentation for:
- Main SDK overview with quick start guides
- JavaScript/TypeScript SDK
- Python SDK
- Go SDK
- Rust SDK
- Java SDK
- Kotlin SDK
- Swift SDK
- Flutter/Dart SDK
- C SDK
- C++ SDK
- C#/.NET SDK
- Ruby SDK

Each README includes:
- Installation instructions
- Quick start examples
- Tensor operations
- Matrix operations (matmul, conv2d, attention)
- LLM inference (single and streaming)
- Configuration options
- Error handling
- Type definitions
2026-01-11 18:05:03 +05:30

250 lines
4.4 KiB
Markdown

# Synor Compute SDK for C#/.NET
Access distributed heterogeneous compute at 90% cost reduction.
## Installation
### NuGet
```bash
dotnet add package SynorCompute
```
### Package Manager Console
```powershell
Install-Package SynorCompute
```
## Quick Start
```csharp
using SynorCompute;
var client = new SynorClient("your-api-key");
// Matrix multiplication on GPU
var a = Tensor.Random(512, 512);
var b = Tensor.Random(512, 512);
var result = await client.MatMulAsync(a, b, new MatMulOptions
{
Precision = Precision.FP16,
Processor = ProcessorType.GPU
});
if (result.IsSuccess)
{
Console.WriteLine($"Time: {result.ExecutionTimeMs}ms");
Console.WriteLine($"Cost: ${result.Cost}");
}
```
## Tensor Operations
```csharp
// Create tensors
var zeros = Tensor.Zeros(3, 3);
var ones = Tensor.Ones(2, 2);
var random = Tensor.Random(10, 10);
var randn = Tensor.Randn(100);
var eye = Tensor.Eye(3);
// From array
float[,] data = { { 1, 2, 3 }, { 4, 5, 6 } };
var tensor = Tensor.FromArray(data);
// From 1D with shape
var data1d = new float[] { 1, 2, 3, 4, 5, 6 };
var tensor1d = new Tensor(data1d, new[] { 2, 3 });
// Operations
var reshaped = tensor.Reshape(3, 2);
var transposed = tensor.Transpose();
// Math
var mean = tensor.Mean();
var sum = tensor.Sum();
var std = tensor.Std();
```
## Async/Await API
```csharp
// Matrix multiplication
var result = await client.MatMulAsync(a, b, new MatMulOptions
{
Precision = Precision.FP16,
Processor = ProcessorType.GPU,
Strategy = BalancingStrategy.Speed
});
// 2D Convolution
var conv = await client.Conv2DAsync(input, kernel, new Conv2DOptions
{
Stride = (1, 1),
Padding = (1, 1)
});
// Attention
var attention = await client.AttentionAsync(query, key, value, new AttentionOptions
{
NumHeads = 8,
Flash = true
});
```
## LLM Inference
```csharp
// Single response
var response = await client.InferenceAsync("llama-3-70b", "Explain quantum computing",
new InferenceOptions
{
MaxTokens = 512,
Temperature = 0.7f
});
Console.WriteLine(response.Result);
// Streaming with IAsyncEnumerable
await foreach (var chunk in client.InferenceStreamAsync("llama-3-70b", "Write a poem"))
{
Console.Write(chunk);
}
```
## Configuration
```csharp
var config = new SynorConfig
{
ApiKey = "your-api-key",
BaseUrl = "https://api.synor.io/compute/v1",
DefaultProcessor = ProcessorType.GPU,
DefaultPrecision = Precision.FP16,
Timeout = TimeSpan.FromSeconds(30),
Debug = true
};
var client = new SynorClient(config);
```
## Dependency Injection
```csharp
// In Startup.cs or Program.cs
services.AddSynorCompute(options =>
{
options.ApiKey = Configuration["Synor:ApiKey"];
options.DefaultProcessor = ProcessorType.GPU;
});
// In your service
public class ComputeService
{
private readonly ISynorClient _client;
public ComputeService(ISynorClient client)
{
_client = client;
}
public async Task<Tensor> ComputeAsync(Tensor a, Tensor b)
{
var result = await _client.MatMulAsync(a, b);
return result.Data;
}
}
```
## Error Handling
```csharp
try
{
var result = await client.MatMulAsync(a, b);
}
catch (SynorApiException ex)
{
Console.WriteLine($"API Error {ex.StatusCode}: {ex.Message}");
}
catch (SynorNetworkException ex)
{
Console.WriteLine($"Network error: {ex.Message}");
}
catch (SynorException ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
```
## LINQ Integration
```csharp
// Process multiple tensors
var tensors = new[] { a, b, c, d };
var results = await Task.WhenAll(
tensors.Select(t => client.MatMulAsync(t, identity))
);
```
## Types
```csharp
// Processor types
public enum ProcessorType
{
CPU, GPU, TPU, NPU, LPU, FPGA, Auto
}
// Precision
public enum Precision
{
FP64, FP32, FP16, BF16, INT8, INT4
}
// Job status
public enum JobStatus
{
Pending, Running, Completed, Failed, Cancelled
}
// Balancing strategy
public enum BalancingStrategy
{
Speed, Cost, Energy, Latency, Balanced
}
```
## Cancellation Support
```csharp
var cts = new CancellationTokenSource();
// Cancel after 10 seconds
cts.CancelAfter(TimeSpan.FromSeconds(10));
try
{
var result = await client.MatMulAsync(a, b, cancellationToken: cts.Token);
}
catch (OperationCanceledException)
{
Console.WriteLine("Operation was cancelled");
}
```
## Requirements
- .NET 6.0 or later
- System.Text.Json
## Testing
```bash
dotnet test
```
## License
MIT