1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #include <stdint.h>
- #include <starpu.h>
- void cpu_mult(void *descr[], void *arg)
- {
- (void)arg;
- float *subA, *subB, *subC;
- uint32_t nxC, nyC, nyA;
- uint32_t ldA, ldB, ldC;
-
- subA = (float *)STARPU_MATRIX_GET_PTR(descr[0]);
- subB = (float *)STARPU_MATRIX_GET_PTR(descr[1]);
- subC = (float *)STARPU_MATRIX_GET_PTR(descr[2]);
-
- nxC = STARPU_MATRIX_GET_NX(descr[2]);
- nyC = STARPU_MATRIX_GET_NY(descr[2]);
- nyA = STARPU_MATRIX_GET_NY(descr[0]);
- ldA = STARPU_MATRIX_GET_LD(descr[0]);
- ldB = STARPU_MATRIX_GET_LD(descr[1]);
- ldC = STARPU_MATRIX_GET_LD(descr[2]);
-
- unsigned i,j,k;
- for (i = 0; i < nyC; i++)
- {
- for (j = 0; j < nxC; j++)
- {
- float sum = 0.0;
- for (k = 0; k < nyA; k++)
- {
- sum += subA[j+k*ldA]*subB[k+i*ldB];
- }
- subC[j + i*ldC] = sum;
- }
- }
- }
|