Files
nvcc/tests/fixtures/fixtures.py
T
Cosmin Ștefan Ciocan 781ff5b76b Feature: Passing arguments to NVCC compiler (#26)
* 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
2024-02-12 17:29:26 +01:00

73 lines
1.9 KiB
Python

import glob
import os
import pytest
from IPython.core.interactiveshell import InteractiveShell
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))