source: trunk/platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/matrix_multiplication/matrix_multiplication.c @ 140

Last change on this file since 140 was 140, checked in by kane, 13 years ago

yAjout du multi_cache : plusieurs processeur peuvent ce partager le même cache L1.
2 remarques, (1) deux nouveaux paramètres : nb_cpu, nb_cache. Pour avoir un cache dont le comportement est identique à la version d'avant, mettre ces paramètres à 1.
(2) le port d'interruption est maintenant un tableau dépendant du nombre de processeur.
Voir le fichier "platforms/caba-ring-ccxcachev4_memcachev4-mips32el/top.cpp" pour plus de détails.

--Cette ligne, et les suivantes ci-dessous, seront ignorées--

M platforms/tsarv4_dspin_generic_32/tsarv4_dspin_generic_32_top.cpp
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/segmentation.h
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/top.cpp
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/configuration/default.cfg
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/configuration/gen_config.sh
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/dhrystone/dhry21a.c
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/define.h
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/matrix_multiplication/matrix_multiplication.c
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/common/common.c
A platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/self_code_modifying
A platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/self_code_modifying/self_code_modifying.c
A platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/self_code_modifying/self_code_modifying.h
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark.h
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark_sort.c
A platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark_self_code_modifying.c
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark.c
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/benchmark/benchmark_matrix_multiplication.c
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/soft/Makefile
M platforms/caba-ring-ccxcachev4_memcachev4-mips32el/Makefile
M platforms/tsarv4_vgmn_generic_32/tsarv4_vgmn_generic_32_top.cpp
M modules/vci_cc_xcache_wrapper_v4/caba/source/include/vci_cc_xcache_wrapper_v4.h
M modules/vci_cc_xcache_wrapper_v4/caba/source/src/vci_cc_xcache_wrapper_v4.cpp
M modules/vci_mem_cache_v4/caba/source/include/vci_mem_cache_v4.h
M modules/vci_mem_cache_v4/caba/source/include/mem_cache_directory_v4.h
M modules/vci_mem_cache_v4/caba/source/src/vci_mem_cache_v4.cpp

File size: 1.3 KB
Line 
1#include "matrix_multiplication.h"
2#include "stdio.h"
3#include "system.h"
4#include "stdint.h"
5
6void matrix_multiplication_st (int ** a,
7                               int ** b,
8                               int ** d,
9                               unsigned int n)
10{
11  uint32_t x, y;
12
13  for (x=0; x<n; ++x)
14    {
15      printf("%d, ",x);
16
17      for (y=0; y<n; ++y)
18        {
19          uint32_t i;
20
21          int tmp = 0;
22          for (i=0; i<n; ++i)
23            tmp += a[x][i] * b[i][y];
24          d[x][y] = tmp;
25        }
26    }
27 
28  printf("finish\n");
29}
30
31static uint32_t lock;
32static uint32_t next;
33
34void matrix_multiplication_mt (int ** a,
35                               int ** b,
36                               int ** d,
37                               unsigned int n,
38                               int lock_by_line)
39{
40  uint32_t x, y;
41
42  while (1)
43    {
44      lock_lock(&lock);
45     
46      x=next++;
47     
48      lock_unlock(&lock);
49
50      if (x >= n)
51        break;
52     
53      printf("%d, ",x);
54      for (y=0; y<n; ++y)
55        {
56          int line  =(lock_by_line)?x:y;
57          int column=(lock_by_line)?y:x;
58         
59          int i;
60          int tmp = 0;
61          for (i=0; i<n; ++i)
62            tmp += a[column][i] * b[i][line];
63          d[column][line] = tmp;
64        }
65    }
66 
67  printf("finish\n");
68}
Note: See TracBrowser for help on using the repository browser.