mirror of
https://github.com/andreinechaev/nvcc4jupyter.git
synced 2026-06-15 11:40:48 +05:30
Add test for nvcc options that changes c++ dialect from c++17 to c++14
This commit is contained in:
Vendored
+47
@@ -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";
|
||||||
|
}
|
||||||
|
}
|
||||||
Vendored
+6
-1
@@ -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
@@ -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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user