Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Web[A web-based GUI is coming soon].

Custom Arrangements

Please contact us with any special needs, which may not be covered above.

...

  • Docker images available on Docker Hub (e.g. docker:python:3.7)
  • Custom Docker images available anywhere online (e.g. docker:image-name https://example.com/file for 64bit docker images, or docker-x86:image-name https://example.com/file for 32bit docker images)
  • Applications deployed directly on the Charity Engine network, both open-source and proprietary (e.g. charityengine:wolframengine). For a list, see our App Library.

Each job should be a fully independent, self-contained unit of work. Structure your parameter space so that each job covers a distinct range — for example, a starting offset or task index passed as a command-line argument — and runs a predefined number of iterations calibrated to approximately one hour on an average CPU (e.g. a modern i5 or Ryzen 5).


Info

Example: suppose your application searches a parameter space defined by a single integer offset N. Calibrate how many iterations complete in one hour, then assign each job a distinct starting point:

Job 1: process range starting at 0
myapp --start 0 --count 10000
Job 2: process range starting at 10000
myapp --start 10000 --count 10000
Job 3: ...
myapp --start 20000 --count 10000

The --count value (iterations per job) should be determined so the expected wall time is approximately one hour. If the workload is uneven across the parameter space, err on the side of shorter jobs and submit more of them.

See instructions on the appropriate interface (section 1.1) for further execution details.

...

To run raw code on Charity Engine, just upload your code and specify the relevant execution environment, either using a "named" environment in our App Library, or by specifying an appropriate container on Docker Hub or the web (see 1.2 "Applications", above)

Examples:

A simple example in python would be to run a "hello world" command:

Code Block
languagetext
titlehello-world.py
print("hello world")

Upload and execute this file in Python by using the Remote CLI:

Code Block
languagebash
ce-cli --app "docker:python:slim" --commandline "python /local/input/hello-world.py > /local/output/hello.out" --inputfile hello-world.py --auth [...]

This produces an output file in the local directory named hello.out that contains the text string "hello world".

An example in NodeJS could perform a simple sum of all numbers passed as parameters. Consider a script named calc-sum.js:

Code Block
languagetext
titlecalc-sum.js
const fs = require('node:fs');

var sum = 0;
for (let i = 2; i < process.argv.length; i++) {
  sum += Number(process.argv[i]);
}
try {
  fs.writeFileSync('/local/output/sum.out', sum.toString());
}
catch (e) {
  console.log(e);
}

Because the node Docker container does not handle I/O redirects in the same way as the python container, the script handles writing the output to the correct location within the container and the Remote CLI --commandline only specifies the script and the numbers to include in the sum:

Code Block
languagebash
ce-cli --app "docker:node:slim" --commandline "node /local/input/calc-sum.js 1 2 3 4.2" --inputfile calc-sum.js --auth [...]

This produces an output file named "sum.out" in the local directory, which contains the sum of the numbers given on the command line.

See Packaging as a Docker container for details on how to package your application into a self-sufficient Docker container.sfsdfd

See instructions on the appropriate interface (section 1.1) for further execution details.

...

Textstyles
Colorrgb(236,0,140)

[In development]

 

Support

Please contact us with any questions.

...