Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Continuous Integration Service for GPU package?

Continuous integration services are wonderful for continually testing updates to packages for various languages. These include services like Travis-CI, Jenkins, and Shippable among many others. However, as I have explored these different services I have yet to find one that mentions support for software that leverages GPUs (NVIDIA, AMD, or otherwise). Does anyone know if any such service exists?

I realize this is not a strict programming question but I have searched this site and other forums and cannot find an answer. Perhaps no such service currently exists but I'm sure such information would be valuable to GPU programmers (CUDA and OpenCL alike).

like image 312
cdeterman Avatar asked May 01 '15 12:05

cdeterman


People also ask

What is continuous integration (CI)?

Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. The CI process is comprised of automatic tools that assert the new code’s correctness before integration.

What is continuous integration in DevOps?

Continuous integration (CI) is the practice of automating the integration of code changes from multiple contributors into a single software project. It’s a primary DevOps best practice, allowing developers to frequently merge code changes into a central repository where builds and tests then run.

What are the benefits of Google continuous integration tools?

GCP’s continuous integration tools let you create automated builds, run tests, provision environments, and scan artifacts for security vulnerabilities — all within minutes. Speed up developer feedback by running builds and tests on machines connected via Google’s high-performance global network.

What is the difference between integration phase and continuous delivery phase?

The integration phase is the the first step in the process. Integration covers the process of multiple developers attempting to merge their code changes with the master code repository of a project. Continuous Delivery is the next extension of continuous integration.


2 Answers

Travis-CI (and probably other services that allow package installation) may be used to test OpenCL-based packages. Check travis configuration files for VexCL, Boost.Compute, or ViennaCL for examples.

The key here is to install packages providing support for running OpenCL on CPU. In all of the above examples this is done by installing fglrx=2:8.960-0ubuntu1 and opencl-headers. fglrx is a GPU driver by AMD, but it also provides CPU support. As far as I know, this is the only such package that may be installed out of the box on Ubuntu/Travis-CI.

In case of CUDA I think you are out of luck, since Travis-CI instances do not have an NVIDIA GPU installed.

like image 132
ddemidov Avatar answered Oct 07 '22 08:10

ddemidov


You can use Cirun.io which creates self-hosted runners for GitHub Actions on your Cloud. It gives you the freedom to chose GPU/CPU machines on your cloud provider. Also note that its free for Open source.

Here is a simple example of the .cirun.yml configuration file for spinning up GPU runners on AWS with GitHub Actions:

# Self-Hosted Github Action Runners on AWS via Cirun.io
# Reference: https://docs.cirun.io/reference/yaml.html
runners:
  - name: gpu-runner
    # Cloud Provider: AWS
    cloud: aws
    instance_type: g4dn.xlarge
    # NVIDIA Deep Learning AMI from AWS Marketplace
    # https://aws.amazon.com/marketplace/pp/prodview-e7zxdqduz4cbs
    machine_image: ami-00ac0c28c01352e53
    # preemptible instances seems quite less reliable.
    preemptible: false
    # Path of the relevant workflow file
    workflow: .github/workflows/test.yml
    # Number of runners to provision on every trigger on Actions job
    # See .github/workflows/build-gpu.yml
    count: 1
like image 35
Amit Kumar Avatar answered Oct 07 '22 07:10

Amit Kumar