Add test for nvcc options that changes c++ dialect from c++17 to c++14

This commit is contained in:
Cosmin Ștefan Ciocan
2024-01-23 22:55:53 +00:00
parent 881c67f5f1
commit 50bc8ff4a6
3 changed files with 77 additions and 3 deletions
+47
View File
@@ -0,0 +1,47 @@
#include <cstdlib>
#include <iostream>
#include <set>
#include <string>
#include <iterator>
#include <tuple>
struct S {
int n;
std::string s;
float d;
bool operator<(const S& rhs) const
{
// compares n to rhs.n,
// then s to rhs.s,
// then d to rhs.d
return std::tie(n, s, d) < std::tie(rhs.n, rhs.s, rhs.d);
}
};
int main()
{
std::set<S> mySet;
// pre C++17:
{
S value{42, "Test", 3.14};
std::set<S>::iterator iter;
bool inserted;
// unpacks the return val of insert into iter and inserted
std::tie(iter, inserted) = mySet.insert(value);
if (inserted)
std::cout << "Value was inserted\n";
}
// with C++17:
{
S value{100, "abc", 100.0};
const auto [iter, inserted] = mySet.insert(value);
if (inserted)
std::cout << "Value(" << iter->n << ", " << iter->s << ", ...) was inserted" << "\n";
}
}
+6 -1
View File
@@ -27,10 +27,15 @@ def fixtures_path(tests_path):
return os.path.join(tests_path, "fixtures") return os.path.join(tests_path, "fixtures")
@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") @pytest.fixture(scope="session")
def sample_magic_cu_line(): def sample_magic_cu_line():
# fmt: off # fmt: off
return '--profile --profiler-args "--metrics l1tex__t_sectors_pipe_lsu_mem_global_op_ld.sum"' # noqa: E501 return '--profile --profiler-args "--metrics l1tex__t_sectors_pipe_lsu_mem_global_op_ld.sum" --compiler-args "--optimize 3"' # noqa: E501
# fmt: on # fmt: on
+24 -2
View File
@@ -3,6 +3,7 @@ import math
import os import os
import re import re
import shutil import shutil
import subprocess
from typing import List from typing import List
import pytest import pytest
@@ -88,6 +89,21 @@ def test_compile(
plugin._compile(gname) plugin._compile(gname)
def test_compile_args(
plugin: NVCCPlugin,
compiler_cpp_17_fpath: str,
):
gname = "test_compile_args"
copy_source_to_group(compiler_cpp_17_fpath, gname, plugin.workdir)
exec_fpath = plugin._compile(gname, compiler_args="--std c++17")
assert os.path.exists(exec_fpath)
# should fail due to the source file having c++ 17 features
with pytest.raises(subprocess.CalledProcessError):
exec_fpath = plugin._compile(gname, compiler_args="--std c++14")
def test_run( def test_run(
plugin: NVCCPlugin, plugin: NVCCPlugin,
sample_cuda_fpath: str, sample_cuda_fpath: str,
@@ -143,7 +159,10 @@ def test_compile_and_run_multiple_files(
for fpath in multiple_source_fpaths: for fpath in multiple_source_fpaths:
copy_source_to_group(fpath, gname, plugin.workdir) copy_source_to_group(fpath, gname, plugin.workdir)
output = plugin._compile_and_run( output = plugin._compile_and_run(
gname, argparse.Namespace(timeit=False, profile=True, profiler_args="") group_name=gname,
args=argparse.Namespace(
timeit=False, profile=True, profiler_args="", compiler_args=""
),
) )
check_profiler_output(output) check_profiler_output(output)
@@ -165,7 +184,10 @@ def test_compile_and_run_multiple_files_shared(
else: else:
copy_source_to_group(fpath, "shared", plugin.workdir) copy_source_to_group(fpath, "shared", plugin.workdir)
output = plugin._compile_and_run( output = plugin._compile_and_run(
gname, argparse.Namespace(timeit=False, profile=True, profiler_args="") group_name=gname,
args=argparse.Namespace(
timeit=False, profile=True, profiler_args="", compiler_args=""
),
) )
check_profiler_output(output) check_profiler_output(output)