请考虑以下代码:
x = tf.placeholder("float", shape=[42, 4])
y = tf.zeros([42, 4], "float")
xy_stacked = tf.concat(1, [x, y])
print(x.get_shape())
print(y.get_shape())
print(xy_stacked.get_shape())
Run Code Online (Sandbox Code Playgroud)
这将产生以下输出,如预期的那样:
TensorShape([Dimension(42), Dimension(4)])
TensorShape([Dimension(42), Dimension(4)])
TensorShape([Dimension(42), Dimension(8)])
Run Code Online (Sandbox Code Playgroud)
但是,如果占位符具有动态维度,该维度在运行时由传递给的值确定feed_dict=
,如占位符通常那样:
x = tf.placeholder("float", shape=[None, 4])
y = tf.zeros([None, 4], "float")
xy_stacked = tf.concat(1, [x, y])
Run Code Online (Sandbox Code Playgroud)
这会产生错误tf.zeros([None, 4], "float")
.显然Dimension(None)
不允许tf.zeros
:
TypeError Traceback (most recent call last)
<ipython-input-24-277eca38a392> in <module>()
2
3 x = tf.placeholder("float", shape=[None, 4])
----> 4 y = tf.zeros([None, 4], "float")
5 xy_stacked = tf.concat(1, …
Run Code Online (Sandbox Code Playgroud) 我对RISC-V ABI寄存器名称感到困惑.例如,"RISC-V指令集手册,第I卷:用户级ISA,版本2.0"(第85页)中的表18.2指定堆栈指针sp
是寄存器x14
.但是,指令
addi sp,zero,0
Run Code Online (Sandbox Code Playgroud)
由riscv64-unknown-elf-as编译为0x00000113(-m32
没有区别).二进制:
000000000000 00000 000 00010 0010011
^imm ^rs1 ^f3 ^rd ^opcode
Run Code Online (Sandbox Code Playgroud)
所以这里sp
似乎是x2
.然后我google了一下,找到了RISC-V Linux用户手册.该文件表明了这sp
一点x30
.
那是什么?是否有不同的ABI?我可以使用命令行选项设置ABI riscv64-unknown-elf-*
吗?某处有一张综合表吗?
给出灰度图像I作为2D张量(维度W,H)和坐标C的张量(Dim.None,2).我想解释的行Ç作为坐标我,样品我在使用某种类型的插值(双线性很可能是罚款,我的使用情况),并将得到的值存储在一个新的张量的坐标P(尺寸无的,即,具有与C一样多的条目的1维具有行).
这是否可以(有效)使用TensorFlow?我能找到的只是用于调整图像大小(等距重新采样,如果你喜欢)的函数.但我无法在坐标列表中找到任何开箱即用的样本.
即我希望找到类似tf.interpolate()函数的东西:
I = tf.placeholder("float", shape=[128, 128])
C = tf.placeholder("float", shape=[None, 2])
P = tf.interpolate(I, C, axis=[0, 1], method="linear")
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会寻找一种解决方案,允许我使用带有形状的C(无,M)在M维上插入N维张量I,并产生N-M + 1维输出,如"轴"所示"上面代码中的参数.
(我的应用程序中的"图像"不是图片顺便说一下,它是来自物理模型的采样数据(当用作占位符时)或替代学习模型(当用作变量时).此时此物理模型具有2度自由,因此在"图像"中插值现在已足够,但我可能会在未来研究更高维度的模型.)
如果使用现有的TensorFlow功能无法做到这一点:当我想实现像这样的tf.interpolate()运算符时,我应该从哪里开始?(文档和/或简单示例代码)
Clang 从左到右评估其参数,gcc 从右到左评估其参数。(根据 C 和 C++ 语言规范,两者都可以,另请参阅g++ vs intel/clang 参数传递顺序?)有没有办法改变 clang 中参数求值的顺序?如果不通过编译指示或编译器开关,也许有人可以指出我在 clang 代码库中的正确位置?
一些背景信息:我有一个巨大的(第三方,没有很好记录的)代码库,我试图将其从 gcc 移植到 clang,但我看到了奇怪的问题。根据以前的经验,我认为至少部分问题在于论证顺序评估。能够在两种模式之间来回切换而不混合两个完全不同的编译器(因此可能会引入许多其他问题来源)对于解决问题非常有帮助。
我有一个 i2c 设备(触摸控制器)。通常,当它连接到 SoC i2c 主机(在我的例子中是一个 tegra 芯片)时,我会像这样将它添加到 .dts 文件中:
i2c@7000c000 {
st1332: touchscreen@55 {
compatible = "sitronix,st1232";
reg = <0x55>;
interrupt-parent = <&gpio>;
interrupts = <189 IRQ_TYPE_EDGE_FALLING>;
};
};
Run Code Online (Sandbox Code Playgroud)
i2c@7000c000
在 SoC 的 .dtsi 文件中定义了 i2c 控制器:
i2c1: i2c@7000c000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "nvidia,tegra124-i2c";
reg = <0x0 0x7000c000 0x0 0x100>;
interrupts = <0 38 0x04>;
scl-gpio = <&gpio 20 0>; /* gpio PC4 */
sda-gpio = <&gpio 21 0>; /* gpio PC5 */
nvidia,memory-clients …
Run Code Online (Sandbox Code Playgroud) 我正在使用当前的riscv-tools为PicoRV32内核构建固件映像.固件需要浮点,所以我正在使用-msoft-float
.这是我正在使用的编译器/链接器选项:
-Os -m32 -march=RV32I -msoft-float -ffreestanding -nostdlib -lgcc
Run Code Online (Sandbox Code Playgroud)
在此配置中,__ muldf3由(根据链接器-Map
输出)提供:
/opt/riscv/lib/gcc/riscv64-unknown-elf/4.9.2/soft-float/32/libgcc.a(dp-bit.o)
Run Code Online (Sandbox Code Playgroud)
但是这段代码与RV32I ISA不兼容:它使用MUL
和MULHU
指令!
如何获得普通RV32I ISA的软浮动?我需要编译自己的libgcc.a版本吗?有没有关于如何做到这一点的说明?
我正在尝试从命令行在Linux(Kubuntu 12.04 LTS)上使用Quartus II 13.0(免费Web软件包)从Verilog RTL生成Verilog技术网表。在一个项目中,我需要此项目,在该项目中,我将针对数千个生成的Verilog文件的不同工具生成的综合结果进行比较。因此,使用GUI并不是真正的选择。
例如,对于Xilinx Vivado,我可以使用以下TCL命令执行此操作:
read_verilog input.v
synth_design -part xc7k70t -top top_module
write_verilog output.v
Run Code Online (Sandbox Code Playgroud)
我使用过的大多数ASIC工具都提供类似的接口。
使用Xilinx XST,它会变得更加复杂:
1.)生成work.xst文件:
run -ifn work.prj ..some..more..options..
Run Code Online (Sandbox Code Playgroud)
2.)生成work.prj文件:
verilog work "input.v"
Run Code Online (Sandbox Code Playgroud)
3.)运行综合:
xst -ifn work.xst
Run Code Online (Sandbox Code Playgroud)
4.)从verilog二进制文件生成verilog网表:
netgen -w -ofmt verilog work.ngc output
Run Code Online (Sandbox Code Playgroud)
但是对于Quartus II,我根本找不到任何有关如何使用命令行工具的文档。我所能找到的只是图形化IDE界面的文档。也许我只是在错误的地方寻找?
因此,在我开始使用strace和类似工具戳Quartus II IDE之前:是否有人从命令行使用Quartus II,并且可以向我指出正确的方向?
我想编写自己的Yosys综合脚本。首先有什么好的模板?手册和网页包含各种示例,但没有“权威”的问候示例。
我当前的 iCE40 FPGA 项目包括一个 8 位(软 IP)微处理器,它连接到由 8 个 2Kx2 块 RAM 组成的 4Kx8 RAM。能够将新程序(用于 8 位微型)加载到 4kx8 RAM 中而无需 FPGA 重新编译或重新路由会很有用。建议的流程需要 a) 分析 FPGA 网表以找出 8 个 2Kx2 块 RAM(组成 4Kx8 RAM)的排列和命名方式。b) 将包含新程序(用于 8 位微)的 Intel hex 文件拆分为 8 个部分。c) 在比特流中找到 8 个 Block RAM 数据段中的每一个,并用新的节目内容替换每个段的当前内容。来自 icestorm 或 yosys 项目的任何人都可以评论这个提议的流程是否可行(或者如果解决方案已经存在)。
良好的设计实践不仅可以通过常规的预综合(行为)仿真来验证 Verilog 设计,而且还可以使用综合后仿真。在调试仿真和硬件之间的不匹配时,这实际上是强制性的。如何使用 iCE40 FPGA 的开源 IceStorm 流程来实现这一目标?
使用iCE40 FOSS IceStorm FPGA流程:如何使用yosys / iceStorm为三态I / O引脚(如双向数据总线引脚)编写Verilog?
yosys ×4
riscv ×2
tensorflow ×2
clang ×1
device-tree ×1
fpga ×1
intel-fpga ×1
linux-kernel ×1
python ×1
verilog ×1