- Refresh Project: Right-click project → Refresh (F5)
- Clean Build: Project → Clean → Clean all projects → OK
- Build: Project → Build All (Ctrl+B)
- Verify: Check Console for "Build finished" with no errors
cd d:\omnetpp-6.2.0\samples\gpu_share\src
opp_makemake -f --deep
make clean
make -j16Source Files:
src/gpu/modules/Scheduler.nedsrc/gpu/modules/Scheduler.ccsrc/gpu/modules/JobClient.nedsrc/gpu/modules/JobClient.cc
Test Files:
simulations/gpu_share_min/package.nedsimulations/gpu_share_min/GPUShareMin.nedsimulations/gpu_share_min/omnetpp.ini
✅ Success indicators:
Creating executable: ../out/clang-release/src/gpu_share.exe
Build finished
❌ Common errors to watch for:
- Missing
Lan_m.h: Message file not generated → Runopp_msgcor full build - Undefined symbols: Module not registered → Check
Define_Module()at global scope - Gate connection errors: Mismatched gate names → Check
.nedconnections
- Navigate to:
simulations/gpu_share_min/omnetpp.ini - Right-click → Run As → OMNeT++ Simulation
- Network:
gpu_share.simulations.gpu_share_min.GPUShareMin - Config:
GPUShareMin_Basic - Choose Qtenv (graphical) → Run
- Click Run button to start simulation
- Observe for 30 seconds of simulation time
Timeline (first 5 seconds):
t=0.0s: All modules initializet=0.2-0.5s: Clients submit first jobst=0.5-1.0s: Hosts send first beaconst=1.0s: Scheduler grants first leasest=1.0s: Hosts start jobs, send JobStartt=3-5s: First jobs complete, JobDone sentt=5s+: More jobs arrive, cycle repeats
Event Log Messages:
- ✅ "JobClient1 submitted job #1000"
- ✅ "Scheduler100 received JobRequest"
- ✅ "GPUHost1 sending beacon, freeSlots=2/2"
- ✅ "Scheduler100 granted lease for job #1000 to host 2"
- ✅ "GPUHost2 started job #1000, freeSlots now=3/4"
- ✅ "JobClient1 job #1000 completed, JCT=3.6s"
Statistics Panel (Results):
scheduler.queueLen: Should show oscillating values (0-2)client[0].jct: Should show ~3-6 second completion timeshost[0].utilization: Should show ~0.3-0.6 averagehost[1].utilization: Should show ~0.4-0.7 average
After running the simulation, verify:
- Build succeeded without errors
- Simulation ran for full 30 seconds
- 10 jobs submitted total (5 from each client)
- ~8-10 jobs completed (some may be in progress at end)
- No error messages in event log
- JCT values reasonable (3-7 seconds typical)
- Queue length oscillates (0-2, not stuck at high value)
- Host utilization >0 (shows jobs are executing)
- Beacons sent periodically (~30 from host[0], ~20 from host[1])
Solution:
cd src/gpu/messages
opp_msgc Lan.msg
cd ../..
makeSolution: Check that Scheduler.ned has correct package:
package gpu_share.gpu.modules;Solution: Check event log for:
- Are beacons reaching scheduler? (Should see "received beacon from host X")
- Are job requests reaching scheduler? (Should see "received JobRequest")
- Check scheduler debug output is enabled in omnetpp.ini
Solution:
- JCT = completionTime - submitTime (includes queue wait + execution)
- Check if jobs are queuing (look at
scheduler.queueLenstatistic) - Verify job durations are ~3-4 seconds (from omnetpp.ini config)
Once you verify Phase 3 is working:
- ✅ Review statistics in Results panel
- ✅ Export result files (.vec, .sca) for analysis
- ✅ Optional: Run multiple repetitions to gather statistical data
- ✅ Proceed to Phase 4: Multi-VLAN + Router implementation
Message Flow:
- GPUHost → Beacon → Scheduler
- JobClient → JobRequest → Scheduler
- Scheduler → LeaseGrant → JobClient + GPUHost
- GPUHost → JobStart → (broadcast)
- GPUHost → JobDone → JobClient
Module Connections:
- All modules connect to
bus.port++(VlanBus vector gate) - Connections use
Lanchannel (100Mbps datarate) - All modules on same VLAN (vlanId=10)
Statistics Recording:
- Scheduler:
queueLen,leaseGranted,hostCount - JobClient:
submittedCount,completedCount,jct - GPUHost:
utilization,beaconCount,jobCount - VlanBus:
frameCount,broadcastCount,throughput
See PHASE3_README.md for complete documentation.