Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!usc!apple!sun-barr!newstop!texsun!convex!hamrick@convex.COM From: hamrick@convex.COM (Ed Hamrick) Newsgroups: comp.arch Subject: VAX 9000 Vector Reduction Message-ID: <3600@convex.UUCP> Date: 1 Dec 89 21:21:42 GMT Sender: news@convex.UUCP Reply-To: hamrick@convex.COM (Ed Hamrick) Organization: Convex Computer Corporation, Seattle, WA Lines: 34 I was recently reviewing the DEC VAX 9000 Architecture, and have a question about how vector reduction operations are implemented. On page 6-4 of the VAX Vector Processing Handbook, it states: "VAX FORTRAN vectorizes statements in loops that use scalars as temporary storage for summation, dot product summation, MIN, MAX, IMIN, and IMAX operations, even when the functions are not explicitly used. For example: IF (S1 .GT. A(I)) S1 = A(I) ! MAX S2 = S2 + A(I) * B(I) ! SUM To do this, the compiler expands the scalar result into a temporary vector of buckets for processing and later collapses the buckets through the appropriate operation (such as IMIN)." However, there are no vector sum reduction instructions (or MIN/MAX) in this handbook. The questions I have are: 1) Does anyone know of any sum/min/max vector instructions on the 9000? 2) Are there any clever ways of using other VAX 9000 instructions to do sum/min/max operations at vector speeds? 3) Is there any way to do dot products on the VAX 9000 at vector speeds? 4) Is there a clever way to do matrix multiplication exclusively with vector instructions, without a sum reduction instruction? How many extra memory load/stores are required? Regards, Ed Hamrick Brought to you by Super Global Mega Corp .com