IP Library Granted Patent US 7,737,994
Granted Patent B1
US 7,737,994 · App. 10/673,088 · Granted Jun 15, 2010

Large-kernel convolution using multiple industry-standard graphics accelerators

Assignee: Oracle America, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,737,994
App. No.
10/673,088
Granted
Jun 15, 2010
Kind
B1
Abstract

A multi-chip system and method are disclosed that utilizes a plurality of graphics pipelines to perform large kernel convolution. Each graphics pipeline includes a standard rendering unit and a video data convolve unit. Each video data convolve unit receives video pixel data from the video output of the standard rendering unit. The video data convolve units are connected in a chain. Each group of one or more video data convolve units in the chain convolves the video pixel data received by the group. The last video data convolve unit in the chain outputs a stream of convolved pixels.

Claims (21)

1. A method for distributed convolution of stacked digital video data in a plurality of video data convolve units connected in a chain comprising (for each video data convolve unit):

receiving video pixel data from a video output of a dedicated rendering unit; storing the video pixel data in a video line buffer;

performing a partial convolution as part of a distributed process to determine values for a convolved pixel by calculating partial convolution sums for the pixels in the line buffer that are located within a convolution kernel corresponding to the location of a convolved pixel;

adding the partial convolution sums to any corresponding accumulated partial convolution sums received from a prior video data convolve unit in the chain to form new accumulated partial convolution sums, unless the video data convolve unit is the first video data convolve unit in the chain;

sending the new accumulated partial convolution sums to the next video data convolve unit in the chain, unless the video data convolve unit is the last video data convolve unit in the chain;

specifying a different jitter value or jitter pattern for each rendering unit; sending vertex data for each geometric primitive to each rendering unit; rendering pixel values for each jittered pixel location that lies within a geometric primitive; and

outputting the pixel values.

2. A method for distributed convolution of stacked digital video data in a plurality of video data convolve units connected in a chain comprising (for each video data convolve unit):

receiving video pixel data from a video output of a dedicated rendering unit; storing the video pixel data in a video line buffer;

performing a partial convolution as part of a distributed process to determine values for a convolved pixel by calculating partial convolution sums for the pixels in the line buffer that are located within a convolution kernel corresponding to the location of a convolved pixel;

adding the partial convolution sums to any corresponding accumulated partial convolution sums received from a prior video data convolve unit in the chain to form new accumulated partial convolution sums, unless the video data convolve unit is the first video data convolve unit in the chain;

sending the new accumulated partial convolution sums to the next video data convolve unit in the chain, unless the video data convolve unit is the last video data convolve unit in the chain; and

further comprising for the last video data convolve unit in the chain:

determining parameter values for a convolved pixel from the final accumulated partial convolution sums, storing the convolved pixel values in a video output buffer, and outputting the convolved pixel data.

3. The method of claim 2 , wherein determining parameter values for a convolved pixel comprises (for each parameter) dividing the final accumulated sum of weighted video pixel values for the parameter by a sum of weights, wherein the weights are determined for locations of each video pixel that is within the convolution kernel.

4. A method for distributed convolution of stacked digital video data in a plurality of video data convolve units connected in a chain comprising (for each video data convolve unit):

receiving video pixel data from a video output of a dedicated rendering unit; storing the video pixel data in a video line buffer;

performing a partial convolution as part of a distributed process to determine values for a convolved pixel by calculating partial convolution sums for the pixels in the line buffer that are located within a convolution kernel corresponding to the location of a convolved pixel;

adding the partial convolution sums to any corresponding accumulated partial convolution sums received from a prior video data convolve unit in the chain to form new accumulated partial convolution sums, unless the video data convolve unit is the first video data convolve unit in the chain;

sending the new accumulated partial convolution sums to the next video data convolve unit in the chain, unless the video data convolve unit is the last video data convolve unit in the chain; and

wherein the video pixel data from each rendering unit are determined for primitives that are geometrically expanded in both x and y dimensions by an integer factor of 2 or more; and wherein convolved pixel values are determined from the geometrically expanded pixel data and then assigned to convolved pixel locations determined by reducing the expanded locations by the same integer factor.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037306/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2004
From: WASSERMAN, MICHAEL A.; KUBALSKA, EWA M.; NAEGLE, NATHANIEL DAVID; EMBERLING, BRIAN D.; RAMSEY, PAUL R.
To: SUN MICROSYSTEMS, INC.
Reel/Frame 015192/0185 →