Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <stdio.h>
- #include <omp.h>
- int L, N, I;
- float * inputs;
- float * temp;
- float * weights;
- void printVector (const float *p, const int N) {
- for (int i=0; i<N; i++)
- printf("%f\n",p[i]);
- }
- float activation(float x)
- {
- return x;
- }
- int main(int argc, char *argv[])
- {
- if(argc < 4)
- printf("Usage: openmp <layers> <neurons&inputs>\n");
- else
- {
- L = atoi(argv[1]);
- N = atoi(argv[2]);
- I = atoi(argv[2]);
- inputs = (float*)malloc(I*sizeof(float));
- temp = (float*)malloc(N*I*sizeof(float));
- weights = (float*)malloc(L*I*N*sizeof(float));
- // and fill with some arbitrary values
- for (int i=0; i<I; i++)
- {
- inputs[i] = 0;
- }
- for (int i=0; i<L*N*I; i++)
- {
- weights[i] = 0;
- }
- for(int j=0;j<L;j++)
- {
- #pragma omp parallel for
- for (int i=0; i<I*N; i++)
- {
- temp[i] = inputs[i%I] * weights[j*N*I+i];
- }
- #pragma omp parallel for
- for(int k=0;k<N;k++)
- {
- float sum = 0;
- for(int l=0;l<I;l++)
- {
- sum += temp[k*I+l];
- }
- inputs[k] = activation(sum);
- }
- }
- //printVector (dataY,N);
- free(inputs);
- free(temp);
- free(weights);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement