Nano f-1 GPU
Clemylia commited on
Commit
347d77e
·
verified ·
1 Parent(s): 5bd246c

Create src/f1_kernel_core.cpp

Browse files
Files changed (1) hide show
  1. src/f1_kernel_core.cpp +29 -0
src/f1_kernel_core.cpp ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Fichier : f1_kernel_core.cpp
2
+ #include <immintrin.h> // Accès aux instructions vectorielles (le "moteur" du F-1)
3
+
4
+ extern "C" {
5
+ // Le Kernel F-1 : Multiplication de matrices ultra-optimisée
6
+ void launch_f1_kernel(float* A, float* B, float* C, int size) {
7
+ // On traite les données par blocs de 8 nombres à la fois (Vectorisation)
8
+ for (int i = 0; i < size; ++i) {
9
+ for (int k = 0; k < size; ++k) {
10
+ // Chargement d'une valeur de A en mode "Broadcast"
11
+ __m256 a_vec = _mm256_set1_ps(A[i * size + k]);
12
+
13
+ for (int j = 0; j < size; j += 8) {
14
+ // Chargement de 8 valeurs de B
15
+ __m256 b_vec = _mm256_loadu_ps(&B[k * size + j]);
16
+ // Chargement des résultats actuels dans C
17
+ __m256 c_vec = _mm256_loadu_ps(&C[i * size + j]);
18
+
19
+ // L'opération FMA (Fused Multiply-Add) : C = A * B + C
20
+ // C'est le cœur de la puissance du GPU-NANO F-1
21
+ c_vec = _mm256_fmadd_ps(a_vec, b_vec, c_vec);
22
+
23
+ // Stockage du résultat
24
+ _mm256_storeu_ps(&C[i * size + j], c_vec);
25
+ }
26
+ }
27
+ }
28
+ }
29
+ }