"CharityEngine" (Service Connection)

Run compute jobs on a global network of volunteer devices, ranging from a single small job to a massively parallel compute job spanning hundreds of thousands of nodes.

This service connection provides direct access to the Charity Engine Remote API. Use the "CharityEngine" batch computation provider for high-level submission of Wolfram Language jobs. »

Connecting & Authenticating

ServiceConnect["CharityEngine"] creates a connection to the Charity Engine Remote API.
Consult the TemplateBox[{{Charity,  , Engine,  , website}, {URL[https://www.charityengine.com/marketplace], None}, https://www.charityengine.com/marketplace, HyperlinkActionRecycled, {HyperlinkActive}, BaseStyle -> {Hyperlink}, HyperlinkAction -> Recycled}, HyperlinkTemplate] for information on signing up to submit jobs. You may have to contact Charity Engine in order to create an account and obtain an authenticator key.

Requests

ServiceExecute["CharityEngine","request",params] sends a request to the Charity Engine Remote API, using parameters params. The following give possible requests.

Create and Manipulate Jobs

Requests:

"JobCreate" create one or more jobs

Parameters:
  • "AppName"(required)Docker image or application name to execute
    "CleanupFiles"Truewhether output directory should be cleaned
    "CommandLine"(required)command line string to execute
    "Copies"1number of identical copies to execute
    "EncryptedInputFiles"Falsewhether input file contents are encrypted
    "EncryptedInputURLs"Falsewhether input file URLs are encrypted
    "EncryptedOutputFiles"Falsewhether output file contents should be encrypted
    "EncryptedOutputURLs"Falsewhether output file URLs should be encrypted
    "EULAAccepted"Falsewhether end-user license agreement of a proprietary application is accepted
    "InputFiles"{}list of input file URLs or hashes
    "InstanceType"default from Charity Engineinstance type to use
    "PublicKey"Nonepublic key string to encrypt output file URLs and contents
    "Tag"Nonearbitrary job metadata string
    "Timeout"max number of hours to run for
    "UseOwnDevices"Falsewhether to run on local devices instead of public network
  • Requests:

    "JobList" get a list of submitted jobs

    Parameters:
  • "Page"1page of 100 results to retrieve
  • Requests:

    "JobStatus" get the status of one or multiple jobs

    "JobAbort" terminate one or multiple running jobs

    Parameters:
  • "JobID"(required)a single job ID
    "JobIDs"(required)a list of job IDs
  • Create and Manipulate Files

    Requests:

    "FileExists" check if a file exists on the server

    Parameters:
  • "FileHash"(required)MD5 hash of the file data
  • Requests:

    "FileUpload" upload a file to the server

    Parameters:
  • "Data"(required)file data as File or ByteArray
    "FileHash"calculated from file dataMD5 hash of the file data
  • Access and Manage System Information

    Requests:

    "InstanceTypes" list all instance types supported by the system

    Examples

    Basic Examples  (3)

    Create a connection by launching an authentication dialog:

    Submit a compute job:

    Check the status of the submitted job:

    Upload a file to Charity Engine:

    Submit a job using the uploaded file as input:

    Retrieve the job status:

    Import the job's output file:

    Get a list of currently available instance types: