|
8 | 8 |
|
9 | 9 | import pytest
|
10 | 10 |
|
11 |
| -from cuda.core.experimental import Program |
12 | 11 | from cuda.core.experimental._module import Kernel, ObjectCode
|
| 12 | +from cuda.core.experimental._program import Program, ProgramOptions |
| 13 | + |
| 14 | + |
| 15 | +def test_program_with_various_options(init_cuda): |
| 16 | + code = 'extern "C" __global__ void my_kernel() {}' |
| 17 | + |
| 18 | + options_list = [ |
| 19 | + ProgramOptions(ptxas_options="-v"), |
| 20 | + ProgramOptions(ptxas_options=["-v", "-O3"]), |
| 21 | + ProgramOptions(device_optimize=True, device_debug=True), |
| 22 | + ProgramOptions(relocatable_device_code=True, maxrregcount=32), |
| 23 | + ProgramOptions(ftz=True, prec_sqrt=False, prec_div=False), |
| 24 | + ProgramOptions(fmad=False, use_fast_math=True), |
| 25 | + ProgramOptions(extra_device_vectorization=True), |
| 26 | + ProgramOptions(dlink_time_opt=True, gen_opt_lto=True), |
| 27 | + ProgramOptions(define_macro="MY_MACRO"), |
| 28 | + ProgramOptions(define_macro=("MY_MACRO", "99")), |
| 29 | + ProgramOptions(define_macro=[("MY_MACRO", "99")]), |
| 30 | + ProgramOptions(define_macro=[("MY_MACRO", "99"), ("MY_OTHER_MACRO", "100")]), |
| 31 | + ProgramOptions(undefine_macro=["MY_MACRO", "MY_OTHER_MACRO"]), |
| 32 | + ProgramOptions(undefine_macro="MY_MACRO", include_path="/usr/local/include"), |
| 33 | + ProgramOptions(pre_include="my_header.h", no_source_include=True), |
| 34 | + ProgramOptions(builtin_initializer_list=False, disable_warnings=True), |
| 35 | + ProgramOptions(restrict=True, device_as_default_execution_space=True), |
| 36 | + ProgramOptions(device_int128=True, optimization_info="inline"), |
| 37 | + ProgramOptions(no_display_error_number=True), |
| 38 | + ProgramOptions(diag_error="1234", diag_suppress="5678"), |
| 39 | + ProgramOptions(diag_warn="91011", brief_diagnostics=True), |
| 40 | + ProgramOptions(time="compile_time.csv", split_compile=4), |
| 41 | + ProgramOptions(fdevice_syntax_only=True, minimal=True), |
| 42 | + ] |
| 43 | + |
| 44 | + # TODO compile the program once the CI is set up |
| 45 | + for options in options_list: |
| 46 | + program = Program(code, "c++", options) |
| 47 | + assert program.backend == "nvrtc" |
| 48 | + program.close() |
| 49 | + assert program.handle is None |
13 | 50 |
|
14 | 51 |
|
15 | 52 | def test_program_init_valid_code_type():
|
|
0 commit comments