@@ -38,7 +38,7 @@ public void NASParallelWorkloadProfileParametersAreInlinedCorrectly(string profi
3838 WorkloadAssert . ParameterReferencesInlined ( executor . Profile ) ;
3939 }
4040 }
41-
41+
4242 [ Test ]
4343 [ TestCase ( "PERF-HPC-NASPARALLELBENCH.json" , PlatformID . Unix , Architecture . X64 ) ]
4444 [ TestCase ( "PERF-HPC-NASPARALLELBENCH.json" , PlatformID . Unix , Architecture . Arm64 ) ]
@@ -73,8 +73,14 @@ public async Task NASParallelWorkloadProfileExecutesTheExpectedWorkloadsOnUnixPl
7373 {
7474 await executor . ExecuteAsync ( ProfileTiming . OneIteration ( ) , CancellationToken . None ) . ConfigureAwait ( false ) ;
7575
76- var expectedCommands = this . GetProfileExpectedCommands ( platform , architecture ) ;
77-
76+ // The profile uses {calculate({LogicalCoreCount} - 2)} for ThreadCount.
77+ // Read the mock CpuInfo to derive the expected value dynamically.
78+ CpuInfo cpuInfo = await this . mockFixture . SystemManagement . Object
79+ . GetCpuInfoAsync ( CancellationToken . None ) . ConfigureAwait ( false ) ;
80+
81+ int expectedThreadCount = cpuInfo . LogicalProcessorCount - 2 ;
82+ var expectedCommands = this . GetProfileExpectedCommands ( expectedThreadCount , platform , architecture ) ;
83+
7884 WorkloadAssert . CommandsExecuted ( this . mockFixture , expectedCommands . ToArray ( ) ) ;
7985 }
8086 }
@@ -86,7 +92,7 @@ public void NASParallelWorkloadProfileActionsWillNotBeExecutedIfTheWorkloadPacka
8692 {
8793 this . SetupDefaultMockBehavior ( platform , architecture ) ;
8894 // We ensure the workload package does not exist.
89-
95+
9096 this . mockFixture . PackageManager . Clear ( ) ;
9197
9298 using ( ProfileExecutor executor = TestDependencies . CreateProfileExecutor ( profile , this . mockFixture . Dependencies ) )
@@ -97,84 +103,44 @@ public void NASParallelWorkloadProfileActionsWillNotBeExecutedIfTheWorkloadPacka
97103 }
98104 }
99105
100- private IEnumerable < string > GetProfileExpectedCommands ( PlatformID platform = PlatformID . Unix , Architecture architecture = Architecture . X64 )
106+ private IEnumerable < string > GetProfileExpectedCommands ( int expectedThreadCount , PlatformID platform = PlatformID . Unix , Architecture architecture = Architecture . X64 )
101107 {
102- List < string > commands = null ;
103- if ( architecture == Architecture . X64 )
104- {
105- commands = new List < string >
106- {
107- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/bt.D.x\" ",
108- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/cg.D.x\" ",
109- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/ep.D.x\" ",
110- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/ft.D.x\" ",
111- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/is.C.x\" ",
112- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/lu.D.x\" ",
113- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/mg.D.x\" ",
114- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/sp.D.x\" ",
115- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/ua.D.x\" ",
116- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-x64/NPB-OMP/bin/dc.B.x\" ",
117- } ;
118- }
119- else
108+ string platformDir = architecture == Architecture . X64 ? "linux-x64" : "linux-arm64" ;
109+
110+ List < string > commands = new List < string >
120111 {
121- commands = new List < string >
122- {
123- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/bt.D.x",
124- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/cg.D.x\" ",
125- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/ep.D.x\" ",
126- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/ft.D.x\" ",
127- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/is.C.x\" ",
128- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/lu.D.x\" ",
129- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/mg.D.x\" ",
130- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/sp.D.x\" ",
131- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/ua.D.x\" ",
132- $ "bash -c \" export OMP_NUM_THREADS={ Environment . ProcessorCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/linux-arm64/NPB-OMP/bin/dc.B.x\" ",
133- } ;
134- }
112+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/bt.C.x\" ",
113+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/cg.C.x\" ",
114+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/ep.C.x\" ",
115+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/ft.C.x\" ",
116+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/is.C.x\" ",
117+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/lu.C.x\" ",
118+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/mg.C.x\" ",
119+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/sp.C.x\" ",
120+ $ "bash -c \" export OMP_NUM_THREADS={ expectedThreadCount } && /home/user/tools/VirtualClient/packages/nasparallelbench/{ platformDir } /NPB-OMP/bin/ua.C.x\" ",
121+ } ;
135122
136123 return commands ;
137124 }
138125
139126 private void SetupDefaultMockBehavior ( PlatformID platform = PlatformID . Unix , Architecture architecture = Architecture . X64 )
140127 {
141128 this . mockFixture . Setup ( platform , architecture ) ;
142- string [ ] expectedFiles = null ;
129+ string platformDir = architecture == Architecture . X64 ? "linux-x64" : "linux-arm64" ;
143130
144- if ( architecture == Architecture . X64 )
145- {
146- expectedFiles = new string [ ]
147- {
148- @"linux-x64/NPB-OMP/bin/bt.D.x" ,
149- @"linux-x64/NPB-OMP/bin/cg.D.x" ,
150- @"linux-x64/NPB-OMP/bin/ep.D.x" ,
151- @"linux-x64/NPB-OMP/bin/ft.D.x" ,
152- @"linux-x64/NPB-OMP/bin/is.C.x" ,
153- @"linux-x64/NPB-OMP/bin/lu.D.x" ,
154- @"linux-x64/NPB-OMP/bin/mg.D.x" ,
155- @"linux-x64/NPB-OMP/bin/sp.D.x" ,
156- @"linux-x64/NPB-OMP/bin/ua.D.x" ,
157- @"linux-x64/NPB-OMP/bin/dc.B.x" ,
158- @"linux-x64/NPB-OMP/bin/dt.D.x"
159- } ;
160- }
161- else
131+ string [ ] expectedFiles = new string [ ]
162132 {
163- expectedFiles = new string [ ]
164- {
165- @"linux-arm64/NPB-OMP/bin/bt.D.x" ,
166- @"linux-arm64/NPB-OMP/bin/cg.D.x" ,
167- @"linux-arm64/NPB-OMP/bin/ep.D.x" ,
168- @"linux-arm64/NPB-OMP/bin/ft.D.x" ,
169- @"linux-arm64/NPB-OMP/bin/is.C.x" ,
170- @"linux-arm64/NPB-OMP/bin/lu.D.x" ,
171- @"linux-arm64/NPB-OMP/bin/mg.D.x" ,
172- @"linux-arm64/NPB-OMP/bin/sp.D.x" ,
173- @"linux-arm64/NPB-OMP/bin/ua.D.x" ,
174- @"linux-arm64/NPB-OMP/bin/dc.B.x" ,
175- @"linux-arm64/NPB-OMP/bin/dt.D.x"
176- } ;
177- }
133+ $@ "{ platformDir } /NPB-OMP/bin/bt.C.x",
134+ $@ "{ platformDir } /NPB-OMP/bin/cg.C.x",
135+ $@ "{ platformDir } /NPB-OMP/bin/ep.C.x",
136+ $@ "{ platformDir } /NPB-OMP/bin/ft.C.x",
137+ $@ "{ platformDir } /NPB-OMP/bin/is.C.x",
138+ $@ "{ platformDir } /NPB-OMP/bin/lu.C.x",
139+ $@ "{ platformDir } /NPB-OMP/bin/mg.C.x",
140+ $@ "{ platformDir } /NPB-OMP/bin/sp.C.x",
141+ $@ "{ platformDir } /NPB-OMP/bin/ua.C.x",
142+ $@ "{ platformDir } /NPB-OMP/bin/dt.C.x"
143+ } ;
178144
179145 this . mockFixture . SetupPackage ( "nasparallelbench" , expectedFiles : expectedFiles ) ;
180146 }
0 commit comments