Writing A Kernel in C++
Writing A Kernel in C++
Writing A Kernel in C++
1 of 11
Writing a Kernel in C++
! "# $ %&
$ '()*
+ , - & . ( ! "
) .$ *!
!*/ *! 0 $ 1 2& *) 3
4 $ * $ $ *
$ 5 *
$ $ $ $ *
0 4
4 * $ 0
*
! " #
+ 4 *1
# 4 %0 $ #
%* + 0 67 0 86 *
0 9 0 : + *
,0 0 $$ . *
-0 #)
) %*
+ #
%
.. )
/ # " 0 1
23
4
" # 00 %& $' "(% 00 " " 5
65
7
8$ $ 0 *1
*
9$ 5 *
:$ $
;0 *
2 of 11
Writing a Kernel in C++
+ #
%
.. )
/ # " 0 1
/ # " 0 1
23
4
.. ) < + =
" # 00 % > < %5
.. "
" 5 .." <
" # 11 5 .. "
..'
" # 00 %& $ % 00 00 %(% 00 " " 5
65
7
- 0 4 $ 4 $0
4 0
. 4 *
'
; $ 0 <. ) = 4 6+ $ $ $ $
# >* *>%60
+ : + $
< # 0 %0
: + + # 0 ? %0
- $# 0 4%*
7 0) $ $
*)
4 *
+ $ 0 $ 4
$ = *1
0 4 4 *
3 of 11
Writing a Kernel in C++
<< ) E #
+ 0 :++ 0 7
* ?A " << A < + # >"
+ " << >* 0 = 4 0
. *
1 0
*+ 4 $ #%0
#% *+ ? #% ? #%* - $
0 $ $ .
*) $ .
*
+ 0 # $ %
< 0
: + + 0
$0
+ # $ %0
- $ . *
+ # "
@ -)A 4 = *@
4 0? #% ? #%*
5F " B
G C H
G @ I H5 + # "
, 5 0 $ $ 9 0
*+ 4 *
..J " B+
4 of 11
Writing a Kernel in C++
# J"
4
C #
J " 23 5
KJ " 23 5
A "# 23 5
A "' 2#+ D# 3 5
A " 2#+ #3 5
A
" + DA " 5 .. A" >
" << 5 .. << $ " ) ># "
" 5 .. $ " ) @# "
75 .." = < + # (
/ "<
..J " B#
/ # " %J " B+%
J" J" 23
4
L6 5 <<L6 5
A" L2 " + D3 6@CM666 5
7
J" KJ " 23 47
A "J" # 23
4
" 5
5 of 11
Writing a Kernel in C++
A "J" 2#+ #3
4
<2 1LM63
4
L6 5
<< L M6 5
7
<2 <<1L2M6D,933
4
# 23 5 .. + " # + # $C < '$ O
#
7
.. B#
/ # " %J " B+%
2A "3
4
J" A " 5 .. # $2 C A C " *
# " 3
9 * 5 * 0 $
*+ .
9 * 5 * *@ * *+
. @ * *
- $ 'BC&& $ ,-)A*
F )
6 of 11
Writing a Kernel in C++
, 4 . 5 * *
$ 4 0 4 $ 4 *7
4 @'*
.D F )B " D.
E IPE 2%C >%3
? Q2 3
? !E
4
B @ 6@ 66666
4
# " L B5 I# " L B5 II# " L B5
D2B @ 3
B L F! 286R:35
7
B"
4
" L B5 I" L B5 II" L B5
D2B" 3
B L F! 286R:35
7
BC
4
C L B5 IC L B5 IIC L B5
D2BC 3
B L F! 286R:35
7
, 4 @'0
7 5 4 * $ *
* #<#
* B# " B" #
7 of 11
Writing a Kernel in C++
+ 4 . 0 *
* *7 D
A 9 . $ *
.. B#
/ # " %J " B+%
J" A " 5 .. C A C
2A "3
4
A "B' 2%& $' "(%3 5
7
, 5 * $ 0 0
*
- E . *
CO" *+ B 1 B"
" # + < CO" < " B"
8 ( 5 * #, 01 & 0
+ & %
F ) < + ) + + <
; B# 66666668 666666<8 666666<8 66666,R8 ,DD,
E ? $ FFE $ FE $ ?FE $
M B" 66666668 666666<M 666666<M 66666,RM ,DD,
E ? $ FFE $ FE $ ?FE $ B
!< + > $> # B
+ # "
1 $ $ ? #% ? #%* 4 $ $
* 0 * *1
0 ' *
8 of 11
Writing a Kernel in C++
+ 0
8
.. B#
A "I 23
4
.. ) "# + # # + # I
..+ " # # #
A " 2DD# # 323 L SI E IF! II 5
.. + < + C <# #
L D2 D3# # 5
.. # < # #
# # 5
'+ 2 3
4
2D# # 323 5
** 5
# # 5
7
7
A "I @ 23
4
.. ) "# + " # # + " I
.. + < + C <" # #
L D2 D3" # # 5
.. # < " # #
" # # 5
'+ 2 3
4
2D" # # 323 5
** 5
" # # 5
7
7
9 of 11
Writing a Kernel in C++
5F " B
G C H
G @ I H 5 + # "
G @ II H 5 + # "
G @ II @ H5 + # "
# II
# I 5# 2A "3 < # "
# II @
# 5 # "" C + +
+ 5+ +
.D F )B " D.
E IPE 2%C >%3
? Q2 3
? !E
4
B @ 6@ 66666
4
# " L B5 I# " L B5 II# " L B5
D2B @ 3
B L F! 286R:35
7
B"
4
II E IF! II L B5 FE 22II E I? II *
II E IF! II3 . 8 * ,3 D2B# 3 FE 263 II E I? II
L B5
II E IF! II L B5 FE 22II E I? II *
II E IF! II3 . 8 * ,3 D2B" 3 FE 263 II E I? II L
B5
BC
4
C L B5 IC L B5 IIC L B5
D2BC 3
B L F! 286R:35
10 of 11
Writing a Kernel in C++
4 & >* F C ) .
5 * & 4 ()
*1 $ () 0 *
11 of 11