??? Infrastructure Use Cases

Low-level hardware access and system programming

Infrastructure modules provide direct access to hardware resources for performance-critical applications.

??? CPU Infrastructure

Thread management, CPU affinity, SIMD operations

Use Case: Parallel Matrix Multiplication

// matrix_mul.ifa - Optimized parallel matrix multiplication
ayanmo CPU = import("@infra/cpu");

ise matrix_multiply(A, B) {
    ayanmo rows_a = Ogunda.len(A);
    ayanmo cols_a = Ogunda.len(Ogunda.first(A));
    ayanmo cols_b = Ogunda.len(Ogunda.first(B));
    
    // Create result matrix
    ayanmo C = [];
    ayanmo i = 0;
    nigba (i < rows_a) {
        ayanmo row = [];
        ayanmo j = 0;
        nigba (j < cols_b) {
            ayanmo row = Ogunda.push(row, 0.0);
            ayanmo j = j + 1;
        }
        ayanmo C = Ogunda.push(C, row);
        ayanmo i = i + 1;
    }
    
    // Parallel computation across rows
    ayanmo num_threads = CPU.core_count();
    ayanmo chunk_size = rows_a / num_threads;
    
    CPU.parallel_for(0, rows_a, |row_idx| {
        ayanmo k = 0;
        nigba (k < cols_a) {
            ayanmo j = 0;
            nigba (j < cols_b) {
                ayanmo a_val = Ogunda.get(Ogunda.get(A, row_idx), k);
                ayanmo b_val = Ogunda.get(Ogunda.get(B, k), j);
                ayanmo curr = Ogunda.get(Ogunda.get(C, row_idx), j);
                // C[row_idx][j] += A[row_idx][k] * B[k][j]
                CPU.atomic_add(C, row_idx, j, a_val * b_val);
                ayanmo j = j + 1;
            }
            ayanmo k = k + 1;
        }
    });
    
    padap? C;
}

// Benchmark
ayanmo start = Iwori.now_ns();
ayanmo result = matrix_multiply(matrix_a, matrix_b);
ayanmo elapsed = (Iwori.now_ns() - start) / 1000000;
Irosu.fo("Matrix multiplication completed in " + elapsed + "ms");

?? GPU Infrastructure

GPGPU compute, shader execution, tensor operations

Use Case: Image Filter Pipeline

// gpu_filter.ifa - GPU-accelerated image processing
ayanmo GPU = import("@infra/gpu");

ise apply_gaussian_blur(image, radius) {
    // Upload image to GPU memory
    ayanmo gpu_buffer = GPU.create_buffer(image.data, GPU.RGBA8);
    
    // Create compute shader
    ayanmo shader = GPU.compile_shader("
        @group(0) @binding(0) var input: texture_2d;
        @group(0) @binding(1) var output: texture_storage_2d;
        
        @compute @workgroup_size(16, 16)
        fn main(@builtin(global_invocation_id) id: vec3) {
            var sum = vec4(0.0);
            var weight_sum = 0.0;
            
            for (var dy = -RADIUS; dy <= RADIUS; dy++) {
                for (var dx = -RADIUS; dx <= RADIUS; dx++) {
                    let pos = vec2(id.xy) + vec2(dx, dy);
                    let weight = gaussian(dx, dy, RADIUS);
                    sum += textureLoad(input, pos, 0) * weight;
                    weight_sum += weight;
                }
            }
            
            textureStore(output, vec2(id.xy), sum / weight_sum);
        }
    ");
    
    // Execute on GPU
    ayanmo output = GPU.create_texture(image.width, image.height, GPU.RGBA8);
    GPU.dispatch(shader, [gpu_buffer, output], image.width / 16, image.height / 16);
    
    // Download result
    padap? GPU.read_texture(output);
}

// Process image
ayanmo image = GPU.load_image("photo.jpg");
ayanmo blurred = apply_gaussian_blur(image, 5);
GPU.save_image(blurred, "photo_blur.jpg");

?? Storage Infrastructure

Direct disk I/O, memory-mapped files, database engines

Use Case: High-Performance Key-Value Store

// kv_store.ifa - Memory-mapped key-value database
ayanmo Storage = import("@infra/storage");

ayanmo DB_FILE = "data.db";
ayanmo INDEX_FILE = "data.idx";

ise init_database() {
    // Memory-map the data file (1GB max)
    ayanmo data = Storage.mmap(DB_FILE, 1024 * 1024 * 1024);
    
    // Load or create index
    ayanmo index = {};
    ti (Odi.exists(INDEX_FILE)) {
        ayanmo idx_data = Odi.read(INDEX_FILE);
        ayanmo index = Ogbe.parse_json(idx_data);
    }
    
    padap? {"data": data, "index": index, "offset": 0};
}

ise db_put(db, key, value) {
    ayanmo serialized = Ogbe.format_json(value);
    ayanmo length = Ika.len(serialized);
    
    // Write length + data to mmap
    Storage.mmap_write_u32(db["data"], db["offset"], length);
    Storage.mmap_write_str(db["data"], db["offset"] + 4, serialized);
    
    // Update index
    db["index"][key] = {"offset": db["offset"], "length": length};
    db["offset"] = db["offset"] + 4 + length;
    
    // Persist index
    Odi.write(INDEX_FILE, Ogbe.format_json(db["index"]));
}

ise db_get(db, key) {
    ayanmo entry = db["index"][key];
    ti (entry == nil) {
        padap? nil;
    }
    
    ayanmo data = Storage.mmap_read_str(db["data"], entry["offset"] + 4, entry["length"]);
    padap? Ogbe.parse_json(data);
}

// Usage
ayanmo db = init_database();
db_put(db, "user:1", {"name": "Adé", "email": "ade@example.com"});
ayanmo user = db_get(db, "user:1");
Irosu.fo(user["name"]);  // "Adé"

?? Kernel Infrastructure

System calls, process management, signal handling

Use Case: Process Monitor

// procmon.ifa - System process monitor
ayanmo Kernel = import("@infra/kernel");

ise get_process_info(pid) {
    ayanmo stat = Kernel.proc_stat(pid);
    ayanmo mem = Kernel.proc_mem(pid);
    
    padap? {
        "pid": pid,
        "name": stat["name"],
        "state": stat["state"],
        "cpu_percent": stat["cpu_percent"],
        "mem_mb": mem["rss"] / (1024 * 1024),
        "threads": stat["num_threads"]
    };
}

ise list_processes() {
    ayanmo pids = Kernel.list_pids();
    ayanmo processes = [];
    
    fun pid ninu pids {
        ayanmo info = get_process_info(pid);
        ti (info != nil) {
            ayanmo processes = Ogunda.push(processes, info);
        }
    }
    
    // Sort by CPU usage
    padap? Osa.sort_by(processes, |p| -p["cpu_percent"]);
}

ise monitor_loop() {
    Irosu.fo("PID\tCPU%\tMEM(MB)\tNAME");
    Irosu.fo("---\t----\t------\t----");
    
    nigba (otito) {
        ayanmo procs = list_processes();
        ayanmo top10 = Ogunda.slice(procs, 0, 10);
        
        Ose.clear();
        fun p ninu top10 {
            Irosu.fo(p["pid"] + "\t" + p["cpu_percent"] + "%\t" + p["mem_mb"] + "\t" + p["name"]);
        }
        
        Oyeku.sleep(1000);
    }
}

monitor_loop();

?? Shaders Infrastructure

Graphics shaders, compute shaders, render pipelines

Use Case: Fractal Renderer

// fractal.ifa - Mandelbrot set renderer
ayanmo Shaders = import("@infra/shaders");

ayanmo WIDTH = 1920;
ayanmo HEIGHT = 1080;
ayanmo MAX_ITER = 500;

// Compute shader for Mandelbrot
ayanmo mandelbrot_shader = Shaders.compile("
    @group(0) @binding(0) var output: array;
    
    fn hsv_to_rgb(h: f32, s: f32, v: f32) -> vec3 {
        let c = v * s;
        let x = c * (1.0 - abs(fract(h / 60.0) * 2.0 - 1.0));
        let m = v - c;
        // ... color conversion
        return vec3(r + m, g + m, b + m);
    }
    
    @compute @workgroup_size(16, 16)
    fn main(@builtin(global_invocation_id) id: vec3) {
        let x = f32(id.x) / f32(WIDTH) * 3.5 - 2.5;
        let y = f32(id.y) / f32(HEIGHT) * 2.0 - 1.0;
        
        var zx = 0.0;
        var zy = 0.0;
        var iter = 0u;
        
        loop {
            if (iter >= MAX_ITER || zx*zx + zy*zy > 4.0) { break; }
            let xtemp = zx*zx - zy*zy + x;
            zy = 2.0*zx*zy + y;
            zx = xtemp;
            iter++;
        }
        
        let hue = f32(iter) / f32(MAX_ITER) * 360.0;
        let color = hsv_to_rgb(hue, 1.0, select(0.0, 1.0, iter < MAX_ITER));
        
        let idx = id.y * WIDTH + id.x;
        output[idx] = pack_rgba(color);
    }
");

// Render
ayanmo buffer = Shaders.create_buffer(WIDTH * HEIGHT * 4);
Shaders.dispatch(mandelbrot_shader, [buffer], WIDTH / 16, HEIGHT / 16);

// Save image
ayanmo pixels = Shaders.read_buffer(buffer);
Shaders.save_png(pixels, WIDTH, HEIGHT, "mandelbrot.png");
Irosu.fo("? Fractal rendered to mandelbrot.png");