@sparkleideas/performance 3.0.0-alpha.22 โ†’ 3.0.0-alpha.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,366 @@
1
+ /**
2
+ * @sparkleideas/performance - Flash Attention Integration
3
+ *
4
+ * Integrates @ruvector/attention Flash Attention capabilities into V3 performance module.
5
+ * Provides optimized attention mechanisms with 2.49x-7.47x speedup targets.
6
+ *
7
+ * Features:
8
+ * - Flash Attention for memory-efficient processing
9
+ * - Automatic runtime selection (NAPI/WASM/JS)
10
+ * - Performance benchmarking and metrics
11
+ * - Speedup tracking and validation
12
+ */
13
+ import { FlashAttention, DotProductAttention, } from '@ruvector/attention';
14
+ // ============================================================================
15
+ // Flash Attention Optimizer
16
+ // ============================================================================
17
+ export class FlashAttentionOptimizer {
18
+ dim;
19
+ blockSize;
20
+ flashAttention;
21
+ baselineAttention;
22
+ metrics;
23
+ constructor(dim = 512, blockSize = 64) {
24
+ this.dim = dim;
25
+ this.blockSize = blockSize;
26
+ this.flashAttention = new FlashAttention(dim, blockSize);
27
+ this.baselineAttention = new DotProductAttention(dim);
28
+ this.metrics = {
29
+ operations: 0,
30
+ totalSpeedup: 0,
31
+ peakSpeedup: 0,
32
+ totalExecutionTime: 0,
33
+ successfulOperations: 0,
34
+ totalBaselineMemory: 0,
35
+ totalOptimizedMemory: 0,
36
+ peakMemory: 0,
37
+ };
38
+ }
39
+ /**
40
+ * Optimize attention computation using Flash Attention
41
+ * @param input - Query, keys, and values for attention computation
42
+ * @returns Optimized attention output with performance metrics
43
+ */
44
+ optimize(input) {
45
+ const startTime = performance.now();
46
+ const startMemory = this.getMemoryUsage();
47
+ // Convert inputs if needed
48
+ const query = this.ensureFloat32Array(input.query);
49
+ const keys = input.keys.map(k => this.ensureFloat32Array(k));
50
+ const values = input.values.map(v => this.ensureFloat32Array(v));
51
+ // Use synchronous Flash Attention with raw Float32Arrays
52
+ const result = this.flashAttention.computeRaw(query, keys, values);
53
+ const executionTimeMs = performance.now() - startTime;
54
+ const endMemory = this.getMemoryUsage();
55
+ const memoryUsageBytes = endMemory - startMemory;
56
+ // Update metrics
57
+ this.metrics.operations++;
58
+ this.metrics.totalExecutionTime += executionTimeMs;
59
+ return {
60
+ result,
61
+ runtime: this.detectRuntime(),
62
+ executionTimeMs,
63
+ memoryUsageBytes: memoryUsageBytes > 0 ? memoryUsageBytes : undefined,
64
+ };
65
+ }
66
+ /**
67
+ * Benchmark Flash Attention vs baseline attention
68
+ * @returns Comprehensive benchmark results with speedup metrics
69
+ */
70
+ benchmark() {
71
+ const dim = this.dim;
72
+ const numKeys = 100;
73
+ const iterations = 1000;
74
+ // Create test data
75
+ const query = new Float32Array(dim);
76
+ const keys = Array.from({ length: numKeys }, () => new Float32Array(dim));
77
+ const values = Array.from({ length: numKeys }, () => new Float32Array(dim));
78
+ // Fill with random data
79
+ for (let i = 0; i < dim; i++) {
80
+ query[i] = Math.random();
81
+ }
82
+ for (let i = 0; i < numKeys; i++) {
83
+ for (let j = 0; j < dim; j++) {
84
+ keys[i][j] = Math.random();
85
+ values[i][j] = Math.random();
86
+ }
87
+ }
88
+ // Force garbage collection if available for accurate memory measurement
89
+ this.forceGC();
90
+ // Measure baseline memory usage
91
+ const baselineMemoryBefore = this.getMemoryUsage();
92
+ let baselinePeakMemory = baselineMemoryBefore;
93
+ // Benchmark baseline (DotProduct) - run first to establish baseline memory
94
+ const baselineStart = performance.now();
95
+ for (let i = 0; i < iterations; i++) {
96
+ this.baselineAttention.computeRaw(query, keys, values);
97
+ // Sample memory periodically (every 100 iterations to reduce overhead)
98
+ if (i % 100 === 0) {
99
+ const currentMemory = this.getMemoryUsage();
100
+ if (currentMemory > baselinePeakMemory) {
101
+ baselinePeakMemory = currentMemory;
102
+ }
103
+ }
104
+ }
105
+ const baselineEnd = performance.now();
106
+ const baselineMemoryAfter = this.getMemoryUsage();
107
+ const baselineTimeMs = baselineEnd - baselineStart;
108
+ const baselineAvgMs = baselineTimeMs / iterations;
109
+ const baselineMemoryUsed = Math.max(0, baselinePeakMemory - baselineMemoryBefore);
110
+ // Force garbage collection before Flash Attention benchmark
111
+ this.forceGC();
112
+ // Measure Flash Attention memory usage
113
+ const flashMemoryBefore = this.getMemoryUsage();
114
+ let flashPeakMemory = flashMemoryBefore;
115
+ // Benchmark Flash Attention
116
+ const flashStart = performance.now();
117
+ for (let i = 0; i < iterations; i++) {
118
+ this.flashAttention.computeRaw(query, keys, values);
119
+ // Sample memory periodically
120
+ if (i % 100 === 0) {
121
+ const currentMemory = this.getMemoryUsage();
122
+ if (currentMemory > flashPeakMemory) {
123
+ flashPeakMemory = currentMemory;
124
+ }
125
+ }
126
+ }
127
+ const flashEnd = performance.now();
128
+ const flashTimeMs = flashEnd - flashStart;
129
+ const flashAvgMs = flashTimeMs / iterations;
130
+ const flashMemoryUsed = Math.max(0, flashPeakMemory - flashMemoryBefore);
131
+ const speedup = baselineAvgMs / flashAvgMs;
132
+ const meetsTarget = speedup >= 2.49; // Minimum target: 2.49x
133
+ // Update peak speedup
134
+ if (speedup > this.metrics.peakSpeedup) {
135
+ this.metrics.peakSpeedup = speedup;
136
+ }
137
+ // Update memory tracking metrics
138
+ this.metrics.totalBaselineMemory += baselineMemoryUsed;
139
+ this.metrics.totalOptimizedMemory += flashMemoryUsed;
140
+ if (flashPeakMemory > this.metrics.peakMemory) {
141
+ this.metrics.peakMemory = flashPeakMemory;
142
+ }
143
+ this.metrics.totalSpeedup += speedup;
144
+ if (meetsTarget) {
145
+ this.metrics.successfulOperations++;
146
+ }
147
+ return {
148
+ flashAttention: {
149
+ averageTimeMs: flashAvgMs,
150
+ opsPerSecond: 1000 / flashAvgMs,
151
+ memoryUsageBytes: flashMemoryUsed,
152
+ },
153
+ baseline: {
154
+ averageTimeMs: baselineAvgMs,
155
+ opsPerSecond: 1000 / baselineAvgMs,
156
+ memoryUsageBytes: baselineMemoryUsed,
157
+ },
158
+ speedup,
159
+ meetsTarget,
160
+ timestamp: new Date(),
161
+ };
162
+ }
163
+ /**
164
+ * Get current speedup factor from accumulated metrics
165
+ * @returns Average speedup factor across all operations
166
+ */
167
+ getSpeedup() {
168
+ if (this.metrics.operations === 0) {
169
+ return 0;
170
+ }
171
+ return this.metrics.totalSpeedup / this.metrics.operations;
172
+ }
173
+ /**
174
+ * Get comprehensive performance metrics
175
+ * @returns Detailed performance statistics
176
+ */
177
+ getMetrics() {
178
+ const avgSpeedup = this.getSpeedup();
179
+ // Calculate memory savings
180
+ const baselineMemory = this.metrics.totalBaselineMemory;
181
+ const optimizedMemory = this.metrics.totalOptimizedMemory;
182
+ const memorySaved = Math.max(0, baselineMemory - optimizedMemory);
183
+ const memorySavedPercent = baselineMemory > 0 ? (memorySaved / baselineMemory) * 100 : 0;
184
+ return {
185
+ totalOperations: this.metrics.operations,
186
+ averageSpeedup: avgSpeedup,
187
+ peakSpeedup: this.metrics.peakSpeedup,
188
+ averageExecutionTimeMs: this.metrics.operations > 0
189
+ ? this.metrics.totalExecutionTime / this.metrics.operations
190
+ : 0,
191
+ totalMemorySavedBytes: memorySaved,
192
+ successRate: this.metrics.operations > 0
193
+ ? (this.metrics.successfulOperations / this.metrics.operations) * 100
194
+ : 0,
195
+ // Memory tracking metrics
196
+ baselineMemoryBytes: baselineMemory,
197
+ optimizedMemoryBytes: optimizedMemory,
198
+ memorySavedBytes: memorySaved,
199
+ memorySavedPercent: memorySavedPercent,
200
+ peakMemoryBytes: this.metrics.peakMemory,
201
+ };
202
+ }
203
+ /**
204
+ * Reset all metrics
205
+ */
206
+ resetMetrics() {
207
+ this.metrics = {
208
+ operations: 0,
209
+ totalSpeedup: 0,
210
+ peakSpeedup: 0,
211
+ totalExecutionTime: 0,
212
+ successfulOperations: 0,
213
+ totalBaselineMemory: 0,
214
+ totalOptimizedMemory: 0,
215
+ peakMemory: 0,
216
+ };
217
+ }
218
+ /**
219
+ * Ensure input is Float32Array for optimal performance
220
+ */
221
+ ensureFloat32Array(input) {
222
+ if (input instanceof Float32Array) {
223
+ return input;
224
+ }
225
+ return new Float32Array(input);
226
+ }
227
+ /**
228
+ * Detect which runtime is being used
229
+ */
230
+ detectRuntime() {
231
+ // Check if NAPI bindings are available
232
+ try {
233
+ if (typeof process !== 'undefined' && process.versions && 'napi' in process.versions) {
234
+ return 'napi';
235
+ }
236
+ }
237
+ catch {
238
+ // Not in Node.js environment
239
+ }
240
+ // Check for WebAssembly support
241
+ if (typeof globalThis !== 'undefined' && 'WebAssembly' in globalThis) {
242
+ return 'wasm';
243
+ }
244
+ // Fallback to pure JS
245
+ return 'js';
246
+ }
247
+ /**
248
+ * Get current memory usage in bytes
249
+ */
250
+ getMemoryUsage() {
251
+ if (typeof process !== 'undefined' && process.memoryUsage) {
252
+ return process.memoryUsage().heapUsed;
253
+ }
254
+ return 0;
255
+ }
256
+ /**
257
+ * Force garbage collection if available (requires --expose-gc flag)
258
+ * This helps get more accurate memory measurements
259
+ */
260
+ forceGC() {
261
+ if (typeof global !== 'undefined' && typeof global.gc === 'function') {
262
+ global.gc();
263
+ }
264
+ }
265
+ /**
266
+ * Benchmark memory usage across multiple dimensions
267
+ * Validates the 50-75% memory reduction target
268
+ * @param dimensions - Array of dimensions to test (default: [128, 256, 512, 1024])
269
+ * @returns Memory profiling results for each dimension
270
+ */
271
+ benchmarkMemory(dimensions = [128, 256, 512, 1024]) {
272
+ const results = [];
273
+ for (const dim of dimensions) {
274
+ const numKeys = 100;
275
+ const iterations = 100; // Fewer iterations for memory profiling
276
+ // Create test data
277
+ const query = new Float32Array(dim);
278
+ const keys = Array.from({ length: numKeys }, () => new Float32Array(dim));
279
+ const values = Array.from({ length: numKeys }, () => new Float32Array(dim));
280
+ // Fill with random data
281
+ for (let i = 0; i < dim; i++) {
282
+ query[i] = Math.random();
283
+ }
284
+ for (let i = 0; i < numKeys; i++) {
285
+ for (let j = 0; j < dim; j++) {
286
+ keys[i][j] = Math.random();
287
+ values[i][j] = Math.random();
288
+ }
289
+ }
290
+ // Create temporary instances for this dimension
291
+ const flashAttention = new FlashAttention(dim, this.blockSize);
292
+ const baselineAttention = new DotProductAttention(dim);
293
+ // Measure baseline memory
294
+ this.forceGC();
295
+ const baselineMemBefore = this.getMemoryUsage();
296
+ let baselinePeak = baselineMemBefore;
297
+ for (let i = 0; i < iterations; i++) {
298
+ baselineAttention.computeRaw(query, keys, values);
299
+ if (i % 10 === 0) {
300
+ const curr = this.getMemoryUsage();
301
+ if (curr > baselinePeak)
302
+ baselinePeak = curr;
303
+ }
304
+ }
305
+ const baselineMemoryUsed = Math.max(0, baselinePeak - baselineMemBefore);
306
+ // Measure Flash Attention memory
307
+ this.forceGC();
308
+ const flashMemBefore = this.getMemoryUsage();
309
+ let flashPeak = flashMemBefore;
310
+ for (let i = 0; i < iterations; i++) {
311
+ flashAttention.computeRaw(query, keys, values);
312
+ if (i % 10 === 0) {
313
+ const curr = this.getMemoryUsage();
314
+ if (curr > flashPeak)
315
+ flashPeak = curr;
316
+ }
317
+ }
318
+ const flashMemoryUsed = Math.max(0, flashPeak - flashMemBefore);
319
+ const memorySaved = Math.max(0, baselineMemoryUsed - flashMemoryUsed);
320
+ const memorySavedPercent = baselineMemoryUsed > 0 ? (memorySaved / baselineMemoryUsed) * 100 : 0;
321
+ // Target: 50-75% memory reduction
322
+ const meetsTarget = memorySavedPercent >= 50 && memorySavedPercent <= 100;
323
+ results.push({
324
+ dimension: dim,
325
+ baselineMemoryBytes: baselineMemoryUsed,
326
+ optimizedMemoryBytes: flashMemoryUsed,
327
+ memorySavedBytes: memorySaved,
328
+ memorySavedPercent: memorySavedPercent,
329
+ meetsTarget: meetsTarget,
330
+ });
331
+ // Update global metrics
332
+ this.metrics.totalBaselineMemory += baselineMemoryUsed;
333
+ this.metrics.totalOptimizedMemory += flashMemoryUsed;
334
+ if (flashPeak > this.metrics.peakMemory) {
335
+ this.metrics.peakMemory = flashPeak;
336
+ }
337
+ }
338
+ return results;
339
+ }
340
+ }
341
+ // ============================================================================
342
+ // Convenience Factory Functions
343
+ // ============================================================================
344
+ /**
345
+ * Create a Flash Attention optimizer with default settings
346
+ * @param dim - Dimension of attention vectors (default: 512)
347
+ * @param blockSize - Block size for Flash Attention (default: 64)
348
+ * @returns Configured FlashAttentionOptimizer instance
349
+ */
350
+ export function createFlashAttentionOptimizer(dim = 512, blockSize = 64) {
351
+ return new FlashAttentionOptimizer(dim, blockSize);
352
+ }
353
+ /**
354
+ * Quick benchmark of Flash Attention performance
355
+ * @param dim - Dimension to test (default: 512)
356
+ * @returns Benchmark results with speedup metrics
357
+ */
358
+ export function quickBenchmark(dim = 512) {
359
+ const optimizer = createFlashAttentionOptimizer(dim);
360
+ return optimizer.benchmark();
361
+ }
362
+ // ============================================================================
363
+ // Exports
364
+ // ============================================================================
365
+ export { FlashAttention, DotProductAttention, };
366
+ //# sourceMappingURL=attention-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attention-integration.js","sourceRoot":"","sources":["../src/attention-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Flash Attention Integration Demo
3
+ *
4
+ * Demonstrates how to use the Flash Attention integration in V3 performance module.
5
+ */
6
+ declare function basicUsageExample(): Promise<void>;
7
+ declare function benchmarkExample(): Promise<void>;
8
+ declare function comprehensiveSuiteExample(): Promise<void>;
9
+ declare function targetValidationExample(): Promise<void>;
10
+ declare function metricsTrackingExample(): Promise<void>;
11
+ declare function runAllExamples(): Promise<void>;
12
+ export { basicUsageExample, benchmarkExample, comprehensiveSuiteExample, targetValidationExample, metricsTrackingExample, runAllExamples, };
13
+ //# sourceMappingURL=flash-attention-demo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-attention-demo.d.ts","sourceRoot":"","sources":["../../src/examples/flash-attention-demo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,iBAAe,iBAAiB,kBAuB/B;AAMD,iBAAe,gBAAgB,kBAU9B;AAMD,iBAAe,yBAAyB,kBAYvC;AAMD,iBAAe,uBAAuB,kBAMrC;AAMD,iBAAe,sBAAsB,kBA8BpC;AAMD,iBAAe,cAAc,kBAa5B;AAQD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,cAAc,GACf,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Flash Attention Integration Demo
3
+ *
4
+ * Demonstrates how to use the Flash Attention integration in V3 performance module.
5
+ */
6
+ import { createFlashAttentionOptimizer, quickBenchmark, AttentionBenchmarkRunner, quickValidation, } from '../index.js';
7
+ // ============================================================================
8
+ // Example 1: Basic Flash Attention Usage
9
+ // ============================================================================
10
+ async function basicUsageExample() {
11
+ console.log('\n=== Example 1: Basic Flash Attention Usage ===\n');
12
+ // Create optimizer with 512-dimensional vectors
13
+ const optimizer = createFlashAttentionOptimizer(512, 64);
14
+ // Prepare input data
15
+ const dim = 512;
16
+ const numKeys = 100;
17
+ const input = {
18
+ query: new Float32Array(dim).fill(1.0),
19
+ keys: Array.from({ length: numKeys }, () => new Float32Array(dim).fill(1.0)),
20
+ values: Array.from({ length: numKeys }, () => new Float32Array(dim).fill(1.0)),
21
+ };
22
+ // Run optimized attention
23
+ const output = await optimizer.optimize(input);
24
+ console.log(`Runtime: ${output.runtime}`);
25
+ console.log(`Execution time: ${output.executionTimeMs.toFixed(3)}ms`);
26
+ console.log(`Result shape: Float32Array[${output.result.length}]`);
27
+ console.log(`Memory usage: ${output.memoryUsageBytes ? `${(output.memoryUsageBytes / 1024).toFixed(2)} KB` : 'N/A'}`);
28
+ }
29
+ // ============================================================================
30
+ // Example 2: Performance Benchmarking
31
+ // ============================================================================
32
+ async function benchmarkExample() {
33
+ console.log('\n=== Example 2: Performance Benchmarking ===\n');
34
+ // Quick benchmark with default settings
35
+ const result = await quickBenchmark(512);
36
+ console.log(`Flash Attention: ${result.flashAttention.averageTimeMs.toFixed(3)}ms`);
37
+ console.log(`Baseline: ${result.baseline.averageTimeMs.toFixed(3)}ms`);
38
+ console.log(`Speedup: ${result.speedup.toFixed(2)}x`);
39
+ console.log(`Meets target (โ‰ฅ2.49x): ${result.meetsTarget ? 'YES โœ“' : 'NO โœ—'}`);
40
+ }
41
+ // ============================================================================
42
+ // Example 3: Comprehensive Suite
43
+ // ============================================================================
44
+ async function comprehensiveSuiteExample() {
45
+ console.log('\n=== Example 3: Comprehensive Benchmark Suite ===\n');
46
+ const runner = new AttentionBenchmarkRunner();
47
+ const suite = await runner.runComprehensiveSuite();
48
+ console.log(`Suite: ${suite.suiteName}`);
49
+ console.log(`Benchmarks run: ${suite.summary.totalBenchmarks}`);
50
+ console.log(`Average speedup: ${suite.summary.averageSpeedup.toFixed(2)}x`);
51
+ console.log(`Min speedup: ${suite.summary.minSpeedup.toFixed(2)}x`);
52
+ console.log(`Max speedup: ${suite.summary.maxSpeedup.toFixed(2)}x`);
53
+ console.log(`Success rate: ${suite.summary.successRate.toFixed(1)}%`);
54
+ }
55
+ // ============================================================================
56
+ // Example 4: V3 Target Validation
57
+ // ============================================================================
58
+ async function targetValidationExample() {
59
+ console.log('\n=== Example 4: V3 Target Validation ===\n');
60
+ const isValid = await quickValidation();
61
+ console.log(`\nValidation result: ${isValid ? 'PASSED โœ“' : 'FAILED โœ—'}`);
62
+ }
63
+ // ============================================================================
64
+ // Example 5: Continuous Metrics Tracking
65
+ // ============================================================================
66
+ async function metricsTrackingExample() {
67
+ console.log('\n=== Example 5: Continuous Metrics Tracking ===\n');
68
+ const optimizer = createFlashAttentionOptimizer(512);
69
+ // Run multiple operations
70
+ const dim = 512;
71
+ const input = {
72
+ query: new Float32Array(dim).fill(1.0),
73
+ keys: Array.from({ length: 100 }, () => new Float32Array(dim).fill(1.0)),
74
+ values: Array.from({ length: 100 }, () => new Float32Array(dim).fill(1.0)),
75
+ };
76
+ console.log('Running 10 operations...\n');
77
+ for (let i = 0; i < 10; i++) {
78
+ await optimizer.optimize(input);
79
+ }
80
+ // Run benchmarks to update speedup metrics
81
+ await optimizer.benchmark();
82
+ // Get accumulated metrics
83
+ const metrics = optimizer.getMetrics();
84
+ console.log(`Total operations: ${metrics.totalOperations}`);
85
+ console.log(`Average speedup: ${metrics.averageSpeedup.toFixed(2)}x`);
86
+ console.log(`Peak speedup: ${metrics.peakSpeedup.toFixed(2)}x`);
87
+ console.log(`Average execution time: ${metrics.averageExecutionTimeMs.toFixed(3)}ms`);
88
+ console.log(`Success rate: ${metrics.successRate.toFixed(1)}%`);
89
+ }
90
+ // ============================================================================
91
+ // Main Demo Runner
92
+ // ============================================================================
93
+ async function runAllExamples() {
94
+ try {
95
+ await basicUsageExample();
96
+ await benchmarkExample();
97
+ await comprehensiveSuiteExample();
98
+ await targetValidationExample();
99
+ await metricsTrackingExample();
100
+ console.log('\n=== All Examples Completed ===\n');
101
+ }
102
+ catch (error) {
103
+ console.error('Error running examples:', error);
104
+ process.exit(1);
105
+ }
106
+ }
107
+ // Run if executed directly
108
+ if (import.meta.url === `file://${process.argv[1]}`) {
109
+ runAllExamples();
110
+ }
111
+ // Export for programmatic use
112
+ export { basicUsageExample, benchmarkExample, comprehensiveSuiteExample, targetValidationExample, metricsTrackingExample, runAllExamples, };
113
+ //# sourceMappingURL=flash-attention-demo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flash-attention-demo.js","sourceRoot":"","sources":["../../src/examples/flash-attention-demo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Quick Integration Test
4
+ *
5
+ * Verifies @ruvector/attention integration is working correctly.
6
+ * Run with: npx tsx v3/@sparkleideas/performance/src/examples/quick-test.ts
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=quick-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-test.d.ts","sourceRoot":"","sources":["../../src/examples/quick-test.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * Quick Integration Test
4
+ *
5
+ * Verifies @ruvector/attention integration is working correctly.
6
+ * Run with: npx tsx v3/@sparkleideas/performance/src/examples/quick-test.ts
7
+ */
8
+ import { FlashAttention } from '@ruvector/attention';
9
+ import { createFlashAttentionOptimizer, quickBenchmark, } from '../attention-integration.js';
10
+ async function quickTest() {
11
+ console.log('\n๐Ÿงช Quick Integration Test\n');
12
+ console.log('โ”'.repeat(60));
13
+ try {
14
+ // Test 1: Direct @ruvector/attention usage
15
+ console.log('\nโœ“ Test 1: Direct @ruvector/attention usage');
16
+ const flash = new FlashAttention(128, 64); // dim, blockSize
17
+ const query = new Float32Array(128).fill(1.0);
18
+ const keys = [new Float32Array(128).fill(1.0)];
19
+ const values = [new Float32Array(128).fill(1.0)];
20
+ const result = flash.compute(query, keys, values);
21
+ console.log(` Result: Float32Array[${result.length}]`);
22
+ // Test 2: V3 optimizer
23
+ console.log('\nโœ“ Test 2: V3 FlashAttentionOptimizer');
24
+ const optimizer = createFlashAttentionOptimizer(128);
25
+ const output = optimizer.optimize({
26
+ query: new Float32Array(128).fill(1.0),
27
+ keys: Array.from({ length: 50 }, () => new Float32Array(128).fill(1.0)),
28
+ values: Array.from({ length: 50 }, () => new Float32Array(128).fill(1.0)),
29
+ });
30
+ console.log(` Execution time: ${output.executionTimeMs.toFixed(3)}ms`);
31
+ console.log(` Runtime: ${output.runtime}`);
32
+ // Test 3: Quick benchmark
33
+ console.log('\nโœ“ Test 3: Quick benchmark');
34
+ const benchResult = quickBenchmark(256);
35
+ console.log(` Flash: ${benchResult.flashAttention.averageTimeMs.toFixed(3)}ms`);
36
+ console.log(` Baseline: ${benchResult.baseline.averageTimeMs.toFixed(3)}ms`);
37
+ console.log(` Speedup: ${benchResult.speedup.toFixed(2)}x`);
38
+ console.log(` Meets target: ${benchResult.meetsTarget ? 'YES โœ“' : 'NO โœ—'}`);
39
+ console.log('\n' + 'โ”'.repeat(60));
40
+ console.log('\nโœ… All tests passed! Integration working correctly.\n');
41
+ return true;
42
+ }
43
+ catch (error) {
44
+ console.error('\nโŒ Test failed:', error);
45
+ console.log('\n' + 'โ”'.repeat(60) + '\n');
46
+ return false;
47
+ }
48
+ }
49
+ // Run test
50
+ quickTest().then(success => {
51
+ process.exit(success ? 0 : 1);
52
+ });
53
+ //# sourceMappingURL=quick-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-test.js","sourceRoot":"","sources":["../../src/examples/quick-test.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,6BAA6B,EAC7B,cAAc,GACf,MAAM,6BAA6B,CAAC;AAErC,KAAK,UAAU,SAAS;IACtB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAE5B,IAAI,CAAC;QACH,2CAA2C;QAC3C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB;QAC5D,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAExD,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,6BAA6B,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC;YAChC,KAAK,EAAE,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;YACtC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1E,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAE5C,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAE7E,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,WAAW;AACX,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC"}