mirror of
https://github.com/andreinechaev/nvcc4jupyter.git
synced 2026-06-13 10:40:48 +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
86 lines
2.1 KiB
Python
86 lines
2.1 KiB
Python
import argparse
|
|
import glob
|
|
import os
|
|
|
|
import pytest
|
|
from IPython.core.interactiveshell import InteractiveShell
|
|
|
|
from nvcc4jupyter.parsers import Profiler
|
|
from nvcc4jupyter.plugin import NVCCPlugin
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def shell():
|
|
return InteractiveShell()
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def plugin(shell: InteractiveShell):
|
|
return NVCCPlugin(shell=shell)
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def tests_path():
|
|
return "tests"
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def fixtures_path(tests_path):
|
|
return os.path.join(tests_path, "fixtures")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def scripts_path(fixtures_path: str):
|
|
return os.path.join(fixtures_path, "scripts")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def compiler_cpp_17_fpath(fixtures_path: str):
|
|
return os.path.join(fixtures_path, "compiler", "cpp_17.cu")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def compiler_opencv_fpath(fixtures_path: str):
|
|
return os.path.join(fixtures_path, "compiler", "opencv.cu")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def sample_magic_cu_line():
|
|
# fmt: off
|
|
return '--profile --profiler-args "--metrics l1tex__t_sectors_pipe_lsu_mem_global_op_ld.sum" --compiler-args "--optimize 3"' # noqa: E501
|
|
# fmt: on
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def sample_cuda_fpath(fixtures_path: str):
|
|
return os.path.join(fixtures_path, "single_file", "hello.cu")
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def sample_cuda_code(sample_cuda_fpath: str):
|
|
with open(sample_cuda_fpath, "r", encoding="utf-8") as f:
|
|
return f.read()
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def timeit_regex():
|
|
return r".+ ± .+ per loop \(mean ± std. dev. of .+ runs, .+ loops each\)"
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def multiple_source_fpaths(fixtures_path: str):
|
|
pattern_h = os.path.join(fixtures_path, "multiple_files", "*.h")
|
|
pattern_cu = os.path.join(fixtures_path, "multiple_files", "*.cu")
|
|
return list(glob.glob(pattern_h)) + list(glob.glob(pattern_cu))
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def default_args():
|
|
return argparse.Namespace(
|
|
timeit=False,
|
|
profile=True,
|
|
profiler=lambda: Profiler.NCU,
|
|
profiler_args=lambda: "",
|
|
compiler_args=lambda: "",
|
|
)
|