annotate example/bitonic_sort/spe/swap.cc @ 2054:2e7a6f40672f draft

add param(4) in FileMapReduce.cc
author masa
date Fri, 29 Jan 2016 15:56:28 +0900
parents 33af6d6e1bfc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2035
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include "swap.h"
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 SchedDefineTask1(swap,swap);
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 static int
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 swap(SchedTask* s, void* rbuf,void* wbuf)
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 {
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 int* inData = (int*)s->get_input(rbuf, 0);
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 int* outData = (int*)s->get_output(wbuf, 0);
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 int index = s->x;
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 int block = (int)s->get_param(0);
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 int dist = (int)s->get_param(1);
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 int x = index/(block/2);
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 int i = index+block*x;
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 int temp = inData[i];
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 if (x%2 == 0) {
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 if (inData[i+dist] < inData[i]) {
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 outData[i] = inData[i+dist];
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 outData[i+dist] = temp;
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 }
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 } else {
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 if (inData[i] < inData[i+dist]) {
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 outData[i] = inData[i+dist];
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 outData[i+dist] = temp;
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 }
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 }
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 return 0;
33af6d6e1bfc add bitonic sort
Shohei KOKUBO <e105744@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 }