mirror of
https://github.com/andreinechaev/nvcc4jupyter.git
synced 2026-06-14 03:00:47 +05:30
0bddf6a6e6
* Add option to give nvcc extra arguments * Add test for nvcc options that changes c++ dialect from c++17 to c++14 * Add make and the english language pack to devcontainer to be able to build the documentation * Update documentation config to automatically import the current version of the package * Document new --compiler-args argument * Improve tests coverage by testing for bad arguments and the error output during a failed compilation * Add IPython to docs requirements to allow the __version__ import for readthedocs env * Change devcontainer base image to have the latest CUDA toolkit * Mock the nsight compute tool with a bash script * Add test to compile with opencv * Add new page to documentation that contains a new notebook that explains compiling with external libraries * Add autodocstring vscode extension to devcontainer * Add function that modifies the default profiler/compiler arguments to allow reusing them in multiple magic command calls * Update pylint exceptions * Update contributing instructions * Change version from 1.0.3 to 1.1.0 due to adding features in a backward-compatible manner * Install latest CUDA toolkit on the test runner to pass the OpenCV compilation test * Install opencv in test runner and update code coverage install * Add CUDA bin to PATH in test and coverage runners * Add cuda bin to path variable in .bashrc * Update way to set environment variable PATH in github action * Change devcontainer base image back to ubuntu:22.04 to match the environment from the test runner * Add option to choose between NSYS and NCU profilers * Add tests for choosing the profiler * Add isort config to help it find local modules so they are not considered 3rd party libraries * Replace experimental-string-processing black formatter config with enable-unstable-feature as it was removed in version 24.1.0 * Search for profiling tools executable paths when they are required * Install dev dependencies in editable mode * Add documentation for using Nsight Systems instead of the default Nsight Compute profiling tool * Fix cuda typo * Mention Nsight Systems in README.md
62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
"""
|
|
Helper functions relating to file paths.
|
|
"""
|
|
|
|
import os
|
|
from glob import glob
|
|
from typing import List, Optional
|
|
|
|
CUDA_SEARCH_PATHS: List[str] = [
|
|
"/opt/nvidia/nsight-compute",
|
|
"/usr/local/cuda",
|
|
"/opt",
|
|
"/usr",
|
|
]
|
|
|
|
|
|
def is_executable(fpath: str) -> bool:
|
|
"""Check if file exists and is executable"""
|
|
return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
|
|
|
|
|
|
def which(name: str) -> Optional[str]:
|
|
"""Find an executable by name by searching the PATH directories"""
|
|
for path_dir in os.environ.get("PATH", "").split(os.pathsep):
|
|
exec_path = os.path.join(path_dir, name)
|
|
if is_executable(exec_path):
|
|
return exec_path
|
|
return None
|
|
|
|
|
|
def find_executable(
|
|
name: str, search_paths: Optional[List[str]] = None
|
|
) -> Optional[str]:
|
|
"""
|
|
Find an executable, either by searching in the directories of the PATH
|
|
environment variable or, if that did not work, by searching recursively
|
|
in directories a list given as parameter.
|
|
|
|
Args:
|
|
name: The name of the executable to be found.
|
|
search_paths: If None, only executables that are available from PATH
|
|
will be found. Otherwise, will recursively search these
|
|
directories. Defaults to None.
|
|
|
|
Returns:
|
|
The path to the executable if it is found, and None otherwise.
|
|
"""
|
|
if search_paths is None:
|
|
search_paths = []
|
|
|
|
which_path = which(name)
|
|
if which_path is not None:
|
|
return which_path
|
|
|
|
for search_path in search_paths:
|
|
search_path = os.path.abspath(search_path)
|
|
search_path = os.path.join(search_path, f"**/{name}")
|
|
for exec_path in glob(search_path, recursive=True):
|
|
return exec_path
|
|
|
|
return None
|