Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pytensor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
testgroup
pytensor
Commits
8a4505c0
提交
8a4505c0
authored
3月 02, 2022
作者:
Brandon T. Willard
提交者:
Brandon T. Willard
3月 02, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move C-specific content from aesara.graph.op to aesara.link.c.op
上级
4eea9f79
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
45 个修改的文件
包含
207 行增加
和
174 行删除
+207
-174
debugmode.py
aesara/compile/debugmode.py
+2
-1
ops.py
aesara/compile/ops.py
+2
-1
basic_ops.py
aesara/gpuarray/basic_ops.py
+2
-1
blas.py
aesara/gpuarray/blas.py
+1
-1
blocksparse.py
aesara/gpuarray/blocksparse.py
+1
-1
ctc.py
aesara/gpuarray/ctc.py
+1
-1
dnn.py
aesara/gpuarray/dnn.py
+1
-1
linalg.py
aesara/gpuarray/linalg.py
+2
-1
reduction.py
aesara/gpuarray/reduction.py
+1
-1
subtensor.py
aesara/gpuarray/subtensor.py
+2
-1
op.py
aesara/graph/op.py
+0
-0
op.py
aesara/link/c/op.py
+0
-0
raise_op.py
aesara/raise_op.py
+1
-1
multinomial.py
aesara/sandbox/multinomial.py
+1
-1
rng_mrg.py
aesara/sandbox/rng_mrg.py
+1
-1
basic.py
aesara/scalar/basic.py
+1
-1
basic.py
aesara/sparse/basic.py
+2
-1
opt.py
aesara/sparse/opt.py
+1
-1
basic.py
aesara/tensor/basic.py
+2
-1
blas.py
aesara/tensor/blas.py
+2
-1
blas_c.py
aesara/tensor/blas_c.py
+1
-1
elemwise.py
aesara/tensor/elemwise.py
+1
-1
extra_ops.py
aesara/tensor/extra_ops.py
+2
-1
math.py
aesara/tensor/math.py
+2
-1
basic.py
aesara/tensor/nnet/basic.py
+2
-1
conv.py
aesara/tensor/nnet/conv.py
+1
-1
corr.py
aesara/tensor/nnet/corr.py
+2
-1
corr3d.py
aesara/tensor/nnet/corr3d.py
+2
-1
ctc.py
aesara/tensor/nnet/ctc.py
+1
-1
neighbours.py
aesara/tensor/nnet/neighbours.py
+1
-1
shape.py
aesara/tensor/shape.py
+1
-1
pool.py
aesara/tensor/signal/pool.py
+1
-1
subtensor.py
aesara/tensor/subtensor.py
+2
-1
basic.py
aesara/typed_list/basic.py
+2
-1
creating_a_c_op.rst
doc/extending/creating_a_c_op.rst
+2
-2
other_ops.rst
doc/extending/other_ops.rst
+1
-1
using_params.rst
doc/extending/using_params.rst
+1
-1
setup.cfg
setup.cfg
+4
-0
test_debugmode.py
tests/compile/test_debugmode.py
+2
-1
test_compute_test_value.py
tests/graph/test_compute_test_value.py
+2
-1
test_op.py
tests/graph/test_op.py
+2
-133
test_params_type.py
tests/graph/test_params_type.py
+1
-1
test_types.py
tests/graph/test_types.py
+1
-1
test_basic.py
tests/link/c/test_basic.py
+1
-1
test_op.py
tests/link/c/test_op.py
+143
-0
没有找到文件。
aesara/compile/debugmode.py
浏览文件 @
8a4505c0
...
...
@@ -32,9 +32,10 @@ from aesara.configdefaults import config
from
aesara.graph.basic
import
Variable
,
io_toposort
from
aesara.graph.destroyhandler
import
DestroyHandler
from
aesara.graph.features
import
BadOptimization
from
aesara.graph.op
import
COp
,
HasInnerGraph
,
Op
from
aesara.graph.op
import
HasInnerGraph
,
Op
from
aesara.graph.utils
import
InconsistencyError
,
MethodNotDefined
from
aesara.link.basic
import
Container
,
LocalLinker
from
aesara.link.c.op
import
COp
from
aesara.link.utils
import
map_storage
,
raise_with_op
from
aesara.printing
import
_debugprint
from
aesara.utils
import
NoDuplicateOptWarningFilter
,
difference
,
get_unbound_function
...
...
aesara/compile/ops.py
浏览文件 @
8a4505c0
...
...
@@ -11,8 +11,9 @@ import warnings
from
typing
import
Dict
,
Tuple
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.type
import
CType
from
aesara.link.c.op
import
COp
def
register_view_op_c_code
(
type
,
code
,
version
=
()):
...
...
aesara/gpuarray/basic_ops.py
浏览文件 @
8a4505c0
...
...
@@ -11,12 +11,13 @@ import aesara.tensor as at
from
aesara.configdefaults
import
config
from
aesara.gradient
import
grad_undefined
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.op
import
COp
,
ExternalCOp
,
Op
,
_NoPythonOp
from
aesara.graph.op
import
Op
,
_NoPythonOp
from
aesara.graph.opt
import
copy_stack_trace
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
CType
from
aesara.graph.utils
import
MethodNotDefined
from
aesara.link.c.interface
import
HideC
from
aesara.link.c.op
import
COp
,
ExternalCOp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.scalar
import
int32
as
int32_t
from
aesara.tensor.basic
import
Alloc
,
AllocEmpty
,
Join
,
Split
,
infer_broadcastable
...
...
aesara/gpuarray/blas.py
浏览文件 @
8a4505c0
...
...
@@ -10,9 +10,9 @@ from aesara.gpuarray.basic_ops import (
)
from
aesara.gpuarray.opt_util
import
inplace_allocempty
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
_NoPythonCOp
from
aesara.graph.opt
import
LocalOptGroup
,
in2out
from
aesara.graph.params_type
import
ParamsType
from
aesara.link.c.op
import
_NoPythonCOp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.tensor.basic
import
as_tensor_variable
...
...
aesara/gpuarray/blocksparse.py
浏览文件 @
8a4505c0
...
...
@@ -11,8 +11,8 @@ from aesara.gpuarray.basic_ops import (
from
aesara.gpuarray.type
import
gpu_context_type
from
aesara.gradient
import
grad_undefined
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
_NoPythonExternalCOp
from
aesara.graph.params_type
import
ParamsType
from
aesara.link.c.op
import
_NoPythonExternalCOp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.tensor
import
as_tensor_variable
from
aesara.tensor.type
import
discrete_dtypes
...
...
aesara/gpuarray/ctc.py
浏览文件 @
8a4505c0
...
...
@@ -13,8 +13,8 @@ from aesara.gpuarray.elemwise import GpuDimShuffle
from
aesara.gpuarray.type
import
GpuArrayType
,
gpu_context_type
from
aesara.gradient
import
grad_undefined
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
_NoPythonExternalCOp
from
aesara.graph.opt
import
local_optimizer
from
aesara.link.c.op
import
_NoPythonExternalCOp
from
aesara.tensor.basic
import
as_tensor_variable
from
aesara.tensor.basic_opt
import
register_canonicalize
from
aesara.tensor.blas
import
batched_dot
...
...
aesara/gpuarray/dnn.py
浏览文件 @
8a4505c0
...
...
@@ -28,10 +28,10 @@ from aesara.gpuarray.basic_ops import (
from
aesara.gpuarray.type
import
GpuArraySharedVariable
,
get_context
,
gpu_context_type
from
aesara.gradient
import
DisconnectedType
,
grad_not_implemented
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.op
import
ExternalCOp
,
_NoPythonCOp
,
_NoPythonExternalCOp
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
CDataType
,
EnumList
,
Generic
from
aesara.link.c.cmodule
import
GCC_compiler
from
aesara.link.c.op
import
ExternalCOp
,
_NoPythonCOp
,
_NoPythonExternalCOp
from
aesara.raise_op
import
Assert
from
aesara.scalar
import
as_scalar
from
aesara.scalar
import
bool
as
bool_t
...
...
aesara/gpuarray/linalg.py
浏览文件 @
8a4505c0
...
...
@@ -14,8 +14,9 @@ from aesara.gpuarray.basic_ops import (
)
from
aesara.gpuarray.type
import
GpuArrayType
,
gpu_context_type
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
ExternalCOp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.params_type
import
ParamsType
from
aesara.link.c.op
import
ExternalCOp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.tensor
import
basic
as
at
from
aesara.tensor
import
math
as
tm
...
...
aesara/gpuarray/reduction.py
浏览文件 @
8a4505c0
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
from
aesara.graph.type
import
Generic
from
aesara.link.c.op
import
COp
from
.basic_ops
import
as_gpuarray_variable
,
gpuarray_helper_inc_dir
,
infer_context_name
from
.type
import
GpuArrayType
...
...
aesara/gpuarray/subtensor.py
浏览文件 @
8a4505c0
...
...
@@ -5,10 +5,11 @@ import numpy as np
import
aesara.tensor
as
at
from
aesara.gradient
import
grad_not_implemented
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
CType
from
aesara.link.c.interface
import
HideC
from
aesara.link.c.op
import
COp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.scalar
import
int32
as
int_t
from
aesara.scalar
import
uint32
as
size_t
...
...
aesara/graph/op.py
浏览文件 @
8a4505c0
差异被折叠。
点击展开。
aesara/link/c/op.py
0 → 100644
浏览文件 @
8a4505c0
差异被折叠。
点击展开。
aesara/raise_op.py
浏览文件 @
8a4505c0
...
...
@@ -7,9 +7,9 @@ import numpy as np
from
aesara.gradient
import
DisconnectedType
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.op
import
COp
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
Generic
from
aesara.link.c.op
import
COp
class
ExceptionType
(
Generic
):
...
...
aesara/sandbox/multinomial.py
浏览文件 @
8a4505c0
...
...
@@ -7,7 +7,7 @@ import numpy as np
import
aesara.tensor
as
at
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
from
aesara.
graph
.op
import
COp
from
aesara.
link.c
.op
import
COp
from
aesara.scalar
import
Scalar
,
as_scalar
from
aesara.tensor.type
import
discrete_dtypes
...
...
aesara/sandbox/rng_mrg.py
浏览文件 @
8a4505c0
...
...
@@ -25,9 +25,9 @@ from aesara.compile import optdb
from
aesara.configdefaults
import
config
from
aesara.gradient
import
undefined_grad
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.opt
import
in2out
,
local_optimizer
from
aesara.graph.params_type
import
ParamsType
from
aesara.link.c.op
import
COp
,
Op
from
aesara.sandbox
import
multinomial
from
aesara.scalar
import
bool
as
bool_t
from
aesara.scalar
import
int32
as
int_t
...
...
aesara/scalar/basic.py
浏览文件 @
8a4505c0
...
...
@@ -27,10 +27,10 @@ from aesara.configdefaults import config
from
aesara.gradient
import
DisconnectedType
,
grad_undefined
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
,
clone
,
list_of_nodes
from
aesara.graph.fg
import
FunctionGraph
from
aesara.graph.op
import
COp
from
aesara.graph.opt
import
MergeOptimizer
from
aesara.graph.type
import
CType
from
aesara.graph.utils
import
MetaObject
,
MethodNotDefined
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.printing
import
pprint
from
aesara.utils
import
(
...
...
aesara/sparse/basic.py
浏览文件 @
8a4505c0
...
...
@@ -18,7 +18,8 @@ from aesara import scalar as aes
from
aesara.configdefaults
import
config
from
aesara.gradient
import
DisconnectedType
,
grad_not_implemented
,
grad_undefined
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.sparse.type
import
SparseType
,
_is_sparse
from
aesara.sparse.utils
import
hash_from_sparse
...
...
aesara/sparse/opt.py
浏览文件 @
8a4505c0
...
...
@@ -5,8 +5,8 @@ import aesara
import
aesara.scalar
as
aes
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
,
_NoPythonCOp
from
aesara.graph.opt
import
PatternSub
,
TopoOptimizer
,
local_optimizer
from
aesara.link.c.op
import
COp
,
_NoPythonCOp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.sparse
import
basic
as
sparse
from
aesara.sparse.basic
import
(
...
...
aesara/tensor/basic.py
浏览文件 @
8a4505c0
...
...
@@ -23,10 +23,11 @@ from aesara import scalar as aes
from
aesara.gradient
import
DisconnectedType
,
grad_not_implemented
,
grad_undefined
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.fg
import
FunctionGraph
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.opt_utils
import
optimize_graph
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
Type
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.printing
import
min_informative_str
,
pprint
from
aesara.raise_op
import
CheckAndRaise
,
assert_op
...
...
aesara/tensor/blas.py
浏览文件 @
8a4505c0
...
...
@@ -147,7 +147,7 @@ from aesara.compile.mode import optdb
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
,
view_roots
from
aesara.graph.features
import
ReplacementDidNotRemoveError
,
ReplaceValidate
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.opt
import
(
EquilibriumOptimizer
,
GlobalOptimizer
,
...
...
@@ -158,6 +158,7 @@ from aesara.graph.opt import (
from
aesara.graph.optdb
import
SequenceDB
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.utils
import
InconsistencyError
,
MethodNotDefined
,
TestValueError
from
aesara.link.c.op
import
COp
from
aesara.printing
import
FunctionPrinter
,
debugprint
,
pprint
from
aesara.scalar
import
bool
as
bool_t
from
aesara.tensor
import
basic
as
at
...
...
aesara/tensor/blas_c.py
浏览文件 @
8a4505c0
from
aesara.configdefaults
import
config
from
aesara.graph.op
import
COp
from
aesara.graph.opt
import
in2out
from
aesara.graph.params_type
import
ParamsType
from
aesara.link.c.op
import
COp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.tensor
import
basic
as
at
from
aesara.tensor.blas
import
(
...
...
aesara/tensor/elemwise.py
浏览文件 @
8a4505c0
...
...
@@ -8,10 +8,10 @@ from aesara.configdefaults import config
from
aesara.gradient
import
DisconnectedType
from
aesara.graph.basic
import
Apply
from
aesara.graph.null_type
import
NullType
from
aesara.graph.op
import
COp
,
ExternalCOp
,
OpenMPOp
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.utils
import
MethodNotDefined
from
aesara.link.c.basic
import
failure_code
from
aesara.link.c.op
import
COp
,
ExternalCOp
,
OpenMPOp
from
aesara.misc.frozendict
import
frozendict
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.printing
import
FunctionPrinter
,
Printer
,
pprint
...
...
aesara/tensor/extra_ops.py
浏览文件 @
8a4505c0
...
...
@@ -11,9 +11,10 @@ from aesara.gradient import (
grad_undefined
,
)
from
aesara.graph.basic
import
Apply
,
Variable
,
equal_computations
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
EnumList
,
Generic
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.raise_op
import
Assert
from
aesara.scalar
import
int32
as
int_t
...
...
aesara/tensor/math.py
浏览文件 @
8a4505c0
...
...
@@ -7,9 +7,10 @@ from aesara import config, printing
from
aesara
import
scalar
as
aes
from
aesara.gradient
import
DisconnectedType
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
Generic
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.printing
import
pprint
from
aesara.scalar.basic
import
BinaryScalarOp
...
...
aesara/tensor/nnet/basic.py
浏览文件 @
8a4505c0
...
...
@@ -24,8 +24,9 @@ from aesara import scalar as aes
from
aesara.compile
import
optdb
from
aesara.gradient
import
DisconnectedType
,
grad_not_implemented
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.opt
import
copy_stack_trace
,
local_optimizer
,
optimizer
from
aesara.link.c.op
import
COp
from
aesara.raise_op
import
Assert
from
aesara.scalar
import
UnaryScalarOp
from
aesara.tensor
import
basic
as
at
...
...
aesara/tensor/nnet/conv.py
浏览文件 @
8a4505c0
...
...
@@ -24,7 +24,7 @@ except ImportError:
import
aesara
from
aesara.graph.basic
import
Apply
from
aesara.
graph
.op
import
OpenMPOp
from
aesara.
link.c
.op
import
OpenMPOp
from
aesara.tensor
import
blas
from
aesara.tensor.basic
import
(
as_tensor_variable
,
...
...
aesara/tensor/nnet/corr.py
浏览文件 @
8a4505c0
...
...
@@ -5,9 +5,10 @@ from typing import Optional
import
aesara
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
OpenMPOp
,
_NoPythonOp
from
aesara.graph.op
import
_NoPythonOp
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
EnumList
from
aesara.link.c.op
import
OpenMPOp
from
aesara.scalar
import
int8
,
int64
from
aesara.tensor
import
blas_headers
from
aesara.tensor.basic
import
as_tensor_variable
...
...
aesara/tensor/nnet/corr3d.py
浏览文件 @
8a4505c0
...
...
@@ -5,9 +5,10 @@ from typing import Optional
import
aesara
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
OpenMPOp
,
_NoPythonOp
from
aesara.graph.op
import
_NoPythonOp
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
EnumList
from
aesara.link.c.op
import
OpenMPOp
from
aesara.scalar
import
int64
from
aesara.tensor
import
blas_headers
from
aesara.tensor.basic
import
as_tensor_variable
...
...
aesara/tensor/nnet/ctc.py
浏览文件 @
8a4505c0
...
...
@@ -5,9 +5,9 @@ import aesara.tensor as at
from
aesara.configdefaults
import
config
from
aesara.gradient
import
grad_undefined
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
ExternalCOp
,
OpenMPOp
from
aesara.graph.opt
import
local_optimizer
from
aesara.link.c.cmodule
import
GCC_compiler
from
aesara.link.c.op
import
ExternalCOp
,
OpenMPOp
from
aesara.tensor.basic_opt
import
register_canonicalize
from
aesara.tensor.blas
import
batched_dot
from
aesara.tensor.extra_ops
import
cpu_contiguous
...
...
aesara/tensor/nnet/neighbours.py
浏览文件 @
8a4505c0
...
...
@@ -7,8 +7,8 @@ import numpy as np
import
aesara
from
aesara.gradient
import
grad_not_implemented
,
grad_undefined
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
from
aesara.graph.type
import
EnumList
from
aesara.link.c.op
import
COp
from
aesara.tensor.basic
import
arange
,
as_tensor_variable
,
concatenate
,
stack
,
zeros
from
aesara.tensor.math
import
ceil_intdiv
from
aesara.tensor.subtensor
import
inc_subtensor
,
set_subtensor
...
...
aesara/tensor/shape.py
浏览文件 @
8a4505c0
...
...
@@ -7,8 +7,8 @@ import numpy as np
import
aesara
from
aesara.gradient
import
DisconnectedType
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.op
import
COp
from
aesara.graph.params_type
import
ParamsType
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.scalar
import
int32
from
aesara.tensor
import
_get_vector_length
...
...
aesara/tensor/signal/pool.py
浏览文件 @
8a4505c0
...
...
@@ -12,10 +12,10 @@ import aesara.tensor.basic as at
import
aesara.tensor.math
as
tm
from
aesara.gradient
import
DisconnectedType
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.op
import
OpenMPOp
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
EnumList
from
aesara.graph.utils
import
MethodNotDefined
from
aesara.link.c.op
import
OpenMPOp
from
aesara.scalar
import
bool
as
bool_t
from
aesara.tensor.type
import
TensorType
,
int_dtypes
...
...
aesara/tensor/subtensor.py
浏览文件 @
8a4505c0
...
...
@@ -11,10 +11,11 @@ from aesara import scalar as aes
from
aesara.configdefaults
import
config
from
aesara.gradient
import
DisconnectedType
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.params_type
import
ParamsType
from
aesara.graph.type
import
Type
from
aesara.graph.utils
import
MethodNotDefined
from
aesara.link.c.op
import
COp
from
aesara.misc.safe_asarray
import
_asarray
from
aesara.printing
import
Printer
,
pprint
,
set_precedence
from
aesara.scalar.basic
import
ScalarConstant
...
...
aesara/typed_list/basic.py
浏览文件 @
8a4505c0
...
...
@@ -4,7 +4,8 @@ import aesara.tensor as at
from
aesara.compile.debugmode
import
_lessbroken_deepcopy
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.link.c.op
import
COp
from
aesara.tensor.type
import
scalar
from
aesara.tensor.type_other
import
SliceType
from
aesara.tensor.var
import
TensorVariable
...
...
doc/extending/creating_a_c_op.rst
浏览文件 @
8a4505c0
...
...
@@ -475,7 +475,7 @@ storage with the right shape and number of dimensions.
import numpy
import aesara
from aesara.
graph
.op import COp
from aesara.
link.c
.op import COp
from aesara.graph.basic import Apply
...
...
@@ -745,7 +745,7 @@ The new :class:`Op` is defined inside a Python file with the following code :
.. testcode::
import aesara
from aesara.
graph
.op import ExternalCOp
from aesara.
link.c
.op import ExternalCOp
class VectorTimesVector(ExternalCOp):
__props__ = ()
...
...
doc/extending/other_ops.rst
浏览文件 @
8a4505c0
...
...
@@ -168,7 +168,7 @@ To allow consistent interface of Ops that support OpenMP, we have some
helper code. Doing this also allows to enable/disable OpenMP globally
or per op for fine-grained control.
Your Op needs to inherit from ``aesara.
graph
.op.OpenMPOp``. If it overrides
Your Op needs to inherit from ``aesara.
link.c
.op.OpenMPOp``. If it overrides
the ``__init__()`` method, it must have an ``openmp=None`` parameter
and must call ``super(MyOpClass, self).__init__(openmp=openmp)``.
...
...
doc/extending/using_params.rst
浏览文件 @
8a4505c0
...
...
@@ -139,8 +139,8 @@ the params type.
.. testcode::
from aesara.graph.op import COp
from aesara.graph.type import Generic
from aesara.link.c.op import COp
from aesara.scalar import as_scalar
class MulOp(COp):
...
...
setup.cfg
浏览文件 @
8a4505c0
...
...
@@ -151,6 +151,10 @@ check_untyped_defs = False
ignore_errors = True
check_untyped_defs = False
[mypy-aesara.link.c.op]
ignore_errors = True
check_untyped_defs = False
[mypy-aesara.link.utils]
ignore_errors = True
check_untyped_defs = False
...
...
tests/compile/test_debugmode.py
浏览文件 @
8a4505c0
...
...
@@ -17,9 +17,10 @@ from aesara.compile.mode import predefined_modes
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.features
import
BadOptimization
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.opt
import
local_optimizer
from
aesara.graph.optdb
import
EquilibriumDB
from
aesara.link.c.op
import
COp
from
aesara.tensor.math
import
add
,
dot
,
log
from
aesara.tensor.type
import
TensorType
,
dvector
,
fmatrix
,
fvector
,
vector
from
tests
import
unittest_tools
as
utt
...
...
tests/graph/test_compute_test_value.py
浏览文件 @
8a4505c0
...
...
@@ -9,8 +9,9 @@ from aesara import scalar as aes
from
aesara.configdefaults
import
config
from
aesara.graph
import
utils
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.type
import
Type
from
aesara.link.c.op
import
COp
from
aesara.tensor.math
import
_allclose
,
dot
from
aesara.tensor.type
import
fmatrix
,
iscalar
,
matrix
,
vector
...
...
tests/graph/test_op.py
浏览文件 @
8a4505c0
...
...
@@ -4,13 +4,12 @@ import pytest
import
aesara
import
aesara.graph.op
as
op
import
aesara.tensor
as
at
from
aesara
import
scalar
as
aes
from
aesara
import
shared
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.op
import
COp
,
Op
from
aesara.graph.op
import
Op
from
aesara.graph.type
import
Generic
,
Type
from
aesara.graph.utils
import
MethodNotDefined
,
TestValueError
from
aesara.graph.utils
import
TestValueError
from
aesara.tensor.math
import
log
from
aesara.tensor.type
import
dmatrix
,
dscalar
,
dvector
,
vector
...
...
@@ -82,38 +81,6 @@ class NoInputOp(Op):
output_storage
[
0
][
0
]
=
"test Op no input"
class
StructOp
(
COp
):
__props__
=
()
def
do_constant_folding
(
self
,
fgraph
,
node
):
# we are not constant
return
False
# The input only serves to distinguish thunks
def
make_node
(
self
,
i
):
return
Apply
(
self
,
[
i
],
[
aes
.
uint64
()])
def
c_support_code_struct
(
self
,
node
,
name
):
return
f
"npy_uint64 counter{name};"
def
c_init_code_struct
(
self
,
node
,
name
,
sub
):
return
f
"counter{name} = 0;"
def
c_code
(
self
,
node
,
name
,
input_names
,
outputs_names
,
sub
):
return
"""
%(out)
s = counter
%(name)
s;
counter
%(name)
s++;
"""
%
dict
(
out
=
outputs_names
[
0
],
name
=
name
)
def
c_code_cache_version
(
self
):
return
(
1
,)
def
perform
(
self
,
*
args
,
**
kwargs
):
raise
NotImplementedError
(
"No Python implementation available."
)
class
TestOp
:
# Sanity tests
...
...
@@ -141,106 +108,8 @@ class TestOp:
rval
=
f
()
assert
rval
==
"test Op no input"
@pytest.mark.skipif
(
not
config
.
cxx
,
reason
=
"G++ not available, so we need to skip this test."
)
def
test_op_struct
(
self
):
sop
=
StructOp
()
c
=
sop
(
aesara
.
tensor
.
constant
(
0
))
mode
=
None
if
config
.
mode
==
"FAST_COMPILE"
:
mode
=
"FAST_RUN"
f
=
aesara
.
function
([],
c
,
mode
=
mode
)
rval
=
f
()
assert
rval
==
0
rval
=
f
()
assert
rval
==
1
c2
=
sop
(
aesara
.
tensor
.
constant
(
1
))
f2
=
aesara
.
function
([],
[
c
,
c2
],
mode
=
mode
)
rval
=
f2
()
assert
rval
==
[
0
,
0
]
class
TestMakeThunk
:
def
test_no_c_code
(
self
):
class
IncOnePython
(
COp
):
"""An Op with only a Python (perform) implementation"""
__props__
=
()
def
make_node
(
self
,
input
):
input
=
aes
.
as_scalar
(
input
)
output
=
input
.
type
()
return
Apply
(
self
,
[
input
],
[
output
])
def
perform
(
self
,
node
,
inputs
,
outputs
):
(
input
,)
=
inputs
(
output
,)
=
outputs
output
[
0
]
=
input
+
1
i
=
aes
.
int32
(
"i"
)
o
=
IncOnePython
()(
i
)
# Check that the c_code function is not implemented
with
pytest
.
raises
(
NotImplementedError
):
o
.
owner
.
op
.
c_code
(
o
.
owner
,
"o"
,
[
"x"
],
"z"
,
{
"fail"
:
""
})
storage_map
=
{
i
:
[
np
.
int32
(
3
)],
o
:
[
None
]}
compute_map
=
{
i
:
[
True
],
o
:
[
False
]}
thunk
=
o
.
owner
.
op
.
make_thunk
(
o
.
owner
,
storage_map
,
compute_map
,
no_recycling
=
[]
)
required
=
thunk
()
# Check everything went OK
assert
not
required
# We provided all inputs
assert
compute_map
[
o
][
0
]
assert
storage_map
[
o
][
0
]
==
4
def
test_no_perform
(
self
):
class
IncOneC
(
COp
):
"""An Op with only a C (c_code) implementation"""
__props__
=
()
def
make_node
(
self
,
input
):
input
=
aes
.
as_scalar
(
input
)
output
=
input
.
type
()
return
Apply
(
self
,
[
input
],
[
output
])
def
c_code
(
self
,
node
,
name
,
inputs
,
outputs
,
sub
):
(
x
,)
=
inputs
(
z
,)
=
outputs
return
f
"{z} = {x} + 1;"
def
perform
(
self
,
*
args
,
**
kwargs
):
raise
NotImplementedError
(
"No Python implementation available."
)
i
=
aes
.
int32
(
"i"
)
o
=
IncOneC
()(
i
)
# Check that the perform function is not implemented
with
pytest
.
raises
((
NotImplementedError
,
MethodNotDefined
)):
o
.
owner
.
op
.
perform
(
o
.
owner
,
0
,
[
None
])
storage_map
=
{
i
:
[
np
.
int32
(
3
)],
o
:
[
None
]}
compute_map
=
{
i
:
[
True
],
o
:
[
False
]}
thunk
=
o
.
owner
.
op
.
make_thunk
(
o
.
owner
,
storage_map
,
compute_map
,
no_recycling
=
[]
)
if
config
.
cxx
:
required
=
thunk
()
# Check everything went OK
assert
not
required
# We provided all inputs
assert
compute_map
[
o
][
0
]
assert
storage_map
[
o
][
0
]
==
4
else
:
with
pytest
.
raises
((
NotImplementedError
,
MethodNotDefined
)):
thunk
()
def
test_no_make_node
(
self
):
class
DoubleOp
(
Op
):
"""An Op without make_node"""
...
...
tests/graph/test_params_type.py
浏览文件 @
8a4505c0
...
...
@@ -4,9 +4,9 @@ import pytest
import
aesara
from
aesara
import
tensor
as
at
from
aesara.graph.basic
import
Apply
from
aesara.graph.op
import
COp
,
ExternalCOp
from
aesara.graph.params_type
import
Params
,
ParamsType
from
aesara.graph.type
import
EnumList
,
Generic
from
aesara.link.c.op
import
COp
,
ExternalCOp
from
aesara.scalar
import
Scalar
from
aesara.tensor.type
import
TensorType
,
matrix
from
tests
import
unittest_tools
as
utt
...
...
tests/graph/test_types.py
浏览文件 @
8a4505c0
...
...
@@ -6,8 +6,8 @@ import pytest
import
aesara
from
aesara
import
scalar
as
aes
from
aesara.graph.basic
import
Apply
,
Variable
from
aesara.graph.op
import
COp
from
aesara.graph.type
import
CDataType
,
CEnumType
,
EnumList
,
EnumType
,
Type
from
aesara.link.c.op
import
COp
from
aesara.tensor.type
import
TensorType
,
continuous_dtypes
...
...
tests/link/c/test_basic.py
浏览文件 @
8a4505c0
...
...
@@ -7,10 +7,10 @@ from aesara.compile.mode import Mode
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
,
Constant
,
Variable
from
aesara.graph.fg
import
FunctionGraph
from
aesara.graph.op
import
COp
from
aesara.graph.type
import
CType
from
aesara.link.basic
import
PerformLinker
from
aesara.link.c.basic
import
CLinker
,
DualLinker
,
OpWiseCLinker
from
aesara.link.c.op
import
COp
from
aesara.tensor.type
import
iscalar
,
matrix
,
vector
from
tests.link.test_link
import
make_function
...
...
tests/link/c/test_op.py
0 → 100644
浏览文件 @
8a4505c0
import
numpy
as
np
import
pytest
import
aesara
from
aesara
import
scalar
as
aes
from
aesara.configdefaults
import
config
from
aesara.graph.basic
import
Apply
from
aesara.graph.utils
import
MethodNotDefined
from
aesara.link.c.op
import
COp
class
StructOp
(
COp
):
__props__
=
()
def
do_constant_folding
(
self
,
fgraph
,
node
):
# we are not constant
return
False
# The input only serves to distinguish thunks
def
make_node
(
self
,
i
):
return
Apply
(
self
,
[
i
],
[
aes
.
uint64
()])
def
c_support_code_struct
(
self
,
node
,
name
):
return
f
"npy_uint64 counter{name};"
def
c_init_code_struct
(
self
,
node
,
name
,
sub
):
return
f
"counter{name} = 0;"
def
c_code
(
self
,
node
,
name
,
input_names
,
outputs_names
,
sub
):
return
"""
%(out)
s = counter
%(name)
s;
counter
%(name)
s++;
"""
%
dict
(
out
=
outputs_names
[
0
],
name
=
name
)
def
c_code_cache_version
(
self
):
return
(
1
,)
def
perform
(
self
,
*
args
,
**
kwargs
):
raise
NotImplementedError
(
"No Python implementation available."
)
class
TestCOp
:
@pytest.mark.skipif
(
not
config
.
cxx
,
reason
=
"G++ not available, so we need to skip this test."
)
def
test_op_struct
(
self
):
sop
=
StructOp
()
c
=
sop
(
aesara
.
tensor
.
constant
(
0
))
mode
=
None
if
config
.
mode
==
"FAST_COMPILE"
:
mode
=
"FAST_RUN"
f
=
aesara
.
function
([],
c
,
mode
=
mode
)
rval
=
f
()
assert
rval
==
0
rval
=
f
()
assert
rval
==
1
c2
=
sop
(
aesara
.
tensor
.
constant
(
1
))
f2
=
aesara
.
function
([],
[
c
,
c2
],
mode
=
mode
)
rval
=
f2
()
assert
rval
==
[
0
,
0
]
class
TestMakeThunk
:
def
test_no_c_code
(
self
):
class
IncOnePython
(
COp
):
"""An Op with only a Python (perform) implementation"""
__props__
=
()
def
make_node
(
self
,
input
):
input
=
aes
.
as_scalar
(
input
)
output
=
input
.
type
()
return
Apply
(
self
,
[
input
],
[
output
])
def
perform
(
self
,
node
,
inputs
,
outputs
):
(
input
,)
=
inputs
(
output
,)
=
outputs
output
[
0
]
=
input
+
1
i
=
aes
.
int32
(
"i"
)
o
=
IncOnePython
()(
i
)
# Check that the c_code function is not implemented
with
pytest
.
raises
(
NotImplementedError
):
o
.
owner
.
op
.
c_code
(
o
.
owner
,
"o"
,
[
"x"
],
"z"
,
{
"fail"
:
""
})
storage_map
=
{
i
:
[
np
.
int32
(
3
)],
o
:
[
None
]}
compute_map
=
{
i
:
[
True
],
o
:
[
False
]}
thunk
=
o
.
owner
.
op
.
make_thunk
(
o
.
owner
,
storage_map
,
compute_map
,
no_recycling
=
[]
)
required
=
thunk
()
# Check everything went OK
assert
not
required
# We provided all inputs
assert
compute_map
[
o
][
0
]
assert
storage_map
[
o
][
0
]
==
4
def
test_no_perform
(
self
):
class
IncOneC
(
COp
):
"""An Op with only a C (c_code) implementation"""
__props__
=
()
def
make_node
(
self
,
input
):
input
=
aes
.
as_scalar
(
input
)
output
=
input
.
type
()
return
Apply
(
self
,
[
input
],
[
output
])
def
c_code
(
self
,
node
,
name
,
inputs
,
outputs
,
sub
):
(
x
,)
=
inputs
(
z
,)
=
outputs
return
f
"{z} = {x} + 1;"
def
perform
(
self
,
*
args
,
**
kwargs
):
raise
NotImplementedError
(
"No Python implementation available."
)
i
=
aes
.
int32
(
"i"
)
o
=
IncOneC
()(
i
)
# Check that the perform function is not implemented
with
pytest
.
raises
((
NotImplementedError
,
MethodNotDefined
)):
o
.
owner
.
op
.
perform
(
o
.
owner
,
0
,
[
None
])
storage_map
=
{
i
:
[
np
.
int32
(
3
)],
o
:
[
None
]}
compute_map
=
{
i
:
[
True
],
o
:
[
False
]}
thunk
=
o
.
owner
.
op
.
make_thunk
(
o
.
owner
,
storage_map
,
compute_map
,
no_recycling
=
[]
)
if
config
.
cxx
:
required
=
thunk
()
# Check everything went OK
assert
not
required
# We provided all inputs
assert
compute_map
[
o
][
0
]
assert
storage_map
[
o
][
0
]
==
4
else
:
with
pytest
.
raises
((
NotImplementedError
,
MethodNotDefined
)):
thunk
()
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论