aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Support stream masking on CUDA 12.7 (x86) and 12.8 (x86)Joshua Bakita2025-04-07
|
* Makefile improvementsJoshua Bakita2025-03-20
| | | | | | | | | | | | | - Add an "all" build target - Fix build if libcuda.so is not on linker search path - Do not assume that nvcc is available on $PATH - Allow specifying CFLAGS and LDFLAGS when running make - Allow passing non-standard CUDA build locations to make Suggested usage if CUDA is installed in a non-standard location, say, /playpen/jbakita/CUDA/cuda-archive/cuda-12.2: make CUDA=/playpen/jbakita/CUDA/cuda-archive/cuda-12.2
* Correctly pass arguments to Python's ctypes find_library() functionJoshua Bakita2024-12-23
| | | | | | | | | The prefix "lib" should not be included, per the documentation. This was not caught in local tests as the fallback was always used locally. Patch courtesy of Guanbin Xu <xugb@mail.ustc.edu.cn>.
* CRITICAL: Remove stray brackets breaking buildJoshua Bakita2024-12-23
|
* Remove unused variables from MakefileJoshua Bakita2024-12-19
| | | | | | | Make automatically provides CXX and CC, and these manual definitions were being ignored. Also fix a missing space in one of the messages from the tests.
* Bugfix stream-mask override, support old CUDA, and start Hopper supportJoshua Bakita2024-12-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use a different callback to intercept the TMD/QMD later in the launch pipeline. Major improvements: - Fix bug with next mask not overriding stream mask on CUDA 11.0+ - Add CUDA 6.5-10.2 support for next- and global-granularity partitioning masks on x86_64 and aarch64 Jetson - Remove libdl dependency - Partially support TMD/QMD Version 4 (Hopper) Minor improvements: - Check for sufficient CUDA version before before attempting to apply a next-granularity partitioning mask - Only check for sufficient CUDA version on the first call to `libsmctrl_set_next_mask()` or `libsmctrl_set_global_mask()`, rather than checking every time (lowers overheads) - Check that TMD version is sufficient before modifying it - Improve documentation Issues: - Partitioning mask bits have a different meaning in TMD/QMD Version 4 and require floorsweeping and remapping information to properly construct. This information will be forthcoming in future releases of libsmctrl and nvdebug.
* Support CUDA 12.2, 12.5, and 12.6 on Jetson aarch64Joshua Bakita2024-12-19
| | | | Also test and note that stream masking on CUDA 6.5 seems impossible.
* Check for read() errors on procfs files during libsmctrl_get_gpc_info()Joshua Bakita2024-12-19
| | | | Also update a comment
* Fix a potential bug with stream masking on CUDA 12.6 on aarch64 JetsonJoshua Bakita2024-12-18
| | | | | | | | | | Commit 3f9bda39 made an error by using the pre-CUDA-12 mask structure layout on CUDA 12.6 on aarch64 Jetson. Switch to the CUDA 12+ layout (as used on x86_64). Tests work either way on the Jetson Orin, so this change is not strictly required, but seems advisable to support potenital large (PCIe-attached?) GPUs on Jetson/DRIVE platforms.
* Support stream masking on CUDA 12.3 (x86) and 12.5 (x86)Joshua Bakita2024-11-26
|
* Support stream masking on CUDA 12.4 (x86) and 12.6 (x86, aarch64)Joshua Bakita2024-11-26
| | | | Credit to Nordine Feddal for testing CUDA 12.4 on 550.544.14.
* Rewrite libsmctrl_test_gpc_info to output clearly and take a GPU IDJoshua Bakita2024-11-26
|
* Add build and use instructions to the READMEJoshua Bakita2024-02-19
| | | | | Also allow building with an alternate version of g++ for backwards compatibility.
* Add test that higher-granularity masks override lower-granularity onesJoshua Bakita2024-02-14
| | | | | | | | | | | Stream-level masks should always override globally-set masks. Next-kernel masks should always override both stream-level masks and globally-set masks. Tests reveal an issue with the next-kernel mask not overriding the stream mask on CUDA 11.0+. CUDA appears to apply the per-stream mask to the QMD/TMD after `launchCallback()` is triggered, making it impossible to override as currently implemented.
* Abort process on error, and better document callback-based maskingJoshua Bakita2023-11-29
|
* Add a README and tests for stream masking and next maskingJoshua Bakita2023-11-29
| | | | Also rewrite the global masking test to be much more thorough.
* Fix stream masking on many platforms and support >64-bit stream masksJoshua Bakita2023-11-29
| | | | | | | | | Previously did not delineate between aarch64 and x86_64 stream offsets, causing incorrect offsets to be used in many circumstances. This has now been fixed. A new function, libsmctrl_set_stream_mask_ext() has also been added which supports masking up to 128 TPCs (rather than just 64).
* Build on CUDA 11.8+; Adds libdl dependencyJoshua Bakita2023-11-29
| | | | | | nvcc links against a stub version of libcuda.so by default which is missing a required symbol starting around CUDA 11.8. Use libdl to resolve the symbol at runtime instead.
* Add test for libsmctrl_set_global_mask()Joshua Bakita2023-10-17
| | | | | Also use static linking for tests, to avoid a need to set LD_LIBRARY_PATH to include the libsmctrl directory.
* Support global masking on x86_64 and aarch64 with CUDA 10.2Joshua Bakita2023-10-17
| | | | | | | | | | | | | Also improve documentation and abort with an error message if attempting to set a global SM mask on an unsupported CUDA version. (Would crash/corrupt state before.) Also uncomment a line which errantly disabled global masking on CUDA 10.2 on aarch64. Tested with CUDA 10.2 on: - x86_64 (GTX 1060 3GB, driver 440.100, jbakita-old.cs.unc.edu) - aarch64 (Jetson TX2, driver r32.5, grizzly.cs.unc.edu)
* Include stdint.h in libsmctrl.hJoshua Bakita2023-10-16
| | | | | Necessary for declarations of included functions. Absence would result in a compilation error for programs omitting this include.
* Fix libsmctrl_set_stream_mask() on the TX2 with CUDA 9.0 + cleanupJoshua Bakita2023-10-16
| | | | | | | | This function was previously unreliable when using CUDA 9.0 on the Jetson TX2. Also update some version comments and remove `set_sm_mask()`---a legacy partitioning function that's no longer used.
* Introduce pysmctrl: A python interface to libsmctrlJoshua Bakita2023-03-16
| | | | | | | | | | | | | | | | | | | | | | | | Initially supports the GPU information functions via: - pysmctrl.get_gpc_info(dev_id) - pysmctrl.get_tpc_info(dev_id) - pysmctrl.get_tpc_info_cuda(cuda_dev_id) All functions are extensively documented. See pysmctrl/__init__.py for details. Device partitioning functions have yet to be mapped into Python, as these will require more testing. As part of this: - libsmctrl_get_*_info() functions have been modified to consistently return positive error codes. - libsmctrl_get_tpc_info() now uses nvdebug-style device numbering and uses libsmctrl_get_gpc_info() under the covers. This should be more reliable. - libsmctrl_get_tpc_info_cuda() has been introduced as an improved version of the old libsmctrl_get_tpc_info() function. This continues to use CUDA-style device numbering, but is now resiliant to CUDA failures. - Various minor style improvements in libsmctrl.c
* Correct a sign-extension issue in libsmctrl_get_gpc_info()Joshua Bakita2023-03-15
| | | | | This function would previously would yield invalid results for GPUs with more than 31 TPCs.
* Initial reimplementation of libsmctrl as a libraryJoshua Bakita2023-03-02
- Tested working with cuda_scheduling_examiner - Supports everything described in the accepted RTAS'23 paper - Can be used as either a shared or staticly-linked library - Documented in libsmctrl.h