Skip to content

Commit 6b59816

Browse files
authored
GPU support (#88)
* Format * GPU support * Add description of parameters * Apply suggestions from review * Use OnnxRuntime with GPU
1 parent 3acd930 commit 6b59816

10 files changed

Lines changed: 964 additions & 654 deletions

File tree

VSharp.API/VSharp.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public IEnumerable<FileInfo> Results()
111111

112112
public static class TestGenerator
113113
{
114-
private class Reporter: IReporter
114+
private class Reporter : IReporter
115115
{
116116
private readonly UnitTests _unitTests;
117117
private readonly bool _isQuiet;
@@ -124,7 +124,7 @@ public Reporter(UnitTests unitTests, bool isQuiet)
124124

125125
public void ReportFinished(UnitTest unitTest) => _unitTests.GenerateTest(unitTest);
126126
public void ReportException(UnitTest unitTest) => _unitTests.GenerateError(unitTest);
127-
public void ReportIIE(InsufficientInformationException iie) {}
127+
public void ReportIIE(InsufficientInformationException iie) { }
128128

129129
public void ReportInternalFail(Method? method, Exception exn)
130130
{
@@ -179,7 +179,7 @@ private static Statistics StartExploration(
179179
explorationMode: explorationMode.NewTestCoverageMode(
180180
coverageZone,
181181
options.Timeout > 0 ? searchMode.NewFairMode(baseSearchMode) : baseSearchMode
182-
182+
183183
),
184184
recThreshold: options.RecursionThreshold,
185185
solverTimeout: options.SolverTimeout,
@@ -191,8 +191,11 @@ private static Statistics StartExploration(
191191
stopOnCoverageAchieved: 100,
192192
randomSeed: options.RandomSeed,
193193
stepsLimit: options.StepsLimit,
194-
aiAgentTrainingOptions: options.AIAgentTrainingOptions == null ? FSharpOption<AIAgentTrainingOptions>.None :FSharpOption<AIAgentTrainingOptions>.Some(options.AIAgentTrainingOptions),
195-
pathToModel: options.PathToModel == null ? FSharpOption<string>.None : FSharpOption<string>.Some(options.PathToModel));
194+
aiAgentTrainingOptions: options.AIAgentTrainingOptions == null ? FSharpOption<AIAgentTrainingOptions>.None : FSharpOption<AIAgentTrainingOptions>.Some(options.AIAgentTrainingOptions),
195+
pathToModel: options.PathToModel == null ? FSharpOption<string>.None : FSharpOption<string>.Some(options.PathToModel),
196+
useGPU: options.UseGPU == null ? FSharpOption<bool>.None : FSharpOption<bool>.Some(options.UseGPU),
197+
optimize: options.Optimize == null ? FSharpOption<bool>.None : FSharpOption<bool>.Some(options.Optimize)
198+
);
196199

197200
var fuzzerOptions =
198201
new FuzzerOptions(
@@ -326,7 +329,7 @@ private static int CheckCoverage(
326329
public static Statistics Cover(MethodBase method, VSharpOptions options = new())
327330
{
328331
AssemblyManager.LoadCopy(method.Module.Assembly);
329-
var methods = new List<MethodBase> {method};
332+
var methods = new List<MethodBase> { method };
330333
var statistics = StartExploration(methods, coverageZone.MethodZone, options);
331334

332335
if (options.RenderTests)

VSharp.API/VSharpOptions.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ public readonly record struct VSharpOptions
115115
public readonly uint StepsLimit = DefaultStepsLimit;
116116
public readonly AIAgentTrainingOptions AIAgentTrainingOptions = null;
117117
public readonly string PathToModel = DefaultPathToModel;
118+
public readonly bool UseGPU = false;
119+
public readonly bool Optimize = false;
118120

119121
/// <summary>
120122
/// Symbolic virtual machine options.
@@ -133,6 +135,8 @@ public readonly record struct VSharpOptions
133135
/// <param name="stepsLimit">Number of symbolic machine steps to stop execution after. Zero value means no limit.</param>
134136
/// <param name="aiAgentTrainingOptions">Settings for AI searcher training.</param>
135137
/// <param name="pathToModel">Path to ONNX file with model to use in AI searcher.</param>
138+
/// <param name="useGPU">Specifies whether the ONNX execution session should use a CUDA-enabled GPU.</param>
139+
/// <param name="optimize">Enabling options like parallel execution and various graph transformations to enhance performance of ONNX.</param>
136140
public VSharpOptions(
137141
int timeout = DefaultTimeout,
138142
int solverTimeout = DefaultSolverTimeout,
@@ -147,7 +151,9 @@ public VSharpOptions(
147151
int randomSeed = DefaultRandomSeed,
148152
uint stepsLimit = DefaultStepsLimit,
149153
AIAgentTrainingOptions aiAgentTrainingOptions = null,
150-
string pathToModel = DefaultPathToModel)
154+
string pathToModel = DefaultPathToModel,
155+
bool useGPU = false,
156+
bool optimize = false)
151157
{
152158
Timeout = timeout;
153159
SolverTimeout = solverTimeout;
@@ -163,6 +169,8 @@ public VSharpOptions(
163169
StepsLimit = stepsLimit;
164170
AIAgentTrainingOptions = aiAgentTrainingOptions;
165171
PathToModel = pathToModel;
172+
UseGPU = useGPU;
173+
Optimize = optimize;
166174
}
167175

168176
/// <summary>

0 commit comments

Comments
 (0)