computes

computes.io distributed supercomputer

Usage no npm install needed!

<script type="module">
  import computes from 'https://cdn.skypack.dev/computes';
</script>

README

Computes NPM Module

NPM module for connecting Computes.io kernels to the Computes supercomputer and ultimately interacting with cores.

This example computes 9000! simultaneously across 3 cores.

var computes = require("computes");
var bigInt = require("big-integer");

var operation = "(function(data) { var result=1;for (var i = data*3000+1; i <= data*3000+3000; ++i){result = bigInt(result).multiply(i).toString();}return result; })";

// var operation = "https://gist.githubusercontent.com/computes/df86808c4a9d0a0d489a/raw/11c92b86662a4df5b5db585a1442796333bd1934/test.js";

// Set options
var options = {
  domain: "domain_key_from_computes.io",
  priority: "normal",  //'low', 'normal' & 'high'
  ttl: 60000,  // milliseconds
  delay: 0 //milliseconds
};

// Connect kernel to computes
var job = computes.connect(options.domain);

job.on("ready", function (){
  // Update memory object
  job.memory({"counter":0});

  // Submit operations
  for(var data = 0; data < 3; data++) {
    job.compute(operation, data, options);
  }
});

var jobCount = 0
// Fired as cores return results
job.on("result", function (result){
  console.log(result);
  jobCount++;
  if (jobCount == 3){
    job.disconnect();
  }
});

// Fired by webhooks or messages from cores etc.
job.on("message", function (message){
  console.log(message);
});

// Fired when memory changes by kernel or cores
job.on("memory", function (ram){
  console.log("npm", ram);
});

Notes:

  1. Options are optional
  2. Operation can also be a URL such as a raw gist i.e. https://gist.githubusercontent.com/computes/df86808c4a9d0a0d489a/raw/11c92b86662a4df5b5db585a1442796333bd1934/test.js

API commands include:

  • connect
  • disconnect
  • compute
  • execute
  • cancel
  • message
  • memory