The GreenButton Cloud API is how you tell GreenButton Cloud Fabric how to run your workloads.
For each type of workload you want to process, you'll implement a job splitter and a task processor.
The job splitter describes how to split the workload into parallelisable pieces called tasks. For example, an animation workload might be split up into individual frames; a weather prediction workload might be split up into tiles. Many compute-intensive applications already include this kind of logic for parcelling out work across multiple cores or machines, so typically your job splitter just recapitulates that logic. Some applications don't need a task splitter because the application already handles parallelisation – an example is applications implemented using MPI (Message Passing Interface).
The task processor has two roles: first, it describes how to process each task, and second, it describes how to combine the task results into a final output. Your task processor invokes your existing application binary, which is hosted within Cloud Fabric. For example, for a frame task in an animation workload, you'd invoke your existing rendering program; to create the final output, you might invoke a tool such as ffmpeg to create a movie from the frames , or you might just archive all the frames into a single zip file for the user to download, review and process.
Many job splitters and task processors can be implemented in only a few lines of code. Because GreenButton Cloud Fabric takes care of loading your application and setting up the data files the application will run on, you often don't need to do much more than construct a command line to invoke the application executable.
The current version of the GreenButton Cloud API is implemented as a .NET SDK, and can be programmed using languages such as C#, Visual Basic or F#. Versions for C++ and Java are planned – please contact us if you would like early access to these.
To make it as easy as possible to build and test your cloud code, the GreenButton SDK includes templates and extensions for Microsoft Visual Studio, and an emulator so you can run your code instantly, without needing to deploy it to the cloud, and debug it conveniently on your own machine.