Skip to content

Scientist interface

David Anderson edited this page May 2, 2023 · 6 revisions

This is a design proposal for the BOINC interface for people who want to do computing with it (e.g. scientists). The goals are:

  • Provide an interface for first-time users that's simple and requires reading little documentation.
  • If users require more features or more computing power, provide it with minimal complexity and documentation.

We do this by dividing the interface into "tiers" (currently 4 of them). Tier 0 (for beginners) is fast and simple; tiers 1-3 are progressively more complex.

Terminology

(for the purposes of this doc).

  • volunteer: someone who runs the BOINC client

  • user: someone who submits jobs (e.g. a scientist)

  • keywords: a hierarchy of words describing

    • science areas
    • project locations (geographical, institutional)

    see https://github.com/BOINC/boinc/wiki/DesignKeywords

  • vetting (of a user):

    • partial vetting: we believe
      • they're doing the computing that they claim to (based on keywords)
      • they're not commercial (doesn't mean they're academic or scientific) This is typically based on an email communication with them, and/or an inspection of their web presence
    • full vetting: we trust them to deploy apps on volunteer hosts
      • they understand and obey security protocols
      • typically based on an email or phone "interview"

Pieces of technology

Universal VM app

A BOINC app that consists of vboxwrapper and a config file that limits resource usage Everything else (VM image, possibly Docker layers, input files) is part of the workunit.

status: not done

boinc2docker

A script and a VM image that takes as input a directory containing executables, libraries, Python and shell scripts and outputs a set of files (docker layers etc.) that, when used as inputs to the universal VM app, run that program.

https://github.com/marius311/boinc2docker

status: need to update, move to BOINC repo

BOINC App library

Includes

  • Universal VM app
  • Standard apps (autodock etc.)

Each app version has a digital signature (use something other than MD5).

Apps can be marked as "safe"; this means a job using that app can't do bad things (DoS, access outside data) regardless of the input files.

Is the universal VM app safe??

Status: not done

BOINC Docker Server

A set of 3 Docker images: DB, Apache, BOINC. A submitter can run these on their own machines or cloud nodes. When started, you have a BOINC project with an Admin user.

Normally the user never has to log in to any of the VMs; they can do everything through web interfaces and APIs:

  • start/stop
  • create accounts, set permissions
  • manage apps and app versions
  • manage project configuration
  • manage job files
  • submit jobs

https://github.com/marius311/boinc-server-docker

Status: out of date; missing web interfaces. need to move this into BOINC repo.

Science United

Volunteers can mark themselves as "demo grid". This means they're willing to run jobs using safe apps for unknown submitters

Projects can be marked as

  • fully vetted: can run any apps
  • partially vetted: can run only safe apps
  • unvetted: can run only safe apps, with demo grid volunteers

status: need to add notions of "demo grid" and safety.

BOINC Central

This lets submitters run jobs without creating a server. It includes all apps in the BOINC library Anyone can create an account, and can submit jobs to safe apps. Vetted submitters can submit jobs to unsafe apps

Extending this idea to its limit, we could let fully vetted submitters create their own apps and app versions here.

status: partly done

generic job submission scripts

  • boinc_app use boinc2docker to make files for app
  • boinc_submit
  • boinc_status
  • boinc_fetch

status: not written yet

make this into a package

Tiers

Tier 0 (serverless option)

  • user creates "job submitter" account on BC
    • set up keywords
  • submit jobs (to safe apps, including VM app)
    • via job submission scripts
      • install BOINC job submission package and boinc2docker package if needed
    • via BC web interface
    • via Raccoon
    • jobs will run on demo grid hosts
  • After partial vetting on BC
    • jobs will run on all SU hosts

Could have an option for user to attach their computers to BC with a config that only does their own jobs

Tier 1 (basic server option; BOINC OOBE doc)

Use if:

  • you need more capacity (computing or data) than what BC can provide
  • or you want to run apps not in library (e.g. GPU versions of your own apps)
  • you can operate a public-facing server

To do:

  1. deploy a server using BOINC server docker
    • install universal VM app (maybe should pre-install)
    • install BOINC client on your own computers
    • run jobs using job submission scripts and boinc2docker
  2. to expand resources:
    • make your server public
    • register project on Science United
    • will get some demo grid volunteers
    • after vetting: will get more volunteers
  3. add apps
    • install from BOINC App library
    • install your own (e.g. native Win/Mac)
      • some remote way of doing this?

Goal: no server login needed

Tier 2: Advanced server option

Use if:

  • you need more efficient job processing, e.g.:
    • not have to move files between hosts
    • or app-specific result validation
    • or features like homogeneous replication
  • you have C++ or Python programming resources
  1. Develop work generators, validators, assimilators on the server
  2. Move your server from Docker to bare system (optional)

You need to log in to your server and develop software there.

A lot of server documentation goes here.

Tier 3: Public server option

Use if:

  • you need more computing than what SU provides
  • you can develop a web site for your project
  • you can do PR to recruit volunteers
  • you can do customer support (e.g. manage volunteer message boards)
  1. Add a web site to your project
  2. Promote your project

A lot of server documentation goes here

Scientist intro

intro page
    do you do high-throughput computing?
        explain what it is

    could you use more HTC computing power?
        Is it expensive?
        Do you have to wait a long time for jobs to finish?
        could you do more/different science if you had more power?

    If so, consider using BOINC-base volunteer computing

    1) get started: link to serverless option
    2) need more and can run a public-facing server: link to basic server option
    3) need even more and have programming resources: link to advanced server option
    4) need still more and can do PR: link to public server option
Clone this wiki locally