-
Getting Started
-
FAQs
-
Getting Performance
-
Case Studies
-
Offload™ Library
-
C++ Language Extensions
-
Runtime API
-
Command Line Options
- -snvsips3
- -offloadshowptrcalls
- -nomemcpycacheflush
- -minmemcpysize=[n]
- -memcpydmasize=[n]
- -cachesets=[n]
- -warnonouterreadswrites
- -offloadshowptrcalls
- -BEspul[opt]
- -BEspuL[opt]
- -finline-limit=[n]
- -unroll-factor=[n]
- -outputoffloadcode
- -fno-access-control
- -O[n]
- -BEO[n]
- -BEspuopt:[opt]
- -showcallstackonduplerror
- -ignoretrapwordonspu
- -save-temps
- -ocdir [dir]
- -warnouterthiscalls
-
The liboffload header
-
Software caching library
-
Data locality library
-
Constructs library
-
PS3 SDK Function Overloads
-
Technical Information
-
Compiler Errors
- Summary
- Offload1101
- Offload3001
- Offload3005
- Offload3007
- Offload4000
- Offload4001
- Offload4002
- Offload4003
- Offload4105
- Offload4106
- Offload4107
- Offload2401
- Offload2400
- Offload2302
- Offload1108
- Offload1109
- Offload1115
- Offload1122
- Offload1201
- Offload1202
- Offload2000
- Offload2100
- Offload2200
- Offload2301
- Offload4108
-
Compiler Advice
-
Compiler Warnings
-
-
Features
-
Calling PPU functions from SPU
-
Accessing Global Variables
-
PPU virtual methods on SPU
-
Exploiting SPU Performance
-
Using Altivec Instrinsics
-
Using SPU Instrinsics
-
The Software Cache
-
Type Safe Pointers
-
VMX2SPU Engine
-
Compiler Advice
-
Implicit Function Duplication
-
Structure Type Duplication
-
Helpful command line options
-
Offload (SPU) Job functions
-
Core compiler features
-
Offload™ Library
C++ Language Extensions
__outer_call
Functions With That Modifier Will Execute On PPU When Called From The SPU.
This article was updated on 2011-06-03 04:10:51
One of the most useful features of Offload™ is being able to call a function on PPU from SPU using __outer_call.
#include <liboffload>
static int foo() __outer_call;
static int func()
{
offloadThread_t handle = __offload()
{
int bar = foo(); // calls back onto the PPU and performs its execution there
};
}
In the above example, the function foo will have its execution performed on the PPU, before returning the result back within the Offload™ context. This may be useful for example for PPU memory allocations from the SPU.
Some restrictions apply on functions with the outer_call attribute.
- cannot be virtual methods
- all pointer variables must be outer pointers (pointers to main memory)
- the this pointer (if a non-static member function) must be an outer pointer
- all duplicated types must be outer
__outer_call is simply a define to __attribute__((outer_call)) within the library header.
Note that outer calls interrupt the PPU, so doing many outer calls severly impact performance!

