Releases: Engr315/Popcount_Autograder
Slow MMIO version - Stable
v2.3 Autograder testing fully supported
In this release is included:
- A
qemubinary which has a popcount hardware device, an MMIO interface and a xilinx AXIDMA hardware interface - Kernel module to handle
mmaping requirements for theUIOpopcount device - Compiled
linux-5.10.4.zImagekernel image - e2fs filesystem with the required binary files to run and test student
user_mmio.canduser_dma.cfiles - Makefile with the necessary commands to run said tests
This is all in an effort to streamline the grading process for projects 5 and 7.
This release should be fully stable for the solutions, and simply require the current setup of p5 and p7 in the autograder to run.
To set this image up on the autograder
- download the
Dockerfilefrom the repository. To do this, either download manually from github, or run:
wget https://raw.githubusercontent.com/Engr315/Popcount_Autograder/main/Dockerfile- Go to the project sandbox images, and upload the dockerfile, and build from this dockerfile.
- To setup the testing environment, follow the setup from P5 and P7 currently in the autograder, or see below for details on how to run tests
Running Tests.
To run the tests, the following commands must be run in the autograder.
To setup and run the tests, simply:
Begin by moving the student user_<mmio,dma>.c file to the qcomps directory:
mv *.c qcomps/Then, move into the qcomps directory:
cd qcomps/Next, simply run the make result target:
For MMIO:
make result TEST=mmiofor DMA
make result TEST=dmaThis generates the file result which contains which file was tested, the popcount result, and the time of execution.
Next, to test the result and confirm correctness, run:
make test TEST_FILE=<zeros.bin,ones.bin,tiny.bin,small.bin,medium.bin,large.bin>This will check to see if the number of ones counted in each of those files matches ground truth.
Finally, to check the time of the command to confirm that dma was used (it will be faster than MMIO in every case so long as the student code is suitably decent and does not contain any glaring issues), run:
make test_time TEST_TIME=<value>where value is what ever a decent mid value time is on the system. In the autograder, for our purposes value=1 seems to work well, but your performance may differ.
Autograder Test for MMIO slowed down
This release includes all necessary updates for the autograder to utilize the artificially slowed mmio/dma system.
v2.1 - MMIO slowdown simulated
This draft release includes the slowdown of the mmio in relation to the DMA. On larger files, the mmio runs 5 times slower, but on small scales the dma is slower. this can be adjusted if desired.
v2.0 - DMA testing now included for autograder
In this release, DMA is included. To use it on the autograder, first download the following files:
Dockerfile
2.This has been depreciated - Onlydocker.MakefileDockerfileis required.
Now upload these to the auto grader custom sandbox imaging platform, and let the docker image build.
To run tests on the autograder, you will use:
make result TEST=<dma|mmio>
And to check output:
make test TEST_FILE=<zeros.bin|ones.bin|small.bin...>
This should work for both mmio AND DMA.
v1.1 - Generalized testing
1.1
Upgrades:
Generalized testing procedure, allowing for relative ease when adding new binary test files. All six basic tests exist, so to add new tests all that must be done is:
- add a new
<testfile_V>Variable to the testing Makefile - add new
<testfile>to the data folder and run thepopulatefs.shscript to place new binaries in the autograder.ext2 fs - use the old tar.gz to extract qcomps, replace autograder.ext2 with new ext2, and repackage into tar.gz
- publish a LATEST release
- please make a pull request with the new .bin file
v1.0
v1.0
This release includes the possibility to check each binary file individually. It currently contains zeros, ones, tiny, small, medium and large.bin
v0.3
Details
The docker image did not allow for sudo to be used in tests, so to access the files in the image, e2tools was used.
v0.2 - Docker Testing
v0.2 - For Docker Testing
This release contains the completed QEMU binaries, and test scripts for running everything fully automated via docker. This release is a test to ensure that all is working, and a subsequent release will contained a less alpha version.
qemu-package-V0.1
This package contains all required items to directly run the popcount qemu system without having to build it from scratch.
This is verified for Debian only, and requires GLIBCv2.35+ as this is what is was built with.
Download the tar.gz, and either extract and run as is, or with the main Makefile run make run-from-tar and it will extract and run for you.