小编Yur*_*riy的帖子

在断开连接时处理pyserial中的异常

我有从串口读取数据的代码.

try: 
  dataIn = self.port.read(100) 
except serial.SerialException: 
  #do some work
  return None
Run Code Online (Sandbox Code Playgroud)

如果我断开设备,我会抓住我无法处理的异常.

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/serial/serialposix.py", line 475, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)')
serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/katkov/work/obd2rds/obd2rds/testing/python/main.py", line 48, in <module>
    main()
  File …
Run Code Online (Sandbox Code Playgroud)

python exception pyserial

5
推荐指数
1
解决办法
1万
查看次数

何时可以重用avx指令中的源寄存器

在 avx 指令中用作源的寄存器何时可以在指令开始处理后重用?

例如:我想使用vgatherdps消耗两个 ymm 寄存器的指令,其中之一是位移索引。我意识到vgatherdps收集数据需要花费大量时间,因为数据的局部性较差。

位移索引寄存器是否会在指令执行期间被保留,或者我可以在后续指令中重用它而无需挂起管道?

assembly simd cpu-architecture avx micro-optimization

3
推荐指数
1
解决办法
503
查看次数

使用 SIMD 内在函数加载或洗牌一对浮点数以实现双精度?

我编写了一些用于处理单精度浮点计算 SIMD 内在函数的优化。

有时,双精度指令比任何单精度指令pd更容易满足我的要求。ps

示例1:

我有指针float prt * ,它指向浮点数块: f0 f1 f2 f3 等。

我想用 [ f0, f1, f0, f1, f0, f1, f0, f1 ] 加载 __m256 值。我没有找到__m256数据类型的 64 位广播。我可以_mm256_broadcast_sd在花车上使用吗?

float* ptr = ...; // pointer to some memory chunk aligned to 4 bytes
__m256 vat = _mm256_castpd_ps( _mm256_broadcast_sd( ( double* )ptr ) );
Run Code Online (Sandbox Code Playgroud)

示例2:

我有 __m256 值 [f0, f1, f2, f3, f4, f5, f6, f7]。我可以使用像 _mm256_srl_epi32 这样的移位指令,它以 __m256i 值作为参数来使用我的 __m256 值进行操作吗? …

c sse simd intrinsics avx

1
推荐指数
1
解决办法
501
查看次数