• Aucun résultat trouvé

Software Carry-Save for Fast Multiple-Precision Algorithms

N/A
N/A
Protected

Academic year: 2021

Partager "Software Carry-Save for Fast Multiple-Precision Algorithms"

Copied!
13
0
0

Texte intégral

(1)Software Carry-Save for Fast Multiple-Precision Algorithms David Defour, Florent de Dinechin. To cite this version: David Defour, Florent de Dinechin. Software Carry-Save for Fast Multiple-Precision Algorithms. [Research Report] LIP RR-2002-08, Laboratoire de l’informatique du parallélisme. 2002, 2+10p. �hal02102038�. HAL Id: hal-02102038 https://hal-lara.archives-ouvertes.fr/hal-02102038 Submitted on 17 Apr 2019. HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.. L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés..

(2) Laboratoire de l’Informatique du Parallélisme École Normale Supérieure de Lyon Unité Mixte de Recherche CNRS-INRIA-ENS LYON no 5668.     

(3)      .  .

(4)      .  .   

(5)    . École Normale Supérieure de Lyon 46 Allée d’Italie, 69364 Lyon Cedex 07, France Téléphone : +33(0)4.72.72.80.37 Télécopieur : +33(0)4.72.72.80.80 Adresse électronique :   

(6).

(7)     

(8)        .

(9)           

(10)      

(11)              !            " #    

(12)    

(13) !

(14)  $     

(15)  %   !  .   

(16)   $%  

(17)        !

(18)       " &     

(19)        % ' 

(20)  !  

(21)             

(22)  

(23)   

(24)    (" 

(25)        !        !   

(26)   )  !     %       " 

(27)        

(28)    !

(29)  " * 

(30)    

(31)   !   

(32)           

(33)          !    " *     % 

(34)      

(35)      $      +  , 

(36)    " -       

(37)      

(38)       %  

(39)         ".  

(40) .             ".  .           

(41)                   "    /           !      !              $  !

(42)  0     "        

(43) (  !          /  /  

(44)    " 1    2                      !   /0      .  0    .   " .   3  !

(45)         4 0   

(46) ( 3     4   " 5      !          !

(47)   6    

(48) (" 1       /              ".  .             ".

(49)     

(50)      . 7.        % 

(51)  *55589:     ) !   . 

(52)  

(53) 

(54) ; 

(55)  ,    

(56)     . ! 

(57) 

(58)  

(59)   

(60)     

(61)        !  "    

(62)  

(63)      % 

(64)     9<         !

(65) " 

(66)        !         %      

(67)     .  "         

(68)

(69)

(70)  

(71)                 %   %        =>?".    

(72)     *   ;  ! , ! 

(73)     

(74)  .  %        $  

(75) @!! 0   =? @  %0   =? 

(76)   

(77)   

(78)    A    =8?  

(79)  BC     B  % =<? D    

(80) 

(81)   

(82)   .       =:?  -

(83)  =E?" 

(84)      %       %  % !

(85) %      !%" F (   %    

(86)    %      

(87)   % (. ;$    

(88) 

(89) 

(90) !

(91)  

(92)  

(93)   

(94)  *55589:   " -  

(95)      %       %   

(96) 

(97)  

(98)      "     

(99)        

(100) 

(101) 

(102)         %  ' !  *55589: ) !   " - !  

(103)  %   

(104)     

(105) .  

(106)             ' 

(107)  

(108)   

(109)       , ! ,     

(110)   " *    

(111)    

(112)  BC     B  %  

(113) 

(114) 

(115)  !  !  

(116)    

(117)   G  % <  E:  " * B 

(118)     

(119)         %  ! !    $ ! 

(120)      

(121)  % H    !

(122)   

(123)     .  I         %   

(124)   

(125)  " .   !      *55589:   

(126)     % $  " 

(127)  @!! 0=?   @ %0   =?  A  0  

(128)   

(129)   =8?     

(130)               " -

(131)      

(132)       %     " 

(133)   

(134)   

(135)  

(136)  ) !    C       

(137) !

(138) %  G'  $      E: 

(139)   , C F   *  ) !        

(140)  

(141)  !  " @        

(142)    

(143)   

(144)     

(145) !  C 

(146)  !  " -

(147)    !           

(148)     *55589: ) !   

(149)          ,   %  %" -    

(150)     . ' #

(151)  !   %!        .

(152) .   

(153)   .     ! 

(154)    " 

(155)  / 

(156)   . !

(157)  

(158) 

(159)

(160)    %    /! 

(161)         

(162)   =9?" 

(163)      

(164)                      

(165) 

(166)   

(167)    ".   

(168)          &        !    

(169) 

(170)       " J    

(171)          

(172)        ! 

(173)   ! 0    

(174)         

(175)  

(176)   " 

(177) %   H %        

(178)   

(179)                $ "         % -

(180)  K    

(181)  *@  

(182)     % 

(183)   ! =7? 

(184) !

(185)  0 ; %    

(186)  + " L! 

(187)   

(188)         $  ! %  ; 

(189) . !

(190)        " 

(191)             % G        " *         

(192)  

(193)       

(194)  

(195)   " * 

(196)  /    

(197)   (        

(198) 

(199)

(200)  

(201)  

(202)    !    !

(203)    "         -

(204)  %       

(205)        

(206)          

(207) %  %  !   

(208)  " * 

(209)       %    

(210)         %   

(211)     ' &     

(212) !

(213)    

(214) !

(215)  $ %      

(216)  % !   

(217)      

(218) !" -   !

(219)   %  $%    $" *.    

(220)           

(221) 

(222)   %       ,   !  "  

(223)      F        

(224)         ! 

(225)          " F  <   

(226)  !

(227)         I       " F  9                 

(228)   

(229) .           " F  E   

(230)  ".

(231)  

(232) 

(233)                

(234)     

(235)             !

(236)  " 

(237)          

(238)     !

(239)      %

(240)  .

(241) <.     

(242)      .      !" 7" *

(243)     

(244)  !

(245)  $  

(246) .  %   $%      

(247)  L   . !

(248) 

(249)  

(250) %    !     

(251)  ! 

(252)  

(253)    

(254) " X1. X2. X3. X4. Y1. Y2. Y3. Y4. Y4 X1 Y3 X1 Y2 X1 Y1 X1. C1 Z1. Z2. Y1 X2. C2. Z3. Y2 X2 Y1 X3. C3. Y3 X2 Y2 X3. Y4 X2 Y3 X3. Y4 X3. Y4 X4. Y3 X4. Y2 X4. Y1 X4. C4. Z4. ! 7'        

(255)  ;!    

(256)      X  Y      

(257)  n ! xi  yi 

(258) n = 4  

(259)  ;!" 5

(260) !      m     ' 

(261)   !   

(262)  !  B m = 32  64  *55589:       @ %0  % m = 53" 

(263)  !

(264)      

(265)  ;!    ' • 

(266)  ;         %      xi yj " 5

(267)      2m " • 

(268)      

(269)  

(270)    " 

(271)      n  

(272)    

(273) 

(274)   

(275)  

(276)   ci  

(277)   .     2m + log2 n  "  % 

(278)    ci         % m  " 

(279)          % !  !

(280)    

(281)    /  !

(282)  ! 

(283)   m  !  

(284)     , ! 

(285) 

(286) !

(287)    

(288)  $  " 

(289)  $      n!   2n! " #  

(290)  

(291)     

(292)     n!  

(293)   !

(294).   " * 

(295)  /    %     

(296)        !   

(297)    " 

(298) 

(299)  

(300)  )   

(301)   %  

(302)   "  $      , 

(303)    !  

(304)       

(305)               

(306)   !   " #

(307) 

(308)        

(309)     

(310)  %      ! !  

(311)     !  ) !  •.

(312) :.   

(313)   .        

(314)   

(315)      

(316)  

(317)     " -!

(318)   ,  

(319)    ! 

(320)          ! " * @ %0     % 

(321)    ,         

(322)  !  

(323)     " * 

(324)    B  ;. %  ! !       $ !  

(325)    

(326)    ( % 

(327)  ;   " 

(328)      ,  %   !     

(329)     " * B       ! 

(330)        %  !  

(331)         "    n 

(332)   %        

(333)  

(334)      (" * @ %0  % 

(335)        ! ".      

(336)   

(337)      

(338)   ;  !

(339) 

(340)      ! 

(341)  !  X  Y    

(342)  

(343)   ci  ; . 

(344)  " *   mI 

(345)     ( % 

(346)  

(347)    

(348)  

(349) !        %   mr   

(350)      

(351)     $   ' 7 

(352)    

(353)   

(354)        

(355)    . !

(356)   $   

(357)    

(358)  

(359)    ;  

(360)   

(361)  % ! " 

(362)  !   

(363)  

(364)  

(365)   .    " &            

(366)    

(367)           

(368)       " @    

(369)   

(370)          !  ! $ % 

(371)         !  

(372)     $   

(373)     $     " 5/  7     

(374)   mr     

(375) 

(376)    

(377)    !     nr " 

(378)        

(379)    nr ×mr "    !     

(380)        

(381)      !      mr " mI > log2 (nr ) + 2mr. 

(382)   *555     *555     A$ $E A$ $E E: ! E: !. mI. 9M7  9M7  E:  E:  E:  E: . mr. E @ 9 @ < @ > @ < @ > @. nr. 79  E<  <7  78  79  E< .  $"    <> @ 7989 @ >< @ <E< @ :9 @ 78 @. ! ' F $       

(383)    

(384)  

(385) 

(386)      " #  

(387)       ! %        

(388)       

(389)           mr     ! mI " J   %  

(390)   (     ".

(391)     

(392)      . 9.       -        

(393)         R

(394)   ! <" 

(395)  F  . % F  F  F.FF R      

(396)  ! ; '. nr . -    nr ! 

(397) mr       ! 

(398)   !   

(399)    

(400)   

(401)    H   ! 

(402) N.  . - ! ! 

(403)  $  

(404)  ;  !  

(405)   !           ! <N. . - !  ". - F.FF  R       

(406)  

(407)   !     %  

(408)    mr !;   " 

(409)  

(410)    mi  mr  R.digits ;    

(411)  % ;" * R

(412)  ! 

(413) % ; (  0 

(414)  R      " * 

(415)   

(416)    x      R  ' x = R.sign ×. nr . R.digits[j] × 2mr ∗(R.index−j). . j=1. -    ;. X=. Index =. 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 ,1 0 1 0 1 1 1 1 0. 3 3.m r. Value = 2. 2 2.m r. 2. 0 2. mr. −1 2. 0. −2 −mr. 2. −2.mr. 2. R.digits = 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 R.index = 3 R.sign = 1. Software Carry Save Structure (SCSS). ! <' 

(417)       * 

(418)   

(419)   

(420)      

(421)  $  ;   " J  ,   $  

(422)  !  ! 

(423) 

(424)   ; !    

(425)  *55589:        

(426)      

(427)  %   

(428) 

(429) $         " A   ,        

(430)   ,

(431) ". .      . * 

(432)       !

(433)        

(434)   .  "     

(435)      % $ %    

(436)  .  ! ! % $".

(437) E.   

(438)   .    

(439) !   " "" 

(440)     %       ) !   d .  F.FF    " 

(441)  ;     $  

(442)  $  dexp  d  

(443)   

(444)   ! R.index " 

(445)     %  ,! 

(446)  !   d2 " 

(447)        +        % 2−m " -  0

(448)   $  

(449)  $   d     

(450)  

(451)  ;  

(452)  

(453)  $   

(454)         0" exp mr. r.    

(455)  ! "  

(456)    

(457)    d #"  

(458)    R 

(459) R.index = 0 $ d     +/ − ∞  R = d  $ d > 0 R.sign = 1  R.sign = −1 d = −d.  d > 2m

(460) R.index + + d = d × 2−m .  d < 1

(461) R.index − − d = d × 2m  $ i % i ≤ nr % i + + ! r. r. r. = 1. R.digits[i] = d d = (d − R.digits[i]) × 2mr .  #   $ % 

(462)       

(463)           !  

(464) .   " *  %  $  %         F.FF.  " #,!    

(465) !

(466)  ! 

(467) !    .  " 

(468)   mr   !  

(469)   G    

(470)      

(471)  % 

(472) 

(473)     

(474)  $ !"   ,

(475) !

(476)  . ) !  !    ,  ,   !  !  

(477)   !   " #

(478)  ,! 

(479) ! 

(480)      %  !  !  ,".      " " ! "  

(481)    A      #"  

(482)    R     

(483) C[nk + 1] = 0 R.index = A.index $ k = nr % k ≥ 0 % k −m −+m! m +m −1 High = (A[k] + (2 i r + 2 i r )) −(2mi +mr + 2mi +mr −1 ) C[k + 1]+ = A[k] − High C[k] = High × 2−mr . . 2mi −1 .   .

(484)     

(485)      . 8. k = 1. & C[k] = 0

(486) k + + R.index − − $ j = 1 % j ≤ nr % j + + ' k + + ! R.digits[j] = C[k] (  m ×(n −1)+1  ! . . 2. r.  "#""      . r.  $ .      

(487)

(488)         C.digits[1] $       

(489)                       

(490)    (nr − 1)   mr  

(491)     %          

(492)      %         2mr ×(nr −1)+1.    

(493) ! 

(494)      F.FF   % !    

(495)  ! .  " 

(496)      $  ! 

(497) !   

(498)  2m −2 " 

(499)    !  

(500)       

(501)  

(502)    .

(503) !   F.FF  ! 

(504)  $   %  !   " i. )*"  &   ().       mi = 64   mr = 30 '      

(505)

(506)  8 × 109  "#""  . * 

(507)        

(508)     ( 

(509)  .  $            O  P 

(510)    

(511)  % ;  0" 

(512)    %  

(513)        

(514)   $    

(515) !   

(516)   

(517)    mr mi  nr " 

(518)     %    

(519)   !

(520)  

(521) !

(522)   !  

(523) 

(524)    !    " *  %     %   .    

(525) 

(526)  %       

(527)  $  

(528)   ".  

(529)   * 

(530)              %  

(531)     !;   

(532)   " . %  

(533)   !

(534)          !    " 

(535)  F.FF       

(536)       

(537)  ;! 7' 7" .  

(538)      " 

(539)          !  !          " " F  

(540)        " 5

(541)         

(542)   !

(543) " <" .  

(544)    I %  !   " 

(545)      %   ,    $ %  %  .   %       %      

(546)     mr mi nr " 

(547)   %   

(548)   G ".

(549) .   

(550)   .   

(551)       *   

(552)     

(553)         

(554)  , !      %  

(555)       %  " #

(556) F.FF     

(557)             .  "  

(558)       

(559)    F.FF     

(560)  !

(561) ".   +  ,   - " ! "  "#""   #"  

(562)    

(563)     

(564) d = A.sign × 2A.index×m × ( r. A.digits[0]+ 2−mr × A.digits[1]+ 2−2.mr × A.digits[2]+ 2−3.mr × A.digits[3]). 

(565)    !  F.FF     

(566)  !

(567)     

(568)     

(569)     " * 

(570)  !

(571)     4 !  !  

(572)      mi = 53  mr = 26".      *  / H     

(573)         " 

(574)           % (   

(575)   

(576)         

(577)  $  

(578)       %0 

(579)       

(580)      $ " 5 

(581)  ;       

(582)   <  E:   %       %  " #

(583)    .  ;       

(584)   % 

(585)   

(586)        !" *       

(587) .     

(588) 

(589)     ! "">9": 

(590)  %

(591) ! ! 

(592)  

(593)    

(594) 

(595)   ) !   ! 

(596)   

(597)   " * 

(598)          " #     

(599) 

(600)          % B=<?    %  ) !       

(601) @ %0 /    % =?    

(602) K0  %=7?" 5

(603)      %  ! 

(604)  $    106     

(605)          

(606)    "   %   G    F.FF  %" 5

(607)       

(608) F.FF !

(609)   .   

(610)        %  ! " F 

(611)  !   0

(612)   

(613)   %   

(614)  " 

(615)       .  *     %" -      

(616)   ! 

(617)       

(618)  *  

(619)    

(620)         ! 

(621)       

(622)   ,         !

(623)  " J 

(624) 

(625) % 

(626)  

(627).    , 

(628) " -    !      

(629)   

(630) .

(631)     

(632)      . >. A   F.FF " K " @ % " B " *  8<< 

(633) G 7 7<"9 7"8< 7"8 $E . 9EE 

(634) G 7 9"9 "<< "8: F C 9 : 

(635) G 7 7" "< "<8 ! :' .                  A   F.FF " K " @ % " B " *  8<< 

(636) G 7 "8: 9"7 7"> $E . 9EE 

(637) G 7 "<9 >" 7":7 F C 9 : 

(638) G 7 ">8 E"<< 7"<> ! 9' .       )   

(639)     ! %  

(640)     " *

(641)      

(642)  

(643)  /   %    .MM  ! ! 

(644) 

(645)  % (      ". .   

(646)  . #

(647)    

(648)    %             

(649)         

(650)     .     " 

(651)        %

(652) !

(653)   

(654)     %            

(655)   " 

(656)        

(657)  

(658)     ) I!I   

(659)  

(660)           " @!   

(661)      

(662) !

(663) %        " @!        %  " -  ;    

(664)        

(665)  

(666)   

(667) !

(668)     

(669)  

(670)  " #  %   !  

(671)             

(672)      

(673) 

(674)      

(675)   " C ! *55589:  G 

(676) 

(677)      B, 

(678)   ; %  G  "  ,          

(679)   %              

(680)    $  ". 

(681)  =7? -      

(682)     %". 

(683)     ". =? A ) !  

(684)  ".  

(685)  

(686)      

(687) 

(688)  ". =<? B 

(689)  BC      %"  ".

(690) 7.   

(691)   . A   F.FF " K " @ % " B " *  8<< 

(692) G 7 8": <8"87 7"< $E . 9EE 

(693) G 7 "7 ":9 "< F C 9 : 

(694) G 7 <" <":7 7":8 ! E' .         A   F.FF " K " @ % " B " *  8<< 

(695) G 7 8"79 "EE 7"98 $E . 9EE 

(696) G 7 E" "7> "<8 F C 9 : 

(697) G 7 "E: ":E :"<E ! 8' .              =:?   "    

(698)  

(699)  

(700)  " =9? F% @    A  " - 

(701)  %    

(702) /  $! 

(703)       " * *+   #    "   "     #

(704)   ; B .  7" =E? -" .% " L @" Q,  R" Q"  ,  .    

(705)       -   

(706)  'II " " "II I 

(707)  I$"

(708)  7" =8?   A  " 5$   ' !

(709) !

(710)       

(711)  " * .     "

(712)

(713)   - ! 7: A ! 

(714)  B  % 7>>" =? SG J T % F" 1  A  J" @ %" -!

(715)   /     ) !  

(716)  " *  @!  1! ..  .+ $/// " 

(717)    #

(718)   ! 799D7E Q  .  R 7" =>? Q" 16 R""   -"   "    %      " $///    #

(719)  :877'7<9D7:<   7>>".    

(720)     *  J 

(721) !

(722) 

(723)      *    

(724)   ! % ,!".

(725)

Références

Documents relatifs

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des