rodluger / starry

Tools for mapping stars and planets.
https://starry.readthedocs.io
MIT License
144 stars 33 forks source link

not implemented error from basic tutorial #281

Open mikelty opened 3 years ago

mikelty commented 3 years ago

Describe the bug during the following code block in the basic tutorial, the error below happened. the entire text of the error is pasted below. image image Compilingflux`... Done.

NotImplementedError Traceback (most recent call last) ~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\link\vm.py in call(self) 312 ): --> 313 thunk() 314 for old_s in old_storage:

~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\graph\op.py in rval(p, i, o, n) 475 def rval(p=p, i=node_input_storage, o=node_output_storage, n=node): --> 476 r = p(n, [x[0] for x in i], o) 477 for o in node.outputs:

~\AppData\Local\Programs\Python\Python37\lib\site-packages\starry_core\ops\limbdark\base_op.py in perform(self, args) 51 def perform(self, args): ---> 52 raise NotImplementedError("Only C op is implemented")

NotImplementedError: Only C op is implemented

During handling of the above exception, another exception occurred:

NotImplementedError Traceback (most recent call last)

in 9 # Compute and plot the light curve 10 plt.figure(figsize=(12, 5)) ---> 11 plt.plot(time, map.flux(xo=xo, yo=yo, ro=ro, zo=zo)) 12 plt.xlabel("Time [arbitrary]", fontsize=20) 13 plt.ylabel("Flux [normalized]", fontsize=20); ~\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\maps.py in flux(self, **kwargs) 1810 1811 # Compute & return -> 1812 return self.amp * self.ops.flux(xo, yo, zo, ro, self._u) 1813 1814 def intensity(self, mu=None, x=None, y=None): ~\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\_core\utils.py in wrapper(instance, *args) 132 133 # Return the compiled version --> 134 return getattr(instance, cname)(*args) 135 136 return wrapper ~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\compile\function\types.py in __call__(self, *args, **kwargs) 973 outputs = ( 974 self.fn() --> 975 if output_subset is None 976 else self.fn(output_subset=output_subset) 977 ) ~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\link\vm.py in __call__(self) 315 old_s[0] = None 316 except Exception: --> 317 raise_with_op(self.fgraph, node, thunk) 318 319 ~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\link\utils.py in raise_with_op(fgraph, node, thunk, exc_info, storage_map) 506 # Some exception need extra parameter in inputs. So forget the 507 # extra long error message in that case. --> 508 raise exc_value.with_traceback(exc_trace) 509 510 ~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\link\vm.py in __call__(self) 311 self.thunks, self.nodes, self.post_thunk_clear 312 ): --> 313 thunk() 314 for old_s in old_storage: 315 old_s[0] = None ~\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\graph\op.py in rval(p, i, o, n) 474 # default arguments are stored in the closure of `rval` 475 def rval(p=p, i=node_input_storage, o=node_output_storage, n=node): --> 476 r = p(n, [x[0] for x in i], o) 477 for o in node.outputs: 478 compute_map[o][0] = True ~\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\_core\ops\limbdark\base_op.py in perform(self, *args) 50 51 def perform(self, *args): ---> 52 raise NotImplementedError("Only C op is implemented") NotImplementedError: Only C op is implemented Apply node that caused the error: GetClOp() Toposort index: 3 Inputs types: [TensorType(float64, vector)] Inputs shapes: [(3,)] Inputs strides: [(8,)] Inputs values: [array([-1. , 0.5 , 0.25])] Outputs clients: [[Subtensor{int64}(GetClOp.0, Constant{1}), Subtensor{int64}(GetClOp.0, Constant{0}), Elemwise{Composite{((i0 * i1) / i2)}}[(0, 1)](TensorConstant{(1,) of 0...8861837907}, GetClOp.0, Elemwise{Composite{(i0 + (i1 * i2))}}.0)]] Backtrace when the node is created(use Theano flag traceback__limit=N to make it longer): File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\interactiveshell.py", line 3337, in run_ast_nodes if (await self.run_code(code, result, async_=asy)): File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\IPython\core\interactiveshell.py", line 3417, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "", line 11, in plt.plot(time, map.flux(xo=xo, yo=yo, ro=ro, zo=zo)) File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\maps.py", line 1812, in flux return self.amp * self.ops.flux(xo, yo, zo, ro, self._u) File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\_core\utils.py", line 126, in wrapper func(instance, *dummy_args), File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\_core\core.py", line 713, in flux c = self._get_cl(u) File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\theano\graph\op.py", line 250, in __call__ node = self.make_node(*inputs, **kwargs) File "C:\Users\mik\AppData\Local\Programs\Python\Python37\lib\site-packages\starry\_core\ops\limbdark\get_cl.py", line 21, in make_node return Apply(self, [tt.as_tensor_variable(arg)], [arg.type()]) HINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.
` **To Reproduce** windows 10, python3.7.4, ```pip install starry``` and then copy and paste everything up to that step into a jupyter notebook. **Expected behavior** the graph in the documentation site. **Your setup (please complete the following information):** - Version of starry: 1.1.1 - Operating system: windows 10 - Python version & installation method (pip, conda, etc.): 3.7.4, pip **Additional context** None
rodluger commented 3 years ago

Which version of theano are you running? Can you do

import theano
print(theano.__version__)
print(theano.config)

and let me know what output you get?

rodluger commented 3 years ago

@mikelty Any updates on this?

mikelty commented 3 years ago

here's the output, import gives nothing

>>> print(theano.__version__)
1.1.2
>>> print(theano.config)
floatX ({'float64', 'float16', 'float32'})
    Doc:  Default floating-point precision for python casts.

Note: float16 support is experimental, use at your own risk.
    Value:  float64

warn_float64 ({'ignore', 'warn', 'pdb', 'raise'})
    Doc:  Do an action when a tensor variable with float64 dtype is created. They can't be run on the GPU with the current(old) gpu back-end and are slow with gamer GPUs.
    Value:  ignore

pickle_test_value (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA344AD808>>)
    Doc:  Dump test values while pickling model. If True, test values will be dumped with model.
    Value:  True

cast_policy ({'custom', 'numpy+floatX'})
    Doc:  Rules for implicit type casting
    Value:  custom

deterministic ({'more', 'default'})
    Doc:  If `more`, sometimes we will select some implementation that are more deterministic, but slower. In particular, on the GPU, we will avoid using AtomicAdd. Sometimes we will still use non-deterministic implementaion, e.g. when we do not have a GPU implementation that is deterministic. Also see the dnn.conv.algo* flags to cover more cases.
    Value:  default

device (cpu, opencl*, cuda*)
    Doc:  Default device for computations. If cuda* or opencl*, change thedefault to try to move computation to the GPU. Do not use upper caseletters, only lower case even if NVIDIA uses capital letters. 'gpu' means let the driver select the gpu (needed for gpu in exclusive mode). 'gpuX' mean use the gpu number X.
    Value:  cpu

init_gpu_device (, opencl*, cuda*)
    Doc:  Initialize the gpu device to use, works only if device=cpu. Unlike 'device', setting this option will NOT move computations, nor shared variables, to the specified GPU. It can be used to run GPU-specific tests on a particular GPU.
    Value:

force_device (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34519788>>)
    Doc:  Raise an error if we can't use the specified device
    Value:  False

conv__assert_shape (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34519808>>)
    Doc:  If True, AbstractConv* ops will verify that user-provided shapes match the runtime shapes (debugging option, may slow down compilation)
    Value:  False

print_global_stats (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA345198C8>>)
    Doc:  Print some global statistics (time spent) at the end
    Value:  False

<theano.configparser.ContextsParam object at 0x000001CA34519988>
    Doc:
        Context map for multi-gpu operation. Format is a
        semicolon-separated list of names and device names in the
        'name->dev_name' format. An example that would map name 'test' to
        device 'cuda0' and name 'test2' to device 'opencl0:0' follows:
        "test->cuda0;test2->opencl0:0".

        Invalid context names are 'cpu', 'cuda*' and 'opencl*'

    Value:

print_active_device (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34519A08>>)
    Doc:  Print active device at when the GPU device is initialized.
    Value:  True

gpuarray__preallocate (<class 'float'>)
    Doc:  If negative it disables the allocation cache. If
                 between 0 and 1 it enables the allocation cache and
                 preallocates that fraction of the total GPU memory.  If 1
                 or greater it will preallocate that amount of memory (in
                 megabytes).
    Value:  0.0

gpuarray__sched ({'single', 'default', 'multi'})
    Doc:  The sched parameter passed for context creation to pygpu.
                    With CUDA, using "multi" is equivalent to using the parameter
                    cudaDeviceScheduleBlockingSync. This is useful to lower the
                    CPU overhead when waiting for GPU. One user found that it
                    speeds up his other processes that was doing data augmentation.

    Value:  default

gpuarray__single_stream (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34519BC8>>)
    Doc:
                 If your computations are mostly lots of small elements,
                 using single-stream will avoid the synchronization
                 overhead and usually be faster.  For larger elements it
                 does not make a difference yet.  In the future when true
                 multi-stream is enabled in libgpuarray, this may change.
                 If you want to make sure to have optimal performance,
                 check both options.

    Value:  True

cuda__root (<class 'str'>)
    Doc:  Location of the cuda installation
    Value:  C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1

cuda__include_path (<class 'str'>)
    Doc:  Location of the cuda includes
    Value:  C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include

assert_no_cpu_op ({'ignore', 'warn', 'pdb', 'raise'})
    Doc:  Raise an error/warning if there is a CPU op in the computational graph.
    Value:  ignore

unpickle_function (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA33D63508>>)
    Doc:  Replace unpickled Theano functions with None. This is useful to unpickle old graphs that pickled them when it shouldn't
    Value:  True

reoptimize_unpickled_function (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA33D67B48>>)
    Doc:  Re-optimize the graph when a theano function is unpickled from the disk.
    Value:  False

dnn__conv__algo_fwd ({'time_on_shape_change', 'fft', 'small', 'time_once', 'fft_tiling', 'winograd_non_fused', 'guess_once', 'none', 'large', 'winograd', 'guess_on_shape_change'})
    Doc:  Default implementation to use for cuDNN forward convolution.
    Value:  small

dnn__conv__algo_bwd_data ({'time_on_shape_change', 'fft', 'deterministic', 'time_once', 'fft_tiling', 'winograd_non_fused', 'guess_once', 'none', 'winograd', 'guess_on_shape_change'})
    Doc:  Default implementation to use for cuDNN backward convolution to get the gradients of the convolution with regard to the inputs.
    Value:  none

dnn__conv__algo_bwd_filter ({'time_on_shape_change', 'fft', 'small', 'deterministic', 'time_once', 'winograd_non_fused', 'fft_tiling', 'guess_once', 'none', 'guess_on_shape_change'})
    Doc:  Default implementation to use for cuDNN backward convolution to get the gradients of the convolution with regard to the filters.
    Value:  none

dnn__conv__precision ({'as_input', 'float32', 'as_input_f32', 'float64', 'float16'})
    Doc:  Default data precision to use for the computation in cuDNN convolutions (defaults to the same dtype as the inputs of the convolutions, or float32 if inputs are float16).
    Value:  as_input_f32

dnn__base_path (<class 'str'>)
    Doc:  Install location of cuDNN.
    Value:

dnn__include_path (<class 'str'>)
    Doc:  Location of the cudnn header
    Value:

dnn__library_path (<class 'str'>)
    Doc:  Location of the cudnn link library.
    Value:

dnn__bin_path (<class 'str'>)
    Doc:  Location of the cuDNN load library (on non-windows platforms, this is the same as dnn__library_path)
    Value:

dnn__enabled ({'auto', 'no_check', 'False', 'True'})
    Doc:  'auto', use cuDNN if available, but silently fall back to not using it if not present. If True and cuDNN can not be used, raise an error. If False, disable cudnn even if present. If no_check, assume present and the version between header and library match (so less compilation at context init)
    Value:  auto

magma__include_path (<class 'str'>)
    Doc:  Location of the magma header
    Value:

magma__library_path (<class 'str'>)
    Doc:  Location of the magma library
    Value:

magma__enabled (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34520788>>)
    Doc:   If True, use magma for matrix computation. If False, disable magma
    Value:  False

<theano.configparser.ConfigParam object at 0x000001CA34520848>
    Doc:  Default compilation mode
    Value:  Mode

cxx (<class 'str'>)
    Doc:  The C++ compiler to use. Currently only g++ is supported, but supporting additional compilers should not be too difficult. If it is empty, no C++ code is compiled.
    Value:

linker ({'py', 'vm', 'vm_nogc'})
    Doc:  Default linker used if the theano flags mode is Mode
    Value:  vm

allow_gc (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34520BC8>>)
    Doc:  Do we default to delete intermediate results during Theano function calls? Doing so lowers the memory requirement, but asks that we reallocate memory at the next function call. This is implemented for the default linker, but may not work for all linkers.
    Value:  True

optimizer ({'unsafe', 'merge', 'o4', 'None', 'o1', 'fast_compile', 'fast_run', 'o2', 'o3'})
    Doc:  Default optimizer. If not None, will use this optimizer with the Mode
    Value:  o4

optimizer_verbose (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34520CC8>>)
    Doc:  If True, we print all optimization being applied
    Value:  False

on_opt_error ({'warn', 'ignore', 'pdb', 'raise'})
    Doc:  What to do when an optimization crashes: warn and skip it, raise the exception, or fall into the pdb debugger.
    Value:  warn

nocleanup (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA33C4DCC8>>)
    Doc:  Suppress the deletion of code files that did not compile cleanly
    Value:  False

on_unused_input ({'warn', 'ignore', 'raise'})
    Doc:  What to do if a variable in the 'inputs' list of  theano.function() is not used in the graph.
    Value:  raise

gcc__cxxflags (<class 'str'>)
    Doc:  Extra compiler flags for gcc
    Value:

cmodule__warn_no_version (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34520F08>>)
    Doc:  If True, will print a warning when compiling one or more Op with C code that can't be cached because there is no c_code_cache_version() function associated to at least one of those Ops.
    Value:  False

cmodule__remove_gxx_opt (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34520E48>>)
    Doc:  If True, will remove the -O* parameter passed to g++.This is useful to debug in gdb modules compiled by Theano.The parameter -g is passed by default to g++
    Value:  False

cmodule__compilation_warning (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34520FC8>>)
    Doc:  If True, will print compilation warnings.
    Value:  False

cmodule__preload_cache (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA345281C8>>)
    Doc:  If set to True, will preload the C module cache at import time
    Value:  False

cmodule__age_thresh_use (<class 'int'>)
    Doc:  In seconds. The time after which Theano won't reuse a compile c module.
    Value:  2073600

cmodule__debug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528348>>)
    Doc:  If True, define a DEBUG macro (if not exists) for any compiled C code.
    Value:  False

compile__wait (<class 'int'>)
    Doc:  Time to wait before retrying to acquire the compile lock.
    Value:  5

compile__timeout (<class 'int'>)
    Doc:  In seconds, time that a process will wait before deciding to
    override an existing lock. An override only happens when the existing
    lock is held by the same owner *and* has not been 'refreshed' by this
    owner for more than this period. Refreshes are done every half timeout
    period for running processes.
    Value:  120

ctc__root (<class 'str'>)
    Doc:  Directory which contains the root of Baidu CTC library. It is assumed         that the compiled library is either inside the build, lib or lib64         subdirectory, and the header inside the include directory.
    Value:

tensor__cmp_sloppy (<class 'int'>)
    Doc:  Relax tensor._allclose (0) not at all, (1) a bit, (2) more
    Value:  0

tensor__local_elemwise_fusion (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528648>>)
    Doc:  Enable or not in fast_run mode(fast_run optimization) the elemwise fusion optimization
    Value:  True

lib__amblibm (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA345286C8>>)
    Doc:  Use amd's amdlibm numerical library
    Value:  False

tensor__insert_inplace_optimizer_validate_nb (<class 'int'>)
    Doc:  -1: auto, if graph have less then 500 nodes 1, else 10
    Value:  -1

traceback__limit (<class 'int'>)
    Doc:  The number of stack to trace. -1 mean all.
    Value:  8

traceback__compile_limit (<class 'int'>)
    Doc:  The number of stack to trace to keep during compilation. -1 mean all. If greater then 0, will also make us save Theano internal stack trace.
    Value:  0

experimental__unpickle_gpu_on_cpu (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA345289C8>>)
    Doc:  Allow unpickling of pickled GpuArrays as numpy.ndarrays.This is useful, if you want to open a GpuArray without having cuda installed.If you have cuda installed, this will force unpickling tobe done on the cpu to numpy.ndarray.Please be aware that this may get you access to the data,however, trying to unpicke gpu functions will not succeed.This flag is experimental and may be removed any time, whengpu<>cpu transparency is solved.
    Value:  False

experimental__local_alloc_elemwise (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528608>>)
    Doc:  DEPRECATED: If True, enable the experimental optimization local_alloc_elemwise. Generates error if not True. Use optimizer_excluding=local_alloc_elemwise to dsiable.
    Value:  True

experimental__local_alloc_elemwise_assert (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528B48>>)
    Doc:  When the local_alloc_elemwise is applied, add an assert to highlight shape errors.
    Value:  True

warn__ignore_bug_before ({'0.8.1', '0.7', '1.0.3', 'all', '0.5', '0.10', '0.8.2', '0.6', '1.0', 'None', '0.4', '1.0.4', '0.8', '1.0.1', '1.0.2', '0.4.1', '1.0.5', '0.9', '0.3'})
    Doc:  If 'None', we warn about all Theano bugs found by default. If 'all', we don't warn about Theano bugs found by default. If a version, we print only the warnings relative to Theano bugs found after that version. Warning for specific bugs can be configured with specific [warn] flags.
    Value:  0.9

exception_verbosity ({'high', 'low'})
    Doc:  If 'low', the text of exceptions will generally refer to apply nodes with short names such as Elemwise{add_no_inplace}. If 'high', some exceptions will also refer to apply nodes with long descriptions  like:
        A. Elemwise{add_no_inplace}
                B. log_likelihood_v_given_h
                C. log_likelihood_h
    Value:  low

print_test_value (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528DC8>>)
    Doc:  If 'True', the __eval__ of a Theano variable will return its test_value when this is available. This has the practical conseguence that, e.g., in debugging `my_var` will print the same as `my_var.tag.test_value` when a test value is defined.
    Value:  False

compute_test_value ({'pdb', 'off', 'ignore', 'warn', 'raise'})
    Doc:  If 'True', Theano will run each op at graph build time, using Constants, SharedVariables and the tag 'test_value' as inputs to the function. This helps the user track down problems in the graph before it gets optimized.
    Value:  off

compute_test_value_opt ({'pdb', 'off', 'ignore', 'warn', 'raise'})
    Doc:  For debugging Theano optimization only. Same as compute_test_value, but is used during Theano optimization
    Value:  off

check_input (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528F08>>)
    Doc:  Specify if types should check their input in their C code. It can be used to speed up compilation, reduce overhead (particularly for scalars) and reduce the number of generated C files.
    Value:  True

NanGuardMode__nan_is_error (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528F88>>)
    Doc:  Default value for nan_is_error
    Value:  True

NanGuardMode__inf_is_error (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34528C88>>)
    Doc:  Default value for inf_is_error
    Value:  True

NanGuardMode__big_is_error (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A1C8>>)
    Doc:  Default value for big_is_error
    Value:  True

NanGuardMode__action ({'warn', 'pdb', 'raise'})
    Doc:  What NanGuardMode does when it finds a problem
    Value:  raise

DebugMode__patience (<class 'int'>)
    Doc:  Optimize graph this many times to detect inconsistency
    Value:  10

DebugMode__check_c (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A388>>)
    Doc:  Run C implementations where possible
    Value:  False

DebugMode__check_py (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A488>>)
    Doc:  Run Python implementations where possible
    Value:  True

DebugMode__check_finite (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A548>>)
    Doc:  True -> complain about NaN/Inf results
    Value:  True

DebugMode__check_strides (<class 'int'>)
    Doc:  Check that Python- and C-produced ndarrays have same strides. On difference: (0) - ignore, (1) warn, or (2) raise error
    Value:  0

DebugMode__warn_input_not_reused (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A688>>)
    Doc:  Generate a warning when destroy_map or view_map says that an op works inplace, but the op did not reuse the input for its output.
    Value:  True

DebugMode__check_preallocated_output (<class 'str'>)
    Doc:  Test thunks with pre-allocated memory as output storage. This is a list of strings separated by ":". Valid values are: "initial" (initial storage in storage map, happens with Scan),"previous" (previously-returned memory), "c_contiguous", "f_contiguous", "strided" (positive and negative strides), "wrong_size" (larger and smaller dimensions), and "ALL" (all of the above).
    Value:

DebugMode__check_preallocated_output_ndim (<class 'int'>)
    Doc:  When testing with "strided" preallocated output memory, test all combinations of strides over that number of (inner-most) dimensions. You may want to reduce that number to reduce memory or time usage, but it is advised to keep a minimum of 2.
    Value:  4

profiling__time_thunks (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A808>>)
    Doc:  Time individual thunks when profiling
    Value:  True

profiling__n_apply (<class 'int'>)
    Doc:  Number of Apply instances to print by default
    Value:  20

profiling__n_ops (<class 'int'>)
    Doc:  Number of Ops to print by default
    Value:  20

profiling__output_line_width (<class 'int'>)
    Doc:  Max line width for the profiling output
    Value:  512

profiling__min_memory_size (<class 'int'>)
    Doc:  For the memory profile, do not print Apply nodes if the size
                 of their outputs (in bytes) is lower than this threshold
    Value:  1024

profiling__min_peak_memory (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452AAC8>>)
    Doc:  The min peak memory usage of the order
    Value:  False

profiling__destination (<class 'str'>)
    Doc:  File destination of the profiling output
    Value:  stderr

profiling__debugprint (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A448>>)
    Doc:  Do a debugprint of the profiled functions
    Value:  False

profiling__ignore_first_call (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452AC08>>)
    Doc:  Do we ignore the first call of a Theano function.
    Value:  False

on_shape_error ({'warn', 'raise'})
    Doc:  warn: print a warning and use the default value. raise: raise an error
    Value:  warn

openmp (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452A988>>)
    Doc:  Allow (or not) parallel computation on the CPU with OpenMP. This is the default value used when creating an Op that supports OpenMP parallelization. It is preferable to define it via the Theano configuration file ~/.theanorc or with the environment variable THEANO_FLAGS. Parallelization is only done for some operations that implement it, and even for operations that implement parallelism, each operation is free to respect this flag or not. You can control the number of threads used with the environment variable OMP_NUM_THREADS. If it is set to 1, we disable openmp in Theano by default.
    Value:  False

openmp_elemwise_minsize (<class 'int'>)
    Doc:  If OpenMP is enabled, this is the minimum size of vectors for which the openmp parallelization is enabled in element wise ops.
    Value:  200000

optimizer_excluding (<class 'str'>)
    Doc:  When using the default mode, we will remove optimizer with these tags. Separate tags with ':'.
    Value:

optimizer_including (<class 'str'>)
    Doc:  When using the default mode, we will add optimizer with these tags. Separate tags with ':'.
    Value:

optimizer_requiring (<class 'str'>)
    Doc:  When using the default mode, we will require optimizer with these tags. Separate tags with ':'.
    Value:

optdb__position_cutoff (<class 'float'>)
    Doc:  Where to stop eariler during optimization. It represent the position of the optimizer where to stop.
    Value:  inf

optdb__max_use_ratio (<class 'float'>)
    Doc:  A ratio that prevent infinite loop in EquilibriumOptimizer.
    Value:  8.0

cycle_detection ({'regular', 'fast'})
    Doc:  If cycle_detection is set to regular, most inplaces are allowed,but it is slower. If cycle_detection is set to faster, less inplacesare allowed, but it makes the compilation faster.The interaction of which one give the lower peak memory usage iscomplicated and not predictable, so if you are close to the peakmemory usage, triyng both could give you a small gain.
    Value:  regular

check_stack_trace ({'warn', 'raise', 'log', 'off'})
    Doc:  A flag for checking the stack trace during the optimization process. default (off): does not check the stack trace of any optimization log: inserts a dummy stack trace that identifies the optimizationthat inserted the variable that had an empty stack trace.warn: prints a warning if a stack trace is missing and also a dummystack trace is inserted that indicates which optimization insertedthe variable that had an empty stack trace.raise: raises an exception if a stack trace is missing
    Value:  off

metaopt__verbose (<class 'int'>)
    Doc:  0 for silent, 1 for only warnings, 2 for full output withtimings and selected implementation
    Value:  0

metaopt__optimizer_excluding (<class 'str'>)
    Doc:  exclude optimizers with these tags. Separate tags with ':'.
    Value:

metaopt__optimizer_including (<class 'str'>)
    Doc:  include optimizers with these tags. Separate tags with ':'.
    Value:

profile (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D208>>)
    Doc:  If VM should collect profile information
    Value:  False

profile_optimizer (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D2C8>>)
    Doc:  If VM should collect optimizer profile information
    Value:  False

profile_memory (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D348>>)
    Doc:  If VM should collect memory profile information and print it
    Value:  False

<theano.configparser.ConfigParam object at 0x000001CA3452D3C8>
    Doc:  Useful only for the vm linkers. When lazy is None, auto detect if lazy evaluation is needed and use the appropriate version. If lazy is True/False, force the version used between Loop/LoopGC and Stack.
    Value:  None

cache_optimizations (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D448>>)
    Doc:  WARNING: work in progress, does not work yet. Specify if the optimization cache should be used. This cache will any optimized graph and its optimization. Actually slow downs a lot the first optimization, and could possibly still contains some bugs. Use at your own risks.
    Value:  False

unittests__rseed (<class 'str'>)
    Doc:  Seed to use for randomized unit tests. Special value 'random' means using a seed of None.
    Value:  666

warn__identify_1pexp_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D548>>)
    Doc:  Warn if Theano versions prior to 7987b51 (2011-12-18) could have yielded a wrong result due to a bug in the is_1pexp function
    Value:  False

gpu__local_elemwise_fusion (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D6C8>>)
    Doc:  Enable or not in fast_run mode(fast_run optimization) the gpu elemwise fusion optimization
    Value:  True

gpuelemwise__sync (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D688>>)
    Doc:  when true, wait that the gpu fct finished and check it error code.
    Value:  True

warn__argmax_pushdown_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D388>>)
    Doc:  Warn if in past version of Theano we generated a bug with the theano.tensor.nnet.nnet.local_argmax_pushdown optimization. Was fixed 27 may 2010
    Value:  False

warn__gpusum_01_011_0111_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D848>>)
    Doc:  Warn if we are in a case where old version of Theano had a silent bug with GpuSum pattern 01,011 and 0111 when the first dimensions was bigger then 4096. Was fixed 31 may 2010
    Value:  False

warn__sum_sum_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452D7C8>>)
    Doc:  Warn if we are in a case where Theano version between version 9923a40c7b7a and the 2 august 2010 (fixed date), generated an error in that case. This happens when there are 2 consecutive sums in the graph, bad code was generated. Was fixed 2 August 2010
    Value:  False

warn__sum_div_dimshuffle_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452DA08>>)
    Doc:  Warn if previous versions of Theano (between rev. 3bd9b789f5e8, 2010-06-16, and cfc6322e5ad4, 2010-08-03) would have given incorrect result. This bug was triggered by sum of division of dimshuffled tensors.
    Value:  False

warn__subtensor_merge_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452DBC8>>)
    Doc:  Warn if previous versions of Theano (before 0.5rc2) could have given incorrect results when indexing into a subtensor with negative stride (for instance, for instance, x[a:b:-1][c]).
    Value:  False

warn__gpu_set_subtensor1 (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452DC88>>)
    Doc:  Warn if previous versions of Theano (before 0.6) could have given incorrect results when moving to the gpu set_subtensor(x[int vector], new_value)
    Value:  False

warn__vm_gc_bug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452DF88>>)
    Doc:  There was a bug that existed in the default Theano configuration, only in the development version between July 5th 2012 and July 30th 2012. This was not in a released version. If your code was affected by this bug, a warning will be printed during the code execution if you use the `linker=vm,vm__lazy=True,warn__vm_gc_bug=True` Theano flags. This warning is disabled by default as the bug was not released.
    Value:  False

warn__signal_conv2d_interface (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA3452DEC8>>)
    Doc:  Warn we use the new signal.conv2d() when its interface changed mid June 2014
    Value:  False

warn__reduce_join (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA345310C8>>)
    Doc:  Your current code is fine, but Theano versions prior to 0.7 (or this development version) might have given an incorrect result. To disable this warning, set the Theano flag warn__reduce_join to False. The problem was an optimization, that modified the pattern "Reduce{scalar.op}(Join(axis=0, a, b), axis=0)", did not check the reduction axis. So if the reduction axis was not 0, you got a wrong answer.
    Value:  False

warn__inc_set_subtensor1 (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34531148>>)
    Doc:  Warn if previous versions of Theano (before 0.7) could have given incorrect results for inc_subtensor and set_subtensor when using some patterns of advanced indexing (indexing with one vector or matrix of ints).
    Value:  False

warn__round (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA345312C8>>)
    Doc:  Warn when using `tensor.round` with the default mode. Round changed its default from `half_away_from_zero` to `half_to_even` to have the same default as NumPy.
    Value:  False

warn__inc_subtensor1_opt (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34531408>>)
    Doc:  Warn if previous versions of Theano (before 0.10) could have given incorrect results when computing inc_subtensor(zeros[idx], x)[idx], when idx is an array of integers with duplicated values.
    Value:  True

compiledir_format (<class 'str'>)
    Doc:  Format string for platform-dependent compiled module subdirectory
(relative to base_compiledir). Available keys: device, gxx_version,
hostname, numpy_version, platform, processor, python_bitwidth,
python_int_bitwidth, python_version, short_platform, theano_version.
Defaults to compiledir_%(short_platform)s-%(processor)s-%(python_versi
on)s-%(python_bitwidth)s.
    Value:  compiledir_%(short_platform)s-%(processor)s-%(python_version)s-%(python_bitwidth)s

<theano.configparser.ConfigParam object at 0x000001CA34520808>
    Doc:  platform-independent root directory for compiled modules
    Value:  C:\Users\mik\AppData\Local\Theano

<theano.configparser.ConfigParam object at 0x000001CA34520B48>
    Doc:  platform-dependent cache directory for compiled modules
    Value:  C:\Users\mik\AppData\Local\Theano\compiledir_Windows-10-10.0.19041-SP0-Intel64_Family_6_Model_165_Stepping_5_GenuineIntel-3.7.4-64

<theano.configparser.ConfigParam object at 0x000001CA345202C8>
    Doc:  Directory to cache pre-compiled kernels for the gpuarray backend.
    Value:  C:\Users\mik\AppData\Local\Theano\compiledir_Windows-10-10.0.19041-SP0-Intel64_Family_6_Model_165_Stepping_5_GenuineIntel-3.7.4-64\gpuarray_kernels

blas__ldflags (<class 'str'>)
    Doc:  lib[s] to include for [Fortran] level-3 blas implementation
    Value:

blas__check_openmp (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA34857AC8>>)
    Doc:  Check for openmp library conflict.
WARNING: Setting this to False leaves you open to wrong results in blas-related operations.
    Value:  True

scan__allow_gc (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA556F2AC8>>)
    Doc:  Allow/disallow gc inside of Scan (default: False)
    Value:  False

scan__allow_output_prealloc (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA556F2D88>>)
    Doc:  Allow/disallow memory preallocation for outputs inside of scan (default: True)
    Value:  True

scan__debug (<bound method BoolParam._apply of <theano.configparser.BoolParam object at 0x000001CA5448A1C8>>)
    Doc:  If True, enable extra verbose output related to scan
    Value:  False
rodluger commented 3 years ago

Hey @mikelty the issue seems to be that there isn't a C++ compiler available to theano (see the cxx property). You probably get a warning saying that C++ ops are disabled when you import theano, and that it will fallback to Python ops (right?). The starry ops require C++, so you'll need to make one available to theano in order to get it to work.

I've usually seen this issue on Windows when using the built-in Python installation. I'd recommend using the Anaconda distribution (https://www.anaconda.com/products/individual), which ships with the g++ compiler and should fix the issues you're having. Alternatively, you can look at what people posted here for other ideas -- this seems to be a common issue.