No Out of Order Execution

Hi

I just realized that the ATI implementation does not seem to support Out of Order Execution. The device is a Radeon HD6970.

What exactly does it mean that OOOE is not supported? Assume the following operations are enqueued:
[ol]
[li]Write to buffer A[/:m:p5jdm2qq][/li][li]Execute kernel that uses A[/:m:p5jdm2qq][/li][li]Write to buffer B[/:m:p5jdm2qq][/li][li]Execute kernel that uses B[/:m:p5jdm2qq][/ol][/li]
Given my setup, is there a chance that operation 2 and 3 run in parallel, thereby overlapping computation and communication?

What exactly does it mean that OOOE is not supported? Given my setup, is there a chance that operation 2 and 3 run in parallel, thereby overlapping computation and communication?

In theory: no, that would not strictly follow the requirements of in-order execution.

In practice: possibly, since kernel execution and memory transfers are usually done by different hardware and drivers will try to optimize aggressively these common cases.

What out-of-order execution means in practice is that you will have to pass appropriate wait lists to each enqueue command since you can no longer rely on the driver executing commands in the same order in which you enqueued them.

Does ATI not support OOOE in general or is it just bad luck with my setup?

And, since I don’t want to start another topic for this: How does enabled Crossfire influence OpenCL behaviour? Does it maybe support faster inter-device copying?

Your last questions would be better asked in AMD’s support forums. I simply don’t know the answers :slight_smile:

Ah sry, I thought you’d be the crack here who just knows about everything :slight_smile:

Seriously, anyone around who uses ATI/AMD card and the platform supports OOOE?

I believe in the AMD APP SDK 2.3 there is no support for out of order execution.