home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / sys / super / 1205 < prev    next >
Encoding:
Internet Message Format  |  1993-01-26  |  3.6 KB

  1. Xref: sparky comp.sys.super:1205 comp.arch:12396 comp.compilers:2260
  2. Newsgroups: comp.sys.super,comp.arch,comp.compilers
  3. Path: sparky!uunet!world!iecc!compilers-sender
  4. From: pmontgom@math.orst.edu (Peter Montgomery)
  5. Subject: Re: How many vector registers are useful?
  6. Reply-To: pmontgom@math.orst.edu (Peter Montgomery)
  7. Organization: Oregon State University Math Department
  8. Date: Tue, 26 Jan 1993 03:01:16 GMT
  9. Approved: compilers@iecc.cambridge.ma.us
  10. Message-ID: <93-01-188@comp.compilers>
  11. Keywords: architecture, question
  12. References: <93-01-174@comp.compilers>
  13. Sender: compilers-sender@iecc.cambridge.ma.us
  14. Lines: 65
  15.  
  16. kirchner@uklira.informatik.uni-kl.de (Reinhard Kirchner) writes:
  17. >On discussing various merrits of different vector machines we came about
  18. >the issue of the register architectures. There are on one side the cray and
  19. >convex with 8 vector registers a 64 or 128 words, and on the other side,
  20. >
  21. >The Fujitsu machines with their reconfigurable register file of 32 or
  22. >64kb, which is 4k or 8k words, being grouped from 256 register a 16/32
  23. >words to 8 registers a 512/1024 words.
  24. >
  25. >Now there is the question: is such a large register file useful at all ?
  26.  
  27.         I used an Alliant FX/80 while at UCLA.  It had eight vector
  28. registers each length 32, which could hold integer or floating point
  29. operands.
  30.  
  31.         One time critical routine in my program was multiple precision
  32. modular multiplication.  The assembly language loop which multiplied one
  33. vector of length <= 32 by another such vector had enough vector registers,
  34. but there were insufficient vector registers for another loop which
  35. multiplied two vectors of length <= 64.  These loops also faced a shortage
  36. of scalar integer registers (Motorola 68020 has 8 address and 8 data
  37. registers), requiring me to use a floating point register for one loop
  38. control variables.  I guess that 16 or 32 vector registers will be
  39. adequate for most applications.
  40.  
  41. >But how is this on vector machines ? The register creates a speedup only
  42. >when it can hold an entire vector, which can be used again later. This
  43. >requires a register long enough to do so. That means vectors of e.g. a
  44. >length of 5000 can not be held anyway, every machine must load, process,
  45. >and store it in pieces, and only a lot of memory bandwidth helps.
  46.  
  47.         It is important to strip mine and re-use vectors.  Consider
  48. evaluating a polynomial at 5000 points:
  49.  
  50.         do i = 1, 5000
  51.            pvalue = p(degree)                    ! Leading coefficient
  52.            do j = degree-1, 0, -1
  53.               pvalue = pvalue*x(i) + p(j)        ! Horner's rule
  54.            end do
  55.            value(i) = pvalue
  56.         end do
  57.  
  58. On a machine with vector length at most 64, the code can be
  59.  
  60.         do ibeg = 1, 5000, 64
  61.             iend = MIN(i + 63, 5000)
  62.             lng = iend - ibeg + 1
  63.             pvalue(1:lng) = p(degree)
  64.             do j = degree-1, 0, -1
  65.                pvalue(1:lng) = pvalue(1:lng)*x(ibeg:iend) + p(j)
  66.             end do
  67.             value(ibeg:iend) = pvalue(1:lng)
  68.         end do
  69.  
  70. If pvalue(1:lng) and x(ibeg:iend) are assigned to vector registers across
  71. the j loop, then the only memory reference in that loop is the load of
  72. p(j).  Loops like this (where I operate several times on one temporary
  73. vector, here pvalue) occurred in many parts of my cose.  Alas, the
  74. compiler installed at UCLA did not perform these optimizations.
  75. --
  76. Peter L. Montgomery              Internet: pmontgom@math.orst.edu
  77. Dept. of Mathematics, Oregon State Univ, Corvallis, OR 97331-4605 USA
  78. -- 
  79. Send compilers articles to compilers@iecc.cambridge.ma.us or
  80. {ima | spdcc | world}!iecc!compilers.  Meta-mail to compilers-request.
  81.