Documentation
¶
Overview ¶
Package cuda holds libraries for testing CUDA workloads.
Index ¶
- func InitFlags()
- func RunCudaTests(ctx context.Context, t *testing.T, args *RunCudaTestArgs)
- type BrokenEverywhere
- type BrokenInGVisor
- type Compatibility
- type Feature
- type FullyCompatible
- type NoCrossCompile
- type OnlyOnWindows
- type RequiresMultiGPU
- type RequiresNvSci
- type RequiresP2P
- type RunCudaTestArgs
- type TestEnvironment
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InitFlags ¶
func InitFlags()
InitFlags parses the flags and sets the test.parallel flag to the desired parallelism.
func RunCudaTests ¶
func RunCudaTests(ctx context.Context, t *testing.T, args *RunCudaTestArgs)
RunCudaTests runs CUDA tests.
Types ¶
type BrokenEverywhere ¶
type BrokenEverywhere struct {
Reason string
}
BrokenEverywhere implements `Compatibility` for tests that are broken in all environments.
func (*BrokenEverywhere) IsExpectedFailure ¶
func (*BrokenEverywhere) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*BrokenEverywhere) WillFail ¶
func (be *BrokenEverywhere) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type BrokenInGVisor ¶
type BrokenInGVisor struct {
// OnlyWhenMultipleGPU may be set to true for tests which only fail when
// multiple GPUs are present. This should not be used for tests that
// *require* multiple GPUs to run (use RequiresMultiGPU instead).
// This is for tests that can run on a single or multiple GPUs alike,
// but specifically fail in gVisor when run with multiple GPUs.
OnlyWhenMultipleGPU bool
}
BrokenInGVisor implements `Compatibility` for tests that are broken in gVisor only.
func (*BrokenInGVisor) IsExpectedFailure ¶
func (*BrokenInGVisor) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*BrokenInGVisor) WillFail ¶
func (big *BrokenInGVisor) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type Compatibility ¶
type Compatibility interface {
// WillFail returns a string explaining why the test is expected to fail
// in the given environment, or "" if it isn't expected to fail.
WillFail(ctx context.Context, env *TestEnvironment) string
// IsExpectedFailure checks whether the `logs` (from a failed run of the test
// in the given environment) matches the failure that this test expects in
// that environment. If they match, this function should return nil.
// It is only called when `WillFail` returns a non-empty string for the same
// environment, so it may assume that `env` is non-compatible.
IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
}
Compatibility encodes the compatibility of a test depending on the environment it runs in.
func MultiCompatibility ¶
func MultiCompatibility(compats ...Compatibility) Compatibility
MultiCompatibility implements `Compatibility` with multiple possible Compatibility implementations.
func RequiresFeatures ¶
func RequiresFeatures(features ...Feature) Compatibility
RequiresFeatures implements `Compatibility` for tests that require specific features.
type Feature ¶
type Feature string
Feature is a feature as listed by /list_features.sh.
const ( FeaturePersistentL2Caching Feature = "PERSISTENT_L2_CACHING" FeatureDynamicParallelism Feature = "DYNAMIC_PARALLELISM" FeatureGL Feature = "GL" FeatureTensorCores Feature = "TENSOR_CORES" FeatureCompressibleMemory Feature = "COMPRESSIBLE_MEMORY" FeatureP2P Feature = "P2P" )
All CUDA features listed by /list_features.sh.
type FullyCompatible ¶
type FullyCompatible struct{}
FullyCompatible implements `Compatibility` for tests that are expected to pass in any environment.
func (*FullyCompatible) IsExpectedFailure ¶
func (*FullyCompatible) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*FullyCompatible) WillFail ¶
func (*FullyCompatible) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type NoCrossCompile ¶
type NoCrossCompile struct{}
NoCrossCompile implements `Compatibility` for tests that cannot cross compile.
func (*NoCrossCompile) IsExpectedFailure ¶
func (*NoCrossCompile) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, _ int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*NoCrossCompile) WillFail ¶
func (*NoCrossCompile) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type OnlyOnWindows ¶
type OnlyOnWindows struct{}
OnlyOnWindows implements `Compatibility` for tests that are only expected to only pass on Windows.
func (*OnlyOnWindows) IsExpectedFailure ¶
func (*OnlyOnWindows) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*OnlyOnWindows) WillFail ¶
func (*OnlyOnWindows) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type RequiresMultiGPU ¶
type RequiresMultiGPU struct{}
RequiresMultiGPU implements `Compatibility` for tests that require multiple GPUs.
func (*RequiresMultiGPU) IsExpectedFailure ¶
func (*RequiresMultiGPU) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*RequiresMultiGPU) WillFail ¶
func (*RequiresMultiGPU) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type RequiresNvSci ¶
type RequiresNvSci struct{}
RequiresNvSci implements `Compatibility` for tests that require the NvSci library.
func (*RequiresNvSci) IsExpectedFailure ¶
func (*RequiresNvSci) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*RequiresNvSci) WillFail ¶
func (*RequiresNvSci) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type RequiresP2P ¶
type RequiresP2P struct{}
RequiresP2P implements `Compatibility` for tests that require peer-to-peer communication between GPUs. Implies RequiresMultiGPU, so tests do not need to specify both.
func (*RequiresP2P) IsExpectedFailure ¶
func (*RequiresP2P) IsExpectedFailure(ctx context.Context, env *TestEnvironment, logs string, exitCode int) error
IsExpectedFailure implements `Compatibility.IsExpectedFailure`.
func (*RequiresP2P) WillFail ¶
func (*RequiresP2P) WillFail(ctx context.Context, env *TestEnvironment) string
WillFail implements `Compatibility.WillFail`.
type RunCudaTestArgs ¶
type RunCudaTestArgs struct {
// TestSuiteCompatibility maps test suites to their compatibility data.
// Unmapped test suites are assumed to be fully compatible.
TestSuiteCompatibility map[string]Compatibility
// SkippedTestSuites maps test suites to a skip reason.
// If a test suite is mapped, then all tests in that suite will be skipped.
SkippedTestSuites map[string]string
// TestCompatibility maps test names to their compatibility data.
// Unmapped test names are assumed to be fully compatible.
TestCompatibility map[string]Compatibility
// FlakyTests is a list of tests that are flaky.
// These will be retried up to 3 times in parallel before running 3 times
// serially.
FlakyTests map[string]struct{}
// ExclusiveTests is a list of tests that must run exclusively (i.e. with
// no other test running on the machine at the same time), or they will
// likely fail. These tests are not attempted to be run in parallel.
// This is usually the case for performance tests or tests that use a lot
// of resources in general.
// This saves the trouble to run them in parallel, while also avoiding
// causing spurious failures for the tests that happen to be running in
// parallel with them.
ExclusiveTests map[string]struct{}
// AlwaysSkippedTests don't run at all.
// Each test is mapped to a reason why it should be skipped.
AlwaysSkippedTests map[string]string
// Image is the image to use for the CUDA tests.
Image string
}
RunCudaTestArgs contains arguments for RunCudaTests.
type TestEnvironment ¶
TestEnvironment represents the environment in which a sample test runs.
func GetEnvironment ¶
GetEnvironment returns the environment in which a sample test runs.