Psychtoolbox SYNCHRONIZATION FAILURE问题

2023-05-16

参考:http://psychtoolbox.org/docs/SyncTrouble

 

写这篇文章的原因是自己遇见了这个问题,并且换了两台电脑都不行,有点烦了,决心把它弄清楚是怎么回事。因为我的主要是windows,所以这篇文章针对的也就是windows用户了。

 

报错内容一般都是:SYNCHRONIZATION FAILURE

 

首先我们需要理解Psychtoolbox是通过一帧一帧的刷新屏幕的方式来精准控制时间的(虽然这个控制肯定存在或多或少的误差,比如一般的是刷新频率是60帧,但是可能是60.002帧左右或少一点,关系不是太大),然后早期的CRT屏幕使用的是用电子束扫描屏幕的方式

https://img-blog.csdnimg.cn/20190228155105961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podV93ZW5kYW8=,size_16,color_FFFFFF,t_70

(图片来自https://blog.csdn.net/zhu_wendao/article/details/88028923)

而需要刷新到屏幕上的内容存在显存里,这里就有一个一次刷新结束后到光束回到最上层,在这个时候Psychtoolbox会将需要呈现的下一张画面放进指定的显存地址中。为了达到画面不会等待写入过程中出现闪烁,所以使用双缓冲的方式,通过一前一后两个缓冲区的方式,需要的时候交换两者指针就可以实现“瞬间填充”避免了传输过程的延迟,所以匹配这个刷新率是很重要的,在正常工作的系统上,这种双缓冲交换在不到一微秒的时间内发生,与VBL开始同步,精度优于一微秒。新的显示屏虽然使用的不是这原理了,但是这一机制还是保留的。如果不同步就可能在刷新过程中出现内存内容被替换,导致画面撕裂(上面是上一帧的画面下面一半是下一帧的画面)。我们的垂直同步就是指,画面每一次刷新都会发送一次垂直同步信号(命名是因为老式屏幕的刷新方式),相当于红绿灯说可以交换内存了。

 

一般报这个错的原因都是,系统会提供一个刷新率和刷新间隔的数据,但是PTB也会区验证真实的刷新频率和刷新时间,如果验证超过三次(记得是三次)不能得到和系统提供的差不多的数据,就会报这个错。

 

根据官方的文档:(大部分是机翻,轻喷)

  1. 首先需要检查显卡的设置:
  1. “将内存交换同步到垂直回扫”选项设置为“应用程序控制”或“应用程序控制,默认为打开”。大概的类似的设置,原因应该也很明白,根据上面的原理部分;
  2. 确保“三重缓冲”设置已关闭,或者如果您可以选择某些“多重缓冲”设置,则将其设置为“双缓冲”或“等待1个视频刷新”或“交换每次刷新”。现在为了追求速度,大部分显卡有多个后缓冲区,这样会影响我们的精度,所以这里的设置使得保证我们的精度;
  3. 如果有“缓冲区交换模式”或“Bufferswap策略”选项,则应将其设置为“自动选择”或“页面翻转”或“交换缓冲区”。所谓的“复制缓冲区”或“Blitting”选项会导致性能降低和时序不准确;
  4. 在双/多显示器设置上,MS-Windows允许您为一个监视器分配“主监视器”或“主显示器”的角色。重要的是,用于刺激呈现的显示设备是“主要显示”,否则可能会出错。当然这一点在Psychtoolbox的代码中一般也会写出来(也就是screenNumber = max(screens););
  5. 多个显示器的话,请选择“扩展“的方式;
  6. 在双显示或多显示模式下的所有操作系统中,如果要在多个显示器上显示刺激,例如,对于双显示器上的双目立体显示,将两个显示器配置为完全相同的颜色深度,分辨率和刷新率是很重要的。
  7. 如果有某些选项,您可以选择“同步锁定模式”或“仅限同步锁定模式”,请选择或启用该选项。如果您进行双显示器刺激,未能配置此类双显示设置将导致大量计时问题或在其中一个显示器上撕裂伪影。它也可能导致时间安排失败。
  1. 驱动/硬件的问题

这个问题最简单的办法就是下最新的驱动试一试,可能是驱动版本过老导致的问题。

通常的嫌疑人是:病毒扫描程序,访问网络或硬盘的应用程序,iTunes等应用程序,系统软件更新......系统中的坏驱动程序或硬件干扰一般系统时序:这很难诊断。

至少在MS-Windows上,您可以从互联网上下载免费工具“dpclat.exe”(使用Google查找)。如果您运行它,它将告诉您系统时间是否存在潜在问题,并提供有关如何解决它们的提示。

当然也可以直接使用如下命令区跳过这个检测,

Screen(‘Preference’,’SkipSyncTests’, 1);这个命令会使得最后一次测得的间隔时间作为这个间隔时间(所以最大可能会有3s

 

 

最后就是软件干扰的问题了。卸载电脑上的杀毒之类的软件。

 

如果这些都不行,大概率你的是windows系统,我就是不折腾了直接换Linux系统上

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Psychtoolbox SYNCHRONIZATION FAILURE问题 的相关文章

  • 命令不同步,您现在无法运行此命令

    我正在尝试使用 mysqldb 创建一些表 问题是当执行python脚本时db pymysql 抛出错误 mysql exceptions ProgrammingError 2014 命令不同步 您现在无法运行此命令 db py impor
  • 具有空键功能的线程安全映射

    我需要一个多线程 Map 对象在我的 Web 服务器的缓存中使用 并且我需要null keys HashMap允许我有空键 但是ConcurrentHashMap没有 我尝试创建一个同步版本HashMap using Collections
  • 多人游戏同步

    我实现了服务器 客户端架构 其中所有状态更改都发送到函数 经过验证并广播到所有连接的客户端 这工作得相当好 但系统目前无法维持游戏客户端实例之间的同步 如果服务器和特定客户端之间恰好有 5 秒的延迟 那么他将在其他客户端之后 5 秒收到状态
  • 为什么我的程序打印垃圾?

    My code include
  • 如果没有打印语句,循环看不到其他线程更改的值

    在我的代码中 我有一个循环等待其他线程更改某些状态 另一个线程可以工作 但我的循环从未看到更改后的值 它永远等待 然而 当我放一个System out println在循环中声明 它突然起作用了 为什么 以下是我的代码示例 class My
  • 以阻塞程序语言的方式进行异步?

    Sync way 例如 红宝石 con Mysql new localhost rs1 con query select from test01 A rs2 con query select from test02 B rs getResu
  • 如何同步 Chrome 扩展选项

    我制作了一个带有选项页面的 Chrome 扩展 数据保存在本地存储中并且工作正常 Chrome 不会将本地存储同步到云端 只是将扩展同步 这意味着任何用户数据都不会同步到同一谷歌帐户的其他计算机 我在以下位置找不到 APIhttp deve
  • 如何将扩展 PUB-SUB 模式中的发布者和订阅者与 C++ 中 ZeroMQ 中的中介同步?

    Extended PUB SUB topology https i stack imgur com GEgpx png 我在一个有 1 个中介的用例中有多个发布者和多个订阅者 在 ZeroMQ 指南中 我了解了如何使用额外的方法来同步 1
  • 让AJAX调用等待php中的事件

    我不知道我的瓷砖线是否足够清晰 我的问题是 我有一个 JS 应用程序需要等待服务器上的事件 目前 它每秒通过 XMLHttpRequest 轮询连续的服务器数据 我在想的是 是否可以让调用等待 例如 PHP 中的变量发生变化 我希望我的问题
  • 移动应用程序的后台数据同步

    我们正在数据库之上构建 API 和移动应用程序 该数据库的主表中有数十万条记录 我们的移动开发人员正在努力推动应用程序在本地数据库中预加载完整的表 然后提供一项服务 让手机可以将更改与数据库同步updated at column 虽然这肯定
  • “不一致同步”是什么意思?

    这是我的 Java 1 6 类 public class Foo private ArrayList
  • Windows 服务器上的 PTP 同步(与 Linux 相比) - 可以保证什么精度

    我想知道大家是否知道准确度如何PTP http en wikipedia org wiki Precision Time Protocol在 Windows Server 2008 上可以保证同步 我知道这个线程 Windows 中进程的最
  • store.sync() 回调

    store sync 有回调吗 我正在尝试这样做 store sync function alert 1 但它不起作用 这家店是当地的一家店 sync 没有 回调 为了实现此行为 您需要监听存储的写入事件 查看这个解决方案 https st
  • 同步框架服务器到服务器同步

    I have kind of a such scenario source microsoft com http i msdn microsoft com bb887608 Figure3 en us png Here i need to
  • 同步迭代 javascript 对象

    我有一个像这样的对象 let myObject db1 db1 file1Id db1 file2Id db 1file3Id db2 db2 file1Id db2 file2Id 我遍历这个对象并在每次迭代中 我连接到数据库 检索文件
  • C# 中的监视器与互斥体[重复]

    这个问题在这里已经有答案了 可能的重复 C 中各种线程同步选项之间有什么区别 https stackoverflow com questions 301160 what are the differences between various
  • 在多个不同线程之间共享变量

    我想在多个线程之间共享一个变量 如下所示 boolean flag true T1 main new T1 T2 help new T2 main start help start 我想分享flag在主线程和帮助线程之间 这是我创建的两个不
  • Microsoft 同步框架 - 双向同步如何工作?

    我有两个客户端 A 和 B 两个客户端都有相同的同步本地数据缓存 如果客户端 A 对记录 X 进行离线编辑 然后客户端 B 也离线编辑记录 X 并与服务器同步 则当客户端 A 与服务器同步时 客户端 B 所做的更改不会反映出来 并且无论进行
  • 如何确保超类的子类方法的线程安全?

    我参加了一次面试 并被要求为以下要求设计一个课程 假设我有一个 A 类 它可以有任意数量的子类 即子类 类 A 有一个名为 doSomething 的方法 该方法是同步的 要求是 A 的所有子类都是强制性的重写 doSomething me
  • 在哪里可以找到有关 IOS 日历同步的优秀教程? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发 iPhone 应用程序 如何将新事件与 iOS 日历同步 您可以浏览此 github 代码

随机推荐

  • dubbo服务超时导致的异常org.apache.dubbo.remoting.TimeoutException

    1 dubbo服务超时异常提示信息如下 xff1a cause org apache dubbo remoting TimeoutException Waiting server side response timeout by scan
  • 基于TCP/IP实现串口到网络的通讯转换

    工作模式 通过串口服务器 xff0c 采集到天平的称量值发送到PC端 操作步骤 1 软件测试 测试工具 xff1a USR M0 V2 2 5 8 基础设置 xff1a 模块静态IP 设置成服务器IP xff0c HTTP服务端口 设置成4
  • 结构体的对其规则以及为什么要对其

    结构体的内存对齐规则以及为什么要对齐 内存对齐规则 span class token number 1 span 第一个成员在与结构体变量偏移量为 span class token number 0 span 的地址处 span class
  • 宏定义参数

    宏定义的参数以逗号 xff08 作为分隔符 span class token macro property span class token directive keyword include span span class token s
  • [STM32]关于环形队列的实现

    在程序中使用环形队列判断接收数据格式 xff0c 避免在中断中处理造成程序响应速度慢的问题 直接贴代码 xff1a LoopRxCommu h ifndef LOOPRXCOMMU H define LOOPRXCOMMU H includ
  • C#旅程——串口发送数据

    串口发送数据时可以一个byte一个byte的发送数据 xff0c 也可以一次性丢出 xff0c 分多次丢出的话会导致一段数据被分成多段发出 xff0c 中间的延时可能会超过2ms xff0c 与FW通讯时会出现异常 span class t
  • 【记录】一次51单片机串口乱码问题排查

    记录 一次51单片机串口乱码问题排查 项目场景问题描述原因分析解决方案结语 项目场景 在51串口收发仿真实验中使用两个单片机互相通信 xff0c 程序设定A上电1s后通过串口以16进制给B发送AA 直到B收到AA后回复BB xff0c 当A
  • IO流java基础

    二十四 IO流 24 1 File 1 1 File 类概述和构造方法 File 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言 其封装的并不是一个真正存在的文件 仅仅是一个路径名而已 它可以是存
  • TX2上布置vins_fusion_gpu指南

    1 参考链接 如果初次安装 xff0c 新的TX2环境 xff0c 请参考文档 https github com arjunskumar vins fusion gpu tx2 nano 2 问题记录 1 xff0c 自己的环境情况 我的环
  • Ubuntu下安装cmake

    Ubuntu下安装cmake 今天因为项目的原因需要将cmake升级一下 xff0c 原来我是按照链接没有卸载旧版本 xff0c 直接升级 但是出现一些问题 xff0c 然后我全部卸载后 xff0c 重新安装 以下就是我的安装步骤 第一步
  • AUTH:basic认证和digest认证

    Http authentication BASIC In the context of an HTTP transaction basic access authentication is a method for a web browse
  • Quick Audience组织和工作空间功能解读

    简介 xff1a Quick Audience完成了权限系统全面升级 xff0c 可以解决集团企业不同品牌 不同运营组织 xff0c 不同消费者运营的诉求 xff0c 精细化保障企业数据访问安全 xff0c 提升管控的灵活度 更多关于数智化
  • Socket编程基础总结,全网最全

    IP地址 xff1a 可以在网络环境中 xff0c 唯一标识一台主机 端口号 xff1a 可以定位网络的一台主机上 xff0c 唯一标识一个进程 ip地址 43 端口号 xff1a 可以在网络环境中 xff0c 唯一标识一个进程 在TCP
  • 嵌入式开发--RS-485通讯的问题

    嵌入式开发 RS 485通讯的问题 RS 485说明接口芯片硬件连接CubeMX设置代码编写引脚定义使能串口中断函数发送数据接收数据 有一个问题 xff0c 多收了一个数数据线上的波形问题分析问题解决 RS 485说明 RS 485一般简称
  • UNIX网络编程卷1(第三版)字节排序函数测试

    内存中存储多字节有两种方法 xff0c 即小端字节序和大端字节序 xff0c Ubuntu10 04 是小端字节序 xff0c 网际协议所用的字节序为大端字节序 内存地址增长方向 低序字节 gt 高序字节 小端字节序 高序字节 gt 低序字
  • android非常好的在线视频播放器源码(包含在线音频播放源码)

    一 在线音频播放器 lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34 gt lt LinearLayout xmlns android 61 34 http schemas androi
  • 深入理解任务堆栈

    先来看这一个小函数 xff0c 猜猜他的运行结果 VC6环境 xff1f include lt stdio h gt void b int data 10 printf 34 helloworld r n 34 data 11 61 5 i
  • Protel99seMEX3

    Protel99se的鼠标增强软件 xff0c 可以实现用鼠标放大与缩小电路图 xff0c 十分方便 xff01 文件 xff1a n459 com file 25127180 478161061 以下内容无关 xff1a 分割线 说起Al
  • 基于C++的http服务端开发

    1 同时支持get post接口请求 2 支持文件流下载接口 完整源代码下载地址 xff1a https download csdn net download GUMU12345 81103130 sample cc Copyright c
  • Psychtoolbox SYNCHRONIZATION FAILURE问题

    参考 xff1a http psychtoolbox org docs SyncTrouble 写这篇文章的原因是自己遇见了这个问题 xff0c 并且换了两台电脑都不行 xff0c 有点烦了 xff0c 决心把它弄清楚是怎么回事 因为我的主