SlideShare a Scribd company logo
1 of 56
Download to read offline
. 1.
8 1 21 10
8 1 21 10
è t : :
è ln a F
è pu ke i
– rsx
• Fg o h V P LN
• .. da k N LP LN
– I
• 1 S ke iG )0)2 2H v LP M
E A ( A 8A C
è 21 . F
è 21 . 21 . CA
è 2 0. 2 .2 F
è 21 . CA 2 0. 2 .2
è
1 8 81 22 1 08 . . .
3 23 02102 0 .. 2 3 2 3 2
è Vlo s /
– DLLI, D FEA F GC H C
è
– . / W
– re hn gb pR sa W
• re hn
• i sa U gb pR sa
– iR xU PdRlv S
• iR , N+ -:6 8 0: 64 4/4- 2 2 N CHG
• t , 6 4: . . 8I G. 8I G2 6 LF 6 L F
)
O ( + 1EN L .H IH LEHG -FF ECDL M A
[1] J.Ragan-Kelley, et al, Halide: A Language and Compiler for Optimizing Parallelism, Locality, and Recomputation in Image Processing Pipelines, PLDI 2013
) ) ) ( (
è iL a v lD
– x A
– iC H
• a n e
• gdLr s h iC H
• FLo L
è 10 D
a l
– t
– 5202. L p
0 5 5 5 0 2 11 50. 5 58
èd a
è a S
– c
– 0 6 C e
– F
– A
8 6 2 2 6 21 00 .6
2
7 2 02102 0 .. 2 2 2
Func conv3x3(Func in)
{
Func f;
Var x, y;
RDom r(-1, 3, -1, 3);
Func clamped = BoudnaryConditions::constant_exterior(in, 0);
f(x, y) = sum(clamped(x+r.x, y+r.y));
return f;
}
2
2 12 10 1 . 1 2 1 2 1
Func conv3x3(Func in)
{
Func f;
Var x, y;
RDom r(-1, 3, -1, 3);
Func clamped = BoudnaryConditions::constant_exterior(in, 0);
f(x, y) = sum(clamped(x+r.x, y+r.y));
return f;
}
8
2
)
( ,2 89- 8 -92 33 20198 8 .
Func conv3x3(Func in)
{
Func f;
Var x, y;
RDom r(-1, 3, -1, 3);
Func clamped = BoudnaryConditions::constant_exterior(in, 0);
f(x, y) = sum(clamped(x+r.x, y+r.y));
return f;
}
F C
A
2
8 (. ) 1 21 ) .10 .
Func conv3x3(Func in)
{
Func f;
Var x, y;
RDom r(-1, 3, -1, 3);
Func clamped = BoudnaryConditions::constant_exterior(in, 0);
f(x, y) = sum(clamped(x+r.x, y+r.y));
return f;
}
F C A
2) .0
2
2 02102 0 .. 2 2 2
Func conv3x3(Func in)
{
Func f;
Var x, y;
RDom r(-1, 3, -1, 3);
Func clamped = BoudnaryConditions::constant_exterior(in, 0);
f(x, y) = sum(clamped(x+r.x, y+r.y));
return f;
}
A 8 C
1
è c M [ sc
– A
• v dhon r sgt Ra
–
• Iuhr
• d Ie p mIpe iI
è n mx ic T ]y l T
– cS Pa ]
– n mx ic S Pa
T
H F C A ) A A C ( A C A8 8A 8
0 2 . 8C ( C C 6 G 16 8 , 8 8 A 68 8 8 (). 1 0( ,
3 23 02102 0 .. 2 3 2 3 2
Func blur_x, blur_y;
Var x, y;
blur_x(x, y) = in(x, y) + in(x+1, y);
blur_y(x, y) = (blur_x(x, y) + blur_x(x, y+1)) / 4;
for (int y=0; y<height; y++) {
for (int x=0; x<width; x++) {
blur_x[y][x] = in[y][x] + in[y][x+1];
}
}
for (int y=0; y<height; y++) {
for (int x=0; x<width; x++) {
blur_y[y][x] =
(blur_x[y][x] + blur_x[y+1][x]) / 4;
}
}
for (int y=0; y<height; y++) {
for (int x=0; x<width; x++) {
blur_x[0][x] = in[y][x] + in[y][x+1];
blur_x[1][x] =
in[y+1][x] + in[y+1][x+1];
}
for (int x=0; x<width; x++) {
blur_y[y][x] =
(blur_x[0][x] + blur_x[1][x]) / 4;
}
}
for (int y=0; y<height; y++) {
for (int x=0; x<width; x++) {
blur_y[y][x] = (in[x][y] + in[x+1][y] +
in[x][y+1] + in[x+1][y+1]) / 4;
}
}8
0 4 0 2 11 0. 8
Func box_filter_3x3(Func in) {
Func blurx, blury;
Var x, y;
blurx(x, y) = (in(x-1, y) + in(x, y) + in(x+1, y))/3;
blury(x, y) = (blurx(x, y-1) + blurx(x, y) + blurx(x, y+1))/3;
if (get_target().has_gpu_feature()) {
blury.gpu_tile(x, y, xi, yi, 32, 8);
blurx.compute_at(blury, x);
} else {
blury.tile(x, y, xi, yi, 256, 32).vectorize(xi, 8).parallel(y);
blurx.compute_at(blury, x).store_at(blury, x).vectorize(x, 8);
}
return blury;
}
F ltd
ltd
è oC rltAgveC
– C xhA PU G
èP sp gve ltai
– P Cgve n
ltd
è1A )5
– 00 IaO VU N
8 o pn
è 5/ C ) A C C
– ghN c m
I elNo
è 2 G
– .2 . 2 CC D P
C FM 8 N idT I
H GCD C ) A D ( DC C 8
è
– 1 68 8 2-.81 7. . /2 8 78 1 2-.
2 8 78 76 7 2 7201 8 7.8.7:.-
7 2 02102 0 .. 2 2 2
è) 0 a d C eg
èov
– s hrF eg
– FH i
• A a FH plA
– tn
( 8 2 2 21 00 .
8 98 8 2 1 1 10
f(x, y) = in(x, y) + 1;
produce f$1 {
let f.y.loop_max = f.y.max
let f.y.loop_min = f.y.min
let f.y.loop_extent = ((f.y.max + 1) - f.y.min)
let f.x.loop_max = f.x.max
let f.x.loop_min = f.x.min
let f.x.loop_extent = ((f.x.max + 1) - f.x.min)
for (f.y, f.y.loop_min, f.y.loop_extent) {
for (f.x, f.x.loop_min, f.x.loop_extent) {
f(f.x, f.x) = in(f.x, f.y) + 1
}
}
}
28 9 1
8 1 10 01 .
M & FG EF )CEDCE G CB E GF E F EI
.
00 1 ) FH8F GF
0C E B
(CHB F B E B
GG B B
2 CDG A L G CB
0CCD 2 EG G CB
)
)C
A B G CB
. 2EC E A
2 FF
BEC B
GCE L G CB
èIRVisitor IRGraphVisitor
– R a 0 0
• rt a
• IRGraphVisitor d e V C a
– n ol s C i V
èIRMutator
– C rt FV 0 0
– vh V A i V
è p VA I gx V
0 0 2 11 0./ 8
è A8 C
2 12 10 1 . 1 2 1 2 1
class PrintLoops : public IRVisitor {
using IRVisitor::visit;
void visit(const For *op) {
std::cout << op->name << std::endl;
IRVisitor::visit(op);
}
};
void print_loops(Stmt s) {
PrintLoops v;
s.accept(v);
}
èF AI
0 3 3 032 11 0. 8
class PrintLoops : public IRVisitor {
using IRVisitor::visit;
void visit(const For *op) {
std::cout << op->name << std::endl;
IRVisitor::visit(op);
}
};
void print_loops(Stmt s) {
PrintLoops v;
s.accept(v);
}
0 0 3 CA CA
è 8
4 2 02102 4 0 .. 2 4 2 2
class PrintLoops : public IRVisitor {
using IRVisitor::visit;
void visit(const For *op) {
std::cout << op->name << std::endl;
IRVisitor::visit(op);
}
};
void print_loops(Stmt s) {
PrintLoops v;
s.accept(v);
}
02C8 4 A8 8F
è F
8 . 5 1 21 5.10 . 5
class PrintLoops : public IRVisitor {
using IRVisitor::visit;
void visit(const For *op) {
std::cout << op->name << std::endl;
IRVisitor::visit(op);
}
};
void print_loops(Stmt s) {
PrintLoops v;
s.accept(v);
}
1 F
C A F
è F SCL A
0 8 6 6 6 80 11 60. 8 6 6
class PrintLoops : public IRVisitor {
using IRVisitor::visit;
void visit(const For *op) {
std::cout << op->name << std::endl;
IRVisitor::visit(op);
}
};
void print_loops(Stmt s) {
PrintLoops v;
s.accept(v);
}
828C 60 8
A C P
7 2 02102 0 .. 2 2 2
è o A A
è hAg C n n e adli
– C A Ag
– n
– n A 8 A F
– n A A
2 12 10 1 . 1 2 1 2 1
) )( )
è bnky ) )( )
– p
• p
• p
• p s p PC
• p dg PC
– p x p t S
• 1 8 1 . 1 S
– l o aedv 01 i r P
– t crh pv F M
è +8 10 801 , 8+ u
A 8 98 8 2 1 1 10
8 Ss
8 . 1 1 c A vu S
–
• 1 . 48 1 8 S n
–
• 1 . 48 1 8 c . 1 1 ha S n
–
• V d V S n
vu l t S P
i IC Sx a S 310 54 2 48 c
i
or mpSiC A e F g S P
4 . 8 8 . 48 55 423 1 1 10
è 1 8 0 3 ed
è 1 : ! F 1 8 :18 "#
I GP
– ! 1 :
– $%
1 8 0 3
• D a VS
– &%
21 .1 1:
• D ed D a bc
C 8 1 ) 1 8 ( 8 A
"#
= $ D#
×($#
, &#
, 1).
≥ 0}
è AC
– 1 8 1 8
• !"#
= (&, ()
– 8. 1 1
• *"#
= (+, ,)
– 1 8 1 8 P
• 0 ≤ & < + (⇒ 0 ≤ & ≤ + − 1)
• 0 ≤ ( < , (⇒ 0 ≤ ( ≤ , − 1)
8 8 8 23 1 1 10
G I F
for (y=0; y<H; y++)
for (x=0; x<W; x++) {
S1: s = 0; //S1
for (ky=0; y<KS; ky++)
for (kx=0; x<KS; kx++)
S2: s += src[y+ky][x+kx] * kernel[ky][kx];
S3: dst[y][x] = s >> t;
}
è AC
– 1 8 1 8
• !"#
= (&, (, )&, )()
– 8. 1 1
• +"#
= (,, -, ./)
– 1 8 1 8 P
• 0 ≤ & < , (⇒ 0 ≤ ( ≤ , − 1)
• 0 ≤ ( < - (⇒ 0 ≤ & ≤ - − 1)
• 0 ≤ )& < ., (⇒ 0 ≤ )& ≤ ., − 1)
• 0 ≤ )( < .- (⇒ 0 ≤ )( ≤ .- − 1)
8 8 8 23 1 1 10
G I F
for (y=0; y<H; y++)
for (x=0; x<W; x++) {
S1: s = 0; //S1
for (ky=0; y<KS; ky++)
for (kx=0; x<KS; kx++)
S2: s += src[y+ky][x+kx] * kernel[ky][kx];
S3: dst[y][x] = s >> t;
}
è 2 C
A D"#
C
è D"$
C
8 . 4 34 13213 .10 3. 4 3 4 3
%"# = { (, * |
1 0 0 0 0
−1 0 1 0 −1
0 1 0 0 0
0 −1 0 1 −1
(
*
H
W
1
≥ 2}
%"$ = (, *, 4(, 4*
1 0 0 0 0 0 0 0
−1 0 1 0 0 0 0 −1
0 1 0 0 0 0 0 0
0 −1 0 1 0 0 0 −1
0 0 1 0 0 0 0 0
0 0 −1 0 0 0 1 −1
0 0 0 1 0 0 0 0
0 0 0 −1 0 0 0 −1
(
*
4(
4*
H
W
KS
1
≥ 2}
%"#
F
for (y=0; y<H; y++)
for (x=0; x<W; x++) {
S1: s = 0; //S1
for (ky=0; y<KS; ky++)
for (kx=0; x<KS; kx++)
S2: s += src[y+ky][x+kx] * kernel[ky][kx];
S3: dst[y][x] = s >> t;
}
O W-1
H-1
y
x
è 050 F VC
è 050 ! 0 3 ,0. "#
A .20 3 1
. 3 $#
("#
) F S
è$#' "#' ≪ $#) "#) ⇒ (!+, "#') (!-, "#)) I
– (≪: A )
3 8 3 312 0 0 0
$#
("#
) = Θ#
×("#
, 2, 1)4
è F d 6 e
è . e N F 6 a
– S F g S
è T S P AC
2 8 2 6 201 .
3
3
for (y=0; y<H; y++)
for (x=0; x<W; x++) {
S1: s = 0; //S1
for (ky=0; ky<KS; ky++)
for (kx=0; kx<KS; kx++)
S2: s += src[y+ky][x+kx] * kernel[ky][kx];
S3: dst[y][x] = s >> t;
}
!"#
$, & = 0, $, 0, &, 0 )
!"* $, &, +$, +& = 0, $, 0, &, 1, +$, 0, +&, 0 )
!"- $, & = 0, $ 0, &, 2 )
T S P
T S PF
è3 CFΘ A
85 5 2 32 21 00 . 5 5 7
"#$
%, ' = 0, %, 1, ', 0 +
=
0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
%
'
H
W
1
"#.
/01
= 0, %, 0, ', 1, 2%, 0, 2' +
=
0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0
%
'
2%
2'
H
W
KS
1
è 0 0 FA IS 3 0
è 0 0 ! 0 3 ,0. "#
FA I
0 ..0 . 3 $("#
) M C I
3 8 3 312 0 0 0
$("#
) = F×("#
, +#
, 1)-
8 . 3 13213 .10 3. 3 3
!"#$%& ', ), *', *) = ' + *', ) + *) -
=
1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0
'
)
*'
*)
H
W
KS
1
!"45$6 ', ) = ', ) -
=
1 0 0 0 0
0 1 0 0 0
'
)
H
W
1
9
for (y=0; y<H; y++)
for (x=0; x<W; x++) {
S1: s = 0; //S1
for (ky=0; y<KS; ky++)
for (kx=0; x<KS; kx++)
S2: s += src[y+ky][x+kx] * kernel[ky][kx];
S3: dst[y][x] = s >> t;
}
è 8102. 82 0 2 AF
C AF
è S 8102. 82 0 2 !"#
$"
– %
•
0: 4 0 2 11 0.
!"#
$" = %×!"($")
) ( 4 2 11 . 8
!"# $, & =
0 0 0 0 0
1 0 0 0 0
0 0 0 0 0
0 1 0 0 0
0 0 0 0 0
$
&
N
M
1
!"#,
$, & =
0 0 0 0 0
0 - 0 0 0
0 0 0 0 0
- 0 0 0 0
0 0 0 0 0
$
&
N
M
1
for (i=0; i<N; i++)
for (j=0; j<M; j++)
S1(i, j);
for (j=0; j<M; j++)
for (i=0; i<N; i++)
S1(i, j);
. =
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
×
F A
0 C
è 2 28 D CVihFh I
2 8 .20 e S I
– e F 2 gc
è 2 28 ! " 2 281280 , 421
#$%&
P dL a
A 8 4 2 2 21
#$%& = ()*, ),)
.$
.&
/$%&
×()$, )&, 1$, 1&, 1)&
≥
≥
=
4}
C 1 . 48 8 .4 F D
– C 1 . 48 8 .4
4 . 8 8 . 48 423 1 1 10
1 1 01 8 310 .
for (i=0; i<N; i++) {
S: s[i] = 0;
for (j=0; j<M; j++) {
T: s[i] = s[i] + a[i][j] * x[j];
}
}
AI
!"#$
=
1 0 0 0 0 0
−1 0 0 1 0 0
0 1 0 0 0 0
0 −1 0 1 0 0
0 0 1 0 0 0
0 0 −1 0 1 0
1 −1 0 0 0 0
)"
)$
*$
+
M
1
≥
≥
≥
≥
≥
≥
=
0
A 0 CD
– 0
– 0
8 44 12 0 0 0
080 0 . 4 20
for (i=0; i<N; i++) {
S: s[i] = 0;
for (j=0; j<M; j++) {
T: s[i] = s[i] + a[i][j] * x[j];
}
}
I F
!"#$
=
1 0 0 0 0 0
−1 0 0 1 0 0
0 1 0 0 0 0
0 −1 0 1 0 0
0 0 1 0 0 0
0 0 −1 0 1 0
1 −1 0 0 0 0
)"
)$
*$
+
M
1
≥
≥
≥
≥
≥
≥
=
0
D. 2 5 8 58 F
– 2 5 8 58
– . 2 5 8 58
D. 2 A 002 80 5 8 S P
– !: #$
= #&
5 5 8 5 4 2 2 21
'$(&
=
1 0 0 0 0 0
−1 0 0 1 0 0
0 1 0 0 0 0
0 −1 0 1 0 0
0 0 1 0 0 0
0 0 −1 0 1 0
1 −1 0 0 0 0
#$
#&
,&
-
M
1
≥
≥
≥
≥
≥
≥
=
0
for (i=0; i<N; i++) {
S: s[i] = 0;
for (j=0; j<M; j++) {
T: s[i] = s[i] + a[i][j] * x[j];
}
}
MIC
2 281280A A421
0
èP 6 4. 4 1 . !"#$
%"#$
DC & L 0 F
– D
& L 0 F A
2 8 8 6 2 4 201 8 8 .
%"#$ = &(" )" − &($ )$ ≫ 0
!"#$
=
1 0 0 0 0 0
−1 0 0 1 0 0
0 1 0 0 0 0
0 −1 0 1 0 0
0 0 1 0 0 0
0 0 −1 0 1 0
1 −1 0 0 0 0
."
.$
/$
0
M
1
≥
≥
≥
≥
≥
≥
=
0
8 .74 4 1 21 .10 . 4 4
è yit
– 0 F8 2 / ro sm
• - 2 2
• 148 C C 4
• / F 44 AA C 4
– x eHagl kc dHe
• vb e uM kph
– -0uM . 2 F P S y n L I
è H
– 8 A 8C 4 2: 2 C 2 F8 2
A 2 A 2 8 A A D
èF I A
– 0 8 4 20/9.4 /04 HC
è . 4
.9 98 9. 44 9 12 90 09 0/
Func matmul(Func a, Func b, int size)
{
Func c;
Var i, j;
RDom k(0, size);
c(i, j) = 0;
c(i, j) += a(k, j) * b(i, k);
return c;
}
for (c$3.s0.j, c$3.s0.j.loop_min, c$3.s0.j.loop_extent) {
for (c$3.s0.i, c$3.s0.i.loop_min, c$3.s0.i.loop_extent) {
c$3(c$3.s0.i, c$3.s0.j) = 0
}
}
for (c$3.s1.j, c$3.s1.j.loop_min, c$3.s1.j.loop_extent) {
for (c$3.s1.i, c$3.s1.i.loop_min, c$3.s1.i.loop_extent) {
for (c$3.s1.r78$x, 0, 100) {
c$3(c$3.s1.i, c$3.s1.j) = (c$3(c$3.s1.i, c$3.s1.j) +
(a$3(c$3.s1.r78$x, c$3.s1.j)*b$3(c$3.s1.i, c$3.s1.r78$x)))
}
}
}
.4 /0 .4 /0
2 02102 0 .. 2 2 25
Building polyhedral models...
Iteration Sets := (c$3.s0.j, c$3.s0.i)
Domain := [c$3.s0.j.loop_min, ((c$3.s0.j.loop_min + c$3.s0.j.loop_extent) + -1)], [c$3.s0.i.loop_min,
((c$3.s0.i.loop_min + c$3.s0.i.loop_extent) + -1)]
Schedule := (2, c$3.s0.j, 0, c$3.s0.i, 0)
Provides :=
c$3 := (c$3.s0.i, c$3.s0.j) : (c$3.s0.i, c$3.s0.j)
Iteration Sets := (c$3.s1.j, c$3.s1.i, c$3.s1.r78$x)
Domain := [c$3.s1.j.loop_min, ((c$3.s1.j.loop_min + c$3.s1.j.loop_extent) + -1)], [c$3.s1.i.loop_min,
((c$3.s1.i.loop_min + c$3.s1.i.loop_extent) + -1)], [0, 99]
Schedule := (3, c$3.s1.j, 0, c$3.s1.i, 0, c$3.s1.r78$x, 0)
Provides :=
c$3 := (c$3.s1.i, c$3.s1.j) : (c$3.s1.i, c$3.s1.j)
Calls :=
c$3 := (c$3.s1.i, c$3.s1.j) : (c$3.s1.i, c$3.s1.j)
a$3 := (c$3.s1.r78$x, c$3.s1.j) : (c$3.s1.r78$x, c$3.s1.j)
b$3 := (c$3.s1.i, c$3.s1.r78$x) : (c$3.s1.i, c$3.s1.r78$x)
0 5 5 5 0 2 11 50. 5 58
for (c$3.s0.j, c$3.s0.j.loop_min, c$3.s0.j.loop_extent) {
for (c$3.s0.i, c$3.s0.i.loop_min, c$3.s0.i.loop_extent) {
c$3(c$3.s0.i, c$3.s0.j) = 0
}
}
for (c$3.s1.j, c$3.s1.j.loop_min, c$3.s1.j.loop_extent) {
for (c$3.s1.i, c$3.s1.i.loop_min, c$3.s1.i.loop_extent) {
for (c$3.s1.r78$x, 0, 100) {
c$3(c$3.s1.i, c$3.s1.j) = (c$3(c$3.s1.i, c$3.s1.j) +
(a$3(c$3.s1.r78$x, c$3.s1.j)*b$3(c$3.s1.i, c$3.s1.r78$x)))
}
}
}
parallel (c$3.s0.j, c$3.s0.j.loop_min, c$3.s0.j.loop_extent) {
for (c$3.s0.i, c$3.s0.i.loop_min, c$3.s0.i.loop_extent) {
c$3(c$3.s0.i, c$3.s0.j) = 0
}
}
parallel (c$3.s1.j, c$3.s1.j.loop_min, c$3.s1.j.loop_extent) {
for (c$3.s1.i, c$3.s1.i.loop_min, c$3.s1.i.loop_extent) {
for (c$3.s1.r78$x, 0, 100) {
c$3(c$3.s1.i, c$3.s1.j) = (c$3(c$3.s1.i, c$3.s1.j) +
(a$3(c$3.s1.r78$x, c$3.s1.j)*b$3(c$3.s1.i, c$3.s1.r78$x)))
}
}
}
10
10
è 2 5 2
2 8 8 5 5 25 201 8 8 .
Building polyhedral models...
Iteration Sets := (f.s1.r4$x)
Domain := [2, 99]
Schedule := (1, f.s1.r4$x, 0)
Provides :=
f := (f.s1.r4$x) : (f.s1.r4$x)
Calls :=
f := ((f.s1.r4$x + -2)) : (f.s1.r4$x)
f := ((f.s1.r4$x + -1)) : (f.s1.r4$x)
Flow: f(f.s1.r4$x) -> f((f.s1.r4$x + -2)) : (=, -, =)
Flow: f(f.s1.r4$x) -> f((f.s1.r4$x + -1)) : (=, -, =)
f(x) = x;
f(r.x) = f(r.x-2) + f(r.x-1);
for (f.s0.x, f.s0.x.loop_min, f.s0.x.loop_extent) {
f(f.s0.x) = f.s0.x
}
for (f.s1.r4$x, 2, 98) {
f(f.s1.r4$x) = (f((f.s1.r4$x + -2)) + f((f.s1.r4$x + -1)))
}
2.
2.
FAC
8 . 5 3 13213 5.10 3. 5 3 3
è 5401
– odHag il n D .
– r L rAp
– H rA v R S Ia
è 5401
– Rtxs ehC a F eh
–
4 8 4 55 42 1 1 10
Prelude to halide_public

More Related Content

What's hot

セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門Takami Sato
 
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜Tomoki Yoshida
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門Fixstars Corporation
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリNVIDIA Japan
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介Masahiro Sakai
 
Rate-Distortion Function for Gamma Sources under Absolute-Log Distortion
Rate-Distortion Function for Gamma Sources under Absolute-Log DistortionRate-Distortion Function for Gamma Sources under Absolute-Log Distortion
Rate-Distortion Function for Gamma Sources under Absolute-Log Distortion奈良先端大 情報科学研究科
 
Introduction to A3C model
Introduction to A3C modelIntroduction to A3C model
Introduction to A3C modelWEBFARMER. ltd.
 
論文紹介-Multi-Objective Deep Reinforcement Learning
論文紹介-Multi-Objective Deep Reinforcement Learning論文紹介-Multi-Objective Deep Reinforcement Learning
論文紹介-Multi-Objective Deep Reinforcement LearningShunta Nomura
 
(DL hacks輪読) Deep Kernel Learning
(DL hacks輪読) Deep Kernel Learning(DL hacks輪読) Deep Kernel Learning
(DL hacks輪読) Deep Kernel LearningMasahiro Suzuki
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてFixstars Corporation
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」ManaMurakami1
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)Shota Imai
 
【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスター【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスターUnity Technologies Japan K.K.
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説LeapMind Inc
 

What's hot (20)

TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門セクシー女優で学ぶ画像分類入門
セクシー女優で学ぶ画像分類入門
 
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
凸最適化 〜 双対定理とソルバーCVXPYの紹介 〜
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ1072: アプリケーション開発を加速するCUDAライブラリ
1072: アプリケーション開発を加速するCUDAライブラリ
 
代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
 
Rate-Distortion Function for Gamma Sources under Absolute-Log Distortion
Rate-Distortion Function for Gamma Sources under Absolute-Log DistortionRate-Distortion Function for Gamma Sources under Absolute-Log Distortion
Rate-Distortion Function for Gamma Sources under Absolute-Log Distortion
 
Introduction to A3C model
Introduction to A3C modelIntroduction to A3C model
Introduction to A3C model
 
深層強化学習と実装例
深層強化学習と実装例深層強化学習と実装例
深層強化学習と実装例
 
論文紹介-Multi-Objective Deep Reinforcement Learning
論文紹介-Multi-Objective Deep Reinforcement Learning論文紹介-Multi-Objective Deep Reinforcement Learning
論文紹介-Multi-Objective Deep Reinforcement Learning
 
(DL hacks輪読) Deep Kernel Learning
(DL hacks輪読) Deep Kernel Learning(DL hacks輪読) Deep Kernel Learning
(DL hacks輪読) Deep Kernel Learning
 
AutoTVM紹介
AutoTVM紹介AutoTVM紹介
AutoTVM紹介
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
 
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
強化学習の基礎と深層強化学習(東京大学 松尾研究室 深層強化学習サマースクール講義資料)
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスター【Unity道場】物理シミュレーション完全マスター
【Unity道場】物理シミュレーション完全マスター
 
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
20180613 [TensorFlow分散学習] Horovodによる分散学習の実装方法と解説
 

Similar to Prelude to halide_public

Attention-Based Adaptive Selection of Operations for Image Restoration in the...
Attention-Based Adaptive Selection of Operations for Image Restoration in the...Attention-Based Adaptive Selection of Operations for Image Restoration in the...
Attention-Based Adaptive Selection of Operations for Image Restoration in the...MasanoriSuganuma
 
katagaitai CTF workshop #10 AESに対する相関電力解析
katagaitai CTF workshop #10 AESに対する相関電力解析katagaitai CTF workshop #10 AESに対する相関電力解析
katagaitai CTF workshop #10 AESに対する相関電力解析trmr
 
Functional Gradient Boosting based on Residual Network Perception
Functional Gradient Boosting based on Residual Network PerceptionFunctional Gradient Boosting based on Residual Network Perception
Functional Gradient Boosting based on Residual Network PerceptionAtsushi Nitanda
 
Model Based Fault Detection, Identification and Accommodation in Antilock Bra...
Model Based Fault Detection, Identification and Accommodation in Antilock Bra...Model Based Fault Detection, Identification and Accommodation in Antilock Bra...
Model Based Fault Detection, Identification and Accommodation in Antilock Bra...Behzad Samadi
 
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」Ken'ichi Matsui
 
20190225 DIY伝送装置
20190225 DIY伝送装置20190225 DIY伝送装置
20190225 DIY伝送装置Kato Ryosuke
 
C Code and the Art of Obfuscation
C Code and the Art of ObfuscationC Code and the Art of Obfuscation
C Code and the Art of Obfuscationguest9006ab
 
كتاب ديما ديما الرياضيات
كتاب ديما ديما الرياضياتكتاب ديما ديما الرياضيات
كتاب ديما ديما الرياضياتidrisshanoun
 
Physique révision
Physique révisionPhysique révision
Physique révisionbadro96
 
TensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning ModelsTensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning ModelsJeongkyu Shin
 
jhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfg
jhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfgjhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfg
jhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfgTonn Za
 
เฉลยข้อสอบเมทริกซ์ ตอนที่ 1
เฉลยข้อสอบเมทริกซ์  ตอนที่ 1เฉลยข้อสอบเมทริกซ์  ตอนที่ 1
เฉลยข้อสอบเมทริกซ์ ตอนที่ 1K'Keng Hale's
 
【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints
【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints
【ECCV 2018】CornerNet: Detecting Objects as Paired Keypointscvpaper. challenge
 
Hiroaki Shiokawa
Hiroaki ShiokawaHiroaki Shiokawa
Hiroaki ShiokawaSuurist
 
Ejercicios prueba de algebra de la UTN- widmar aguilar
Ejercicios prueba de algebra de la UTN-  widmar aguilarEjercicios prueba de algebra de la UTN-  widmar aguilar
Ejercicios prueba de algebra de la UTN- widmar aguilarWidmar Aguilar Gonzalez
 
Mtk khoirul bab 1
Mtk khoirul bab 1Mtk khoirul bab 1
Mtk khoirul bab 1Zinoa
 
Cálculo ii howard anton - capítulo 16 [tópicos do cálculo vetorial]
Cálculo ii   howard anton - capítulo 16 [tópicos do cálculo vetorial]Cálculo ii   howard anton - capítulo 16 [tópicos do cálculo vetorial]
Cálculo ii howard anton - capítulo 16 [tópicos do cálculo vetorial]Henrique Covatti
 

Similar to Prelude to halide_public (20)

Attention-Based Adaptive Selection of Operations for Image Restoration in the...
Attention-Based Adaptive Selection of Operations for Image Restoration in the...Attention-Based Adaptive Selection of Operations for Image Restoration in the...
Attention-Based Adaptive Selection of Operations for Image Restoration in the...
 
katagaitai CTF workshop #10 AESに対する相関電力解析
katagaitai CTF workshop #10 AESに対する相関電力解析katagaitai CTF workshop #10 AESに対する相関電力解析
katagaitai CTF workshop #10 AESに対する相関電力解析
 
Functional Gradient Boosting based on Residual Network Perception
Functional Gradient Boosting based on Residual Network PerceptionFunctional Gradient Boosting based on Residual Network Perception
Functional Gradient Boosting based on Residual Network Perception
 
Model Based Fault Detection, Identification and Accommodation in Antilock Bra...
Model Based Fault Detection, Identification and Accommodation in Antilock Bra...Model Based Fault Detection, Identification and Accommodation in Antilock Bra...
Model Based Fault Detection, Identification and Accommodation in Antilock Bra...
 
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
第13回数学カフェ「素数!!」二次会 LT資料「乱数!!」
 
20190225 DIY伝送装置
20190225 DIY伝送装置20190225 DIY伝送装置
20190225 DIY伝送装置
 
C Code and the Art of Obfuscation
C Code and the Art of ObfuscationC Code and the Art of Obfuscation
C Code and the Art of Obfuscation
 
كتاب ديما ديما الرياضيات
كتاب ديما ديما الرياضياتكتاب ديما ديما الرياضيات
كتاب ديما ديما الرياضيات
 
Estadistica U4
Estadistica U4Estadistica U4
Estadistica U4
 
Physique révision
Physique révisionPhysique révision
Physique révision
 
TensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning ModelsTensorFlow 2: New Era of Developing Deep Learning Models
TensorFlow 2: New Era of Developing Deep Learning Models
 
jhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfg
jhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfgjhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfg
jhkl,l.มือครูคณิตศาสตร์พื้นฐาน ม.4 สสวท เล่ม 2fuyhfg
 
เฉลยข้อสอบเมทริกซ์ ตอนที่ 1
เฉลยข้อสอบเมทริกซ์  ตอนที่ 1เฉลยข้อสอบเมทริกซ์  ตอนที่ 1
เฉลยข้อสอบเมทริกซ์ ตอนที่ 1
 
【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints
【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints
【ECCV 2018】CornerNet: Detecting Objects as Paired Keypoints
 
Basic m4-2-chapter1
Basic m4-2-chapter1Basic m4-2-chapter1
Basic m4-2-chapter1
 
Hiroaki Shiokawa
Hiroaki ShiokawaHiroaki Shiokawa
Hiroaki Shiokawa
 
Mat fin
Mat finMat fin
Mat fin
 
Ejercicios prueba de algebra de la UTN- widmar aguilar
Ejercicios prueba de algebra de la UTN-  widmar aguilarEjercicios prueba de algebra de la UTN-  widmar aguilar
Ejercicios prueba de algebra de la UTN- widmar aguilar
 
Mtk khoirul bab 1
Mtk khoirul bab 1Mtk khoirul bab 1
Mtk khoirul bab 1
 
Cálculo ii howard anton - capítulo 16 [tópicos do cálculo vetorial]
Cálculo ii   howard anton - capítulo 16 [tópicos do cálculo vetorial]Cálculo ii   howard anton - capítulo 16 [tópicos do cálculo vetorial]
Cálculo ii howard anton - capítulo 16 [tópicos do cálculo vetorial]
 

More from Fixstars Corporation

製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptxFixstars Corporation
 
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~Fixstars Corporation
 
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~Fixstars Corporation
 
株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズの会社説明資料(抜粋)株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズの会社説明資料(抜粋)Fixstars Corporation
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fixstars Corporation
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてFixstars Corporation
 
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~Fixstars Corporation
 
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化Fixstars Corporation
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例Fixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方Fixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
第8回 社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 結果発表会第8回社内プログラミングコンテスト 結果発表会
第8回 社内プログラミングコンテスト 結果発表会Fixstars Corporation
 
第8回 社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第1位 taiyo第8回社内プログラミングコンテスト 第1位 taiyo
第8回 社内プログラミングコンテスト 第1位 taiyoFixstars Corporation
 
第8回 社内プログラミングコンテスト 第2位 fy999
第8回社内プログラミングコンテスト 第2位 fy999第8回社内プログラミングコンテスト 第2位 fy999
第8回 社内プログラミングコンテスト 第2位 fy999Fixstars Corporation
 
第8回 社内プログラミングコンテスト 第3位 logicmachine
第8回社内プログラミングコンテスト 第3位 logicmachine第8回社内プログラミングコンテスト 第3位 logicmachine
第8回 社内プログラミングコンテスト 第3位 logicmachineFixstars Corporation
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)Fixstars Corporation
 
A challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAMA challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAMFixstars Corporation
 
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化Fixstars Corporation
 

More from Fixstars Corporation (20)

製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
製造業向け量子コンピュータ時代のDXセミナー_生産計画最適化_20220323.pptx
 
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
製造業向け量子コンピュータ時代のDXセミナー~ 最適化の中身を覗いてみよう~
 
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
製造業向け量子コンピュータ時代のDXセミナー ~見える化、分析、予測、その先の最適化へ~
 
株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズの会社説明資料(抜粋)株式会社フィックスターズの会社説明資料(抜粋)
株式会社フィックスターズの会社説明資料(抜粋)
 
Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)Fpga online seminar by fixstars (1st)
Fpga online seminar by fixstars (1st)
 
Jetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けてJetson活用セミナー ROS2自律走行実現に向けて
Jetson活用セミナー ROS2自律走行実現に向けて
 
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
量子コンピュータ時代の製造業におけるDXセミナー~生産工程効率化に向けた新たなご提案~
 
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
金融業界向けセミナー 量子コンピュータ時代を見据えた組合せ最適化
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
ソフト高速化の専門家が教える!AI・IoTエッジデバイスの選び方
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
第8回 社内プログラミングコンテスト 結果発表会
第8回社内プログラミングコンテスト 結果発表会第8回社内プログラミングコンテスト 結果発表会
第8回 社内プログラミングコンテスト 結果発表会
 
第8回 社内プログラミングコンテスト 第1位 taiyo
第8回社内プログラミングコンテスト 第1位 taiyo第8回社内プログラミングコンテスト 第1位 taiyo
第8回 社内プログラミングコンテスト 第1位 taiyo
 
第8回 社内プログラミングコンテスト 第2位 fy999
第8回社内プログラミングコンテスト 第2位 fy999第8回社内プログラミングコンテスト 第2位 fy999
第8回 社内プログラミングコンテスト 第2位 fy999
 
第8回 社内プログラミングコンテスト 第3位 logicmachine
第8回社内プログラミングコンテスト 第3位 logicmachine第8回社内プログラミングコンテスト 第3位 logicmachine
第8回 社内プログラミングコンテスト 第3位 logicmachine
 
株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)株式会社フィックスターズ 会社説明資料(抜粋)
株式会社フィックスターズ 会社説明資料(抜粋)
 
A challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAMA challenge for thread parallelism on OpenFOAM
A challenge for thread parallelism on OpenFOAM
 
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化
DIC-PCGソルバーのpimpleFoamに対する時間計測と高速化
 

Recently uploaded

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 

Recently uploaded (20)

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 

Prelude to halide_public

  • 1. . 1. 8 1 21 10 8 1 21 10
  • 2. è t : : è ln a F è pu ke i – rsx • Fg o h V P LN • .. da k N LP LN – I • 1 S ke iG )0)2 2H v LP M E A ( A 8A C
  • 3. è 21 . F è 21 . 21 . CA è 2 0. 2 .2 F è 21 . CA 2 0. 2 .2 è 1 8 81 22 1 08 . . .
  • 4. 3 23 02102 0 .. 2 3 2 3 2
  • 5. è Vlo s / – DLLI, D FEA F GC H C è – . / W – re hn gb pR sa W • re hn • i sa U gb pR sa – iR xU PdRlv S • iR , N+ -:6 8 0: 64 4/4- 2 2 N CHG • t , 6 4: . . 8I G. 8I G2 6 LF 6 L F ) O ( + 1EN L .H IH LEHG -FF ECDL M A [1] J.Ragan-Kelley, et al, Halide: A Language and Compiler for Optimizing Parallelism, Locality, and Recomputation in Image Processing Pipelines, PLDI 2013
  • 6. ) ) ) ( ( è iL a v lD – x A – iC H • a n e • gdLr s h iC H • FLo L è 10 D a l – t – 5202. L p 0 5 5 5 0 2 11 50. 5 58
  • 7. èd a è a S – c – 0 6 C e – F – A 8 6 2 2 6 21 00 .6
  • 8. 2 7 2 02102 0 .. 2 2 2 Func conv3x3(Func in) { Func f; Var x, y; RDom r(-1, 3, -1, 3); Func clamped = BoudnaryConditions::constant_exterior(in, 0); f(x, y) = sum(clamped(x+r.x, y+r.y)); return f; }
  • 9. 2 2 12 10 1 . 1 2 1 2 1 Func conv3x3(Func in) { Func f; Var x, y; RDom r(-1, 3, -1, 3); Func clamped = BoudnaryConditions::constant_exterior(in, 0); f(x, y) = sum(clamped(x+r.x, y+r.y)); return f; } 8
  • 10. 2 ) ( ,2 89- 8 -92 33 20198 8 . Func conv3x3(Func in) { Func f; Var x, y; RDom r(-1, 3, -1, 3); Func clamped = BoudnaryConditions::constant_exterior(in, 0); f(x, y) = sum(clamped(x+r.x, y+r.y)); return f; } F C A
  • 11. 2 8 (. ) 1 21 ) .10 . Func conv3x3(Func in) { Func f; Var x, y; RDom r(-1, 3, -1, 3); Func clamped = BoudnaryConditions::constant_exterior(in, 0); f(x, y) = sum(clamped(x+r.x, y+r.y)); return f; } F C A 2) .0
  • 12. 2 2 02102 0 .. 2 2 2 Func conv3x3(Func in) { Func f; Var x, y; RDom r(-1, 3, -1, 3); Func clamped = BoudnaryConditions::constant_exterior(in, 0); f(x, y) = sum(clamped(x+r.x, y+r.y)); return f; } A 8 C
  • 13. 1 è c M [ sc – A • v dhon r sgt Ra – • Iuhr • d Ie p mIpe iI è n mx ic T ]y l T – cS Pa ] – n mx ic S Pa T H F C A ) A A C ( A C A8 8A 8 0 2 . 8C ( C C 6 G 16 8 , 8 8 A 68 8 8 (). 1 0( ,
  • 14. 3 23 02102 0 .. 2 3 2 3 2 Func blur_x, blur_y; Var x, y; blur_x(x, y) = in(x, y) + in(x+1, y); blur_y(x, y) = (blur_x(x, y) + blur_x(x, y+1)) / 4; for (int y=0; y<height; y++) { for (int x=0; x<width; x++) { blur_x[y][x] = in[y][x] + in[y][x+1]; } } for (int y=0; y<height; y++) { for (int x=0; x<width; x++) { blur_y[y][x] = (blur_x[y][x] + blur_x[y+1][x]) / 4; } } for (int y=0; y<height; y++) { for (int x=0; x<width; x++) { blur_x[0][x] = in[y][x] + in[y][x+1]; blur_x[1][x] = in[y+1][x] + in[y+1][x+1]; } for (int x=0; x<width; x++) { blur_y[y][x] = (blur_x[0][x] + blur_x[1][x]) / 4; } } for (int y=0; y<height; y++) { for (int x=0; x<width; x++) { blur_y[y][x] = (in[x][y] + in[x+1][y] + in[x][y+1] + in[x+1][y+1]) / 4; } }8
  • 15. 0 4 0 2 11 0. 8 Func box_filter_3x3(Func in) { Func blurx, blury; Var x, y; blurx(x, y) = (in(x-1, y) + in(x, y) + in(x+1, y))/3; blury(x, y) = (blurx(x, y-1) + blurx(x, y) + blurx(x, y+1))/3; if (get_target().has_gpu_feature()) { blury.gpu_tile(x, y, xi, yi, 32, 8); blurx.compute_at(blury, x); } else { blury.tile(x, y, xi, yi, 256, 32).vectorize(xi, 8).parallel(y); blurx.compute_at(blury, x).store_at(blury, x).vectorize(x, 8); } return blury; } F ltd ltd è oC rltAgveC – C xhA PU G èP sp gve ltai – P Cgve n ltd
  • 16. è1A )5 – 00 IaO VU N 8 o pn è 5/ C ) A C C – ghN c m I elNo è 2 G – .2 . 2 CC D P C FM 8 N idT I H GCD C ) A D ( DC C 8
  • 17. è – 1 68 8 2-.81 7. . /2 8 78 1 2-. 2 8 78 76 7 2 7201 8 7.8.7:.-
  • 18. 7 2 02102 0 .. 2 2 2
  • 19. è) 0 a d C eg èov – s hrF eg – FH i • A a FH plA – tn ( 8 2 2 21 00 .
  • 20. 8 98 8 2 1 1 10 f(x, y) = in(x, y) + 1; produce f$1 { let f.y.loop_max = f.y.max let f.y.loop_min = f.y.min let f.y.loop_extent = ((f.y.max + 1) - f.y.min) let f.x.loop_max = f.x.max let f.x.loop_min = f.x.min let f.x.loop_extent = ((f.x.max + 1) - f.x.min) for (f.y, f.y.loop_min, f.y.loop_extent) { for (f.x, f.x.loop_min, f.x.loop_extent) { f(f.x, f.x) = in(f.x, f.y) + 1 } } } 28 9 1 8 1 10 01 .
  • 21. M & FG EF )CEDCE G CB E GF E F EI . 00 1 ) FH8F GF 0C E B (CHB F B E B GG B B 2 CDG A L G CB 0CCD 2 EG G CB ) )C A B G CB . 2EC E A 2 FF BEC B GCE L G CB
  • 22. èIRVisitor IRGraphVisitor – R a 0 0 • rt a • IRGraphVisitor d e V C a – n ol s C i V èIRMutator – C rt FV 0 0 – vh V A i V è p VA I gx V 0 0 2 11 0./ 8
  • 23. è A8 C 2 12 10 1 . 1 2 1 2 1 class PrintLoops : public IRVisitor { using IRVisitor::visit; void visit(const For *op) { std::cout << op->name << std::endl; IRVisitor::visit(op); } }; void print_loops(Stmt s) { PrintLoops v; s.accept(v); }
  • 24. èF AI 0 3 3 032 11 0. 8 class PrintLoops : public IRVisitor { using IRVisitor::visit; void visit(const For *op) { std::cout << op->name << std::endl; IRVisitor::visit(op); } }; void print_loops(Stmt s) { PrintLoops v; s.accept(v); } 0 0 3 CA CA
  • 25. è 8 4 2 02102 4 0 .. 2 4 2 2 class PrintLoops : public IRVisitor { using IRVisitor::visit; void visit(const For *op) { std::cout << op->name << std::endl; IRVisitor::visit(op); } }; void print_loops(Stmt s) { PrintLoops v; s.accept(v); } 02C8 4 A8 8F
  • 26. è F 8 . 5 1 21 5.10 . 5 class PrintLoops : public IRVisitor { using IRVisitor::visit; void visit(const For *op) { std::cout << op->name << std::endl; IRVisitor::visit(op); } }; void print_loops(Stmt s) { PrintLoops v; s.accept(v); } 1 F C A F
  • 27. è F SCL A 0 8 6 6 6 80 11 60. 8 6 6 class PrintLoops : public IRVisitor { using IRVisitor::visit; void visit(const For *op) { std::cout << op->name << std::endl; IRVisitor::visit(op); } }; void print_loops(Stmt s) { PrintLoops v; s.accept(v); } 828C 60 8 A C P
  • 28. 7 2 02102 0 .. 2 2 2
  • 29. è o A A è hAg C n n e adli – C A Ag – n – n A 8 A F – n A A 2 12 10 1 . 1 2 1 2 1
  • 30. ) )( ) è bnky ) )( ) – p • p • p • p s p PC • p dg PC – p x p t S • 1 8 1 . 1 S – l o aedv 01 i r P – t crh pv F M è +8 10 801 , 8+ u A 8 98 8 2 1 1 10
  • 31. 8 Ss 8 . 1 1 c A vu S – • 1 . 48 1 8 S n – • 1 . 48 1 8 c . 1 1 ha S n – • V d V S n vu l t S P i IC Sx a S 310 54 2 48 c i or mpSiC A e F g S P 4 . 8 8 . 48 55 423 1 1 10
  • 32. è 1 8 0 3 ed è 1 : ! F 1 8 :18 "# I GP – ! 1 : – $% 1 8 0 3 • D a VS – &% 21 .1 1: • D ed D a bc C 8 1 ) 1 8 ( 8 A "# = $ D# ×($# , &# , 1). ≥ 0}
  • 33. è AC – 1 8 1 8 • !"# = (&, () – 8. 1 1 • *"# = (+, ,) – 1 8 1 8 P • 0 ≤ & < + (⇒ 0 ≤ & ≤ + − 1) • 0 ≤ ( < , (⇒ 0 ≤ ( ≤ , − 1) 8 8 8 23 1 1 10 G I F for (y=0; y<H; y++) for (x=0; x<W; x++) { S1: s = 0; //S1 for (ky=0; y<KS; ky++) for (kx=0; x<KS; kx++) S2: s += src[y+ky][x+kx] * kernel[ky][kx]; S3: dst[y][x] = s >> t; }
  • 34. è AC – 1 8 1 8 • !"# = (&, (, )&, )() – 8. 1 1 • +"# = (,, -, ./) – 1 8 1 8 P • 0 ≤ & < , (⇒ 0 ≤ ( ≤ , − 1) • 0 ≤ ( < - (⇒ 0 ≤ & ≤ - − 1) • 0 ≤ )& < ., (⇒ 0 ≤ )& ≤ ., − 1) • 0 ≤ )( < .- (⇒ 0 ≤ )( ≤ .- − 1) 8 8 8 23 1 1 10 G I F for (y=0; y<H; y++) for (x=0; x<W; x++) { S1: s = 0; //S1 for (ky=0; y<KS; ky++) for (kx=0; x<KS; kx++) S2: s += src[y+ky][x+kx] * kernel[ky][kx]; S3: dst[y][x] = s >> t; }
  • 35. è 2 C A D"# C è D"$ C 8 . 4 34 13213 .10 3. 4 3 4 3 %"# = { (, * | 1 0 0 0 0 −1 0 1 0 −1 0 1 0 0 0 0 −1 0 1 −1 ( * H W 1 ≥ 2} %"$ = (, *, 4(, 4* 1 0 0 0 0 0 0 0 −1 0 1 0 0 0 0 −1 0 1 0 0 0 0 0 0 0 −1 0 1 0 0 0 −1 0 0 1 0 0 0 0 0 0 0 −1 0 0 0 1 −1 0 0 0 1 0 0 0 0 0 0 0 −1 0 0 0 −1 ( * 4( 4* H W KS 1 ≥ 2} %"# F for (y=0; y<H; y++) for (x=0; x<W; x++) { S1: s = 0; //S1 for (ky=0; y<KS; ky++) for (kx=0; x<KS; kx++) S2: s += src[y+ky][x+kx] * kernel[ky][kx]; S3: dst[y][x] = s >> t; } O W-1 H-1 y x
  • 36. è 050 F VC è 050 ! 0 3 ,0. "# A .20 3 1 . 3 $# ("# ) F S è$#' "#' ≪ $#) "#) ⇒ (!+, "#') (!-, "#)) I – (≪: A ) 3 8 3 312 0 0 0 $# ("# ) = Θ# ×("# , 2, 1)4
  • 37. è F d 6 e è . e N F 6 a – S F g S è T S P AC 2 8 2 6 201 . 3 3 for (y=0; y<H; y++) for (x=0; x<W; x++) { S1: s = 0; //S1 for (ky=0; ky<KS; ky++) for (kx=0; kx<KS; kx++) S2: s += src[y+ky][x+kx] * kernel[ky][kx]; S3: dst[y][x] = s >> t; } !"# $, & = 0, $, 0, &, 0 ) !"* $, &, +$, +& = 0, $, 0, &, 1, +$, 0, +&, 0 ) !"- $, & = 0, $ 0, &, 2 ) T S P T S PF
  • 38. è3 CFΘ A 85 5 2 32 21 00 . 5 5 7 "#$ %, ' = 0, %, 1, ', 0 + = 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 % ' H W 1 "#. /01 = 0, %, 0, ', 1, 2%, 0, 2' + = 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 % ' 2% 2' H W KS 1
  • 39. è 0 0 FA IS 3 0 è 0 0 ! 0 3 ,0. "# FA I 0 ..0 . 3 $("# ) M C I 3 8 3 312 0 0 0 $("# ) = F×("# , +# , 1)-
  • 40. 8 . 3 13213 .10 3. 3 3 !"#$%& ', ), *', *) = ' + *', ) + *) - = 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 ' ) *' *) H W KS 1 !"45$6 ', ) = ', ) - = 1 0 0 0 0 0 1 0 0 0 ' ) H W 1 9 for (y=0; y<H; y++) for (x=0; x<W; x++) { S1: s = 0; //S1 for (ky=0; y<KS; ky++) for (kx=0; x<KS; kx++) S2: s += src[y+ky][x+kx] * kernel[ky][kx]; S3: dst[y][x] = s >> t; }
  • 41. è 8102. 82 0 2 AF C AF è S 8102. 82 0 2 !"# $" – % • 0: 4 0 2 11 0. !"# $" = %×!"($")
  • 42. ) ( 4 2 11 . 8 !"# $, & = 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 $ & N M 1 !"#, $, & = 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 $ & N M 1 for (i=0; i<N; i++) for (j=0; j<M; j++) S1(i, j); for (j=0; j<M; j++) for (i=0; i<N; i++) S1(i, j); . = 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 × F A 0 C
  • 43. è 2 28 D CVihFh I 2 8 .20 e S I – e F 2 gc è 2 28 ! " 2 281280 , 421 #$%& P dL a A 8 4 2 2 21 #$%& = ()*, ),) .$ .& /$%& ×()$, )&, 1$, 1&, 1)& ≥ ≥ = 4}
  • 44. C 1 . 48 8 .4 F D – C 1 . 48 8 .4 4 . 8 8 . 48 423 1 1 10 1 1 01 8 310 . for (i=0; i<N; i++) { S: s[i] = 0; for (j=0; j<M; j++) { T: s[i] = s[i] + a[i][j] * x[j]; } } AI !"#$ = 1 0 0 0 0 0 −1 0 0 1 0 0 0 1 0 0 0 0 0 −1 0 1 0 0 0 0 1 0 0 0 0 0 −1 0 1 0 1 −1 0 0 0 0 )" )$ *$ + M 1 ≥ ≥ ≥ ≥ ≥ ≥ = 0
  • 45. A 0 CD – 0 – 0 8 44 12 0 0 0 080 0 . 4 20 for (i=0; i<N; i++) { S: s[i] = 0; for (j=0; j<M; j++) { T: s[i] = s[i] + a[i][j] * x[j]; } } I F !"#$ = 1 0 0 0 0 0 −1 0 0 1 0 0 0 1 0 0 0 0 0 −1 0 1 0 0 0 0 1 0 0 0 0 0 −1 0 1 0 1 −1 0 0 0 0 )" )$ *$ + M 1 ≥ ≥ ≥ ≥ ≥ ≥ = 0
  • 46. D. 2 5 8 58 F – 2 5 8 58 – . 2 5 8 58 D. 2 A 002 80 5 8 S P – !: #$ = #& 5 5 8 5 4 2 2 21 '$(& = 1 0 0 0 0 0 −1 0 0 1 0 0 0 1 0 0 0 0 0 −1 0 1 0 0 0 0 1 0 0 0 0 0 −1 0 1 0 1 −1 0 0 0 0 #$ #& ,& - M 1 ≥ ≥ ≥ ≥ ≥ ≥ = 0 for (i=0; i<N; i++) { S: s[i] = 0; for (j=0; j<M; j++) { T: s[i] = s[i] + a[i][j] * x[j]; } } MIC 2 281280A A421
  • 47. 0 èP 6 4. 4 1 . !"#$ %"#$ DC & L 0 F – D & L 0 F A 2 8 8 6 2 4 201 8 8 . %"#$ = &(" )" − &($ )$ ≫ 0 !"#$ = 1 0 0 0 0 0 −1 0 0 1 0 0 0 1 0 0 0 0 0 −1 0 1 0 0 0 0 1 0 0 0 0 0 −1 0 1 0 1 −1 0 0 0 0 ." .$ /$ 0 M 1 ≥ ≥ ≥ ≥ ≥ ≥ = 0
  • 48. 8 .74 4 1 21 .10 . 4 4
  • 49. è yit – 0 F8 2 / ro sm • - 2 2 • 148 C C 4 • / F 44 AA C 4 – x eHagl kc dHe • vb e uM kph – -0uM . 2 F P S y n L I è H – 8 A 8C 4 2: 2 C 2 F8 2 A 2 A 2 8 A A D
  • 50. èF I A – 0 8 4 20/9.4 /04 HC è . 4 .9 98 9. 44 9 12 90 09 0/ Func matmul(Func a, Func b, int size) { Func c; Var i, j; RDom k(0, size); c(i, j) = 0; c(i, j) += a(k, j) * b(i, k); return c; } for (c$3.s0.j, c$3.s0.j.loop_min, c$3.s0.j.loop_extent) { for (c$3.s0.i, c$3.s0.i.loop_min, c$3.s0.i.loop_extent) { c$3(c$3.s0.i, c$3.s0.j) = 0 } } for (c$3.s1.j, c$3.s1.j.loop_min, c$3.s1.j.loop_extent) { for (c$3.s1.i, c$3.s1.i.loop_min, c$3.s1.i.loop_extent) { for (c$3.s1.r78$x, 0, 100) { c$3(c$3.s1.i, c$3.s1.j) = (c$3(c$3.s1.i, c$3.s1.j) + (a$3(c$3.s1.r78$x, c$3.s1.j)*b$3(c$3.s1.i, c$3.s1.r78$x))) } } } .4 /0 .4 /0
  • 51. 2 02102 0 .. 2 2 25 Building polyhedral models... Iteration Sets := (c$3.s0.j, c$3.s0.i) Domain := [c$3.s0.j.loop_min, ((c$3.s0.j.loop_min + c$3.s0.j.loop_extent) + -1)], [c$3.s0.i.loop_min, ((c$3.s0.i.loop_min + c$3.s0.i.loop_extent) + -1)] Schedule := (2, c$3.s0.j, 0, c$3.s0.i, 0) Provides := c$3 := (c$3.s0.i, c$3.s0.j) : (c$3.s0.i, c$3.s0.j) Iteration Sets := (c$3.s1.j, c$3.s1.i, c$3.s1.r78$x) Domain := [c$3.s1.j.loop_min, ((c$3.s1.j.loop_min + c$3.s1.j.loop_extent) + -1)], [c$3.s1.i.loop_min, ((c$3.s1.i.loop_min + c$3.s1.i.loop_extent) + -1)], [0, 99] Schedule := (3, c$3.s1.j, 0, c$3.s1.i, 0, c$3.s1.r78$x, 0) Provides := c$3 := (c$3.s1.i, c$3.s1.j) : (c$3.s1.i, c$3.s1.j) Calls := c$3 := (c$3.s1.i, c$3.s1.j) : (c$3.s1.i, c$3.s1.j) a$3 := (c$3.s1.r78$x, c$3.s1.j) : (c$3.s1.r78$x, c$3.s1.j) b$3 := (c$3.s1.i, c$3.s1.r78$x) : (c$3.s1.i, c$3.s1.r78$x)
  • 52. 0 5 5 5 0 2 11 50. 5 58 for (c$3.s0.j, c$3.s0.j.loop_min, c$3.s0.j.loop_extent) { for (c$3.s0.i, c$3.s0.i.loop_min, c$3.s0.i.loop_extent) { c$3(c$3.s0.i, c$3.s0.j) = 0 } } for (c$3.s1.j, c$3.s1.j.loop_min, c$3.s1.j.loop_extent) { for (c$3.s1.i, c$3.s1.i.loop_min, c$3.s1.i.loop_extent) { for (c$3.s1.r78$x, 0, 100) { c$3(c$3.s1.i, c$3.s1.j) = (c$3(c$3.s1.i, c$3.s1.j) + (a$3(c$3.s1.r78$x, c$3.s1.j)*b$3(c$3.s1.i, c$3.s1.r78$x))) } } } parallel (c$3.s0.j, c$3.s0.j.loop_min, c$3.s0.j.loop_extent) { for (c$3.s0.i, c$3.s0.i.loop_min, c$3.s0.i.loop_extent) { c$3(c$3.s0.i, c$3.s0.j) = 0 } } parallel (c$3.s1.j, c$3.s1.j.loop_min, c$3.s1.j.loop_extent) { for (c$3.s1.i, c$3.s1.i.loop_min, c$3.s1.i.loop_extent) { for (c$3.s1.r78$x, 0, 100) { c$3(c$3.s1.i, c$3.s1.j) = (c$3(c$3.s1.i, c$3.s1.j) + (a$3(c$3.s1.r78$x, c$3.s1.j)*b$3(c$3.s1.i, c$3.s1.r78$x))) } } } 10 10
  • 53. è 2 5 2 2 8 8 5 5 25 201 8 8 . Building polyhedral models... Iteration Sets := (f.s1.r4$x) Domain := [2, 99] Schedule := (1, f.s1.r4$x, 0) Provides := f := (f.s1.r4$x) : (f.s1.r4$x) Calls := f := ((f.s1.r4$x + -2)) : (f.s1.r4$x) f := ((f.s1.r4$x + -1)) : (f.s1.r4$x) Flow: f(f.s1.r4$x) -> f((f.s1.r4$x + -2)) : (=, -, =) Flow: f(f.s1.r4$x) -> f((f.s1.r4$x + -1)) : (=, -, =) f(x) = x; f(r.x) = f(r.x-2) + f(r.x-1); for (f.s0.x, f.s0.x.loop_min, f.s0.x.loop_extent) { f(f.s0.x) = f.s0.x } for (f.s1.r4$x, 2, 98) { f(f.s1.r4$x) = (f((f.s1.r4$x + -2)) + f((f.s1.r4$x + -1))) } 2. 2. FAC
  • 54. 8 . 5 3 13213 5.10 3. 5 3 3
  • 55. è 5401 – odHag il n D . – r L rAp – H rA v R S Ia è 5401 – Rtxs ehC a F eh – 4 8 4 55 42 1 1 10