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).
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.
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.
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.
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With