问题标签 [sgi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10581 浏览

python - 使用 imagemagick 保存 matplotlib 动画,无需 ffmpeg 或 mencoder

我想创建一个计算函数的动画。我无法在用于运行动画的集群上安装 ffmpeg 或 mencoder,但已安装 imagemagick。matplotlib.animation显然支持 imagemagick 作为动画编写器(例如,请参见此处)。文档说支持的格式是:

我将其中几个识别为非动画文件类型,但显然 ffmpeg.sgi以某种方式支持文件。如果我可以在我的家用计算机上使用 ffmpeg 或 mencoder 转换它,我必须在集群器上使用的编解码器是模糊的,这很好。

如何使用 imagemagick 保存带有 matplotlib 的动画?

0 投票
1 回答
51 浏览

c++ - 在 SGI 上运行的 ActiveMQ 的任何已知问题

我在尝试使用 ActiveMQ 时遇到了很多问题,并且想知道在 SGI 硬件上运行是否存在任何已知问题 - 特别是 UV2k?在 Suse linux 上运行是否存在任何已知问题?启动 ActiveMQ 服务时启动了很多线程,并收到一条错误消息,指出“为 selectChannelConnector 配置的线程不足”。尝试限制 JVM 线程堆栈大小,但没有任何乐趣。

ActiveMQ 5.10 快照

0 投票
2 回答
893 浏览

linux-kernel - 在 Linux/MIPS 平台上正确实施 SMP

在过去的几周里,我一直试图让 SMP 支持在 Linux/MIPS 内核的端口上再次运行到 SGI Octane (IP30)。单处理器支持工作正常,但我在使用第二个 CPU 时遇到了很多问题。我可以将机器引导到该init进程,但大多数情况下都会因 SIGSEGV 或 SIGBUS 而死。我从 5 年前编写的补丁中获得了大部分支持代码,但我怀疑我要么没有正确锁定事物,要么意外地重新启用了 IRQ。


一些硬件背景:

MIPS R10000 系列 CPU 实现了 8 个中断,IP0IP7

  • IP0IP1:仅软件中断,目前使用不多。
  • IP2to IP6:一般路由到其他一些硬件函数进行处理
  • IP7:R10K 定时器/计数器/比较中断。

  • R10K 支持 MIPS-IV ISA,并具有 I-cache 和 D-cache。

    • I-cache 为 32kB、VIPT、2-way 和 64 字节行大小。
    • D-cache 为 32kB、VIPT、2-way、无别名和 32 字节行大小。
  • R10K L2 高速缓存为 2MB、2 路和 128 字节行大小。
  • R10K 是超标量,采用推测执行,并且可以乱序执行。
  • Octane 是缓存一致的,因此不会受到推测执行的影响。
  • 具体来说,我在这个系统中有一个 R14000 双模块。除了它主要是具有芯片缩小和更快时钟速度的 R10K 之外,对此知之甚少。SGI 从未发布此处理器的硬件数据表,也没有任何勘误信息。


Octane 有一个称为HEART其内存控制器和中断控制器的 ASIC。 HEART旨在支持多达 4 个处理器,并提供 64 个中断 (IRQ)。这 64 个 IRQ 分为几个优先级,并映射到上面的 R10K CPU IPx IRQ:

  • 级别 0,IRQ015-> CPUIP2
  • 级别 1,1631-> CPU的 IRQIP3
  • 级别 2,3149-> CPU的 IRQIP4
  • 级别 3,IRQ 50-> CPUIP5
  • 51第 4 级,到63-> CPU的 IRQIP6


关于这些优先级有一些说明:

  • 0 级和 1 级 IRQ 主要分配给系统中的设备(SCSI、以太网等)。

  • 2 级有多种用途:

    • IRQ也32可供40系统中的设备使用(尤其是那些需要更高优先级的设备)。
    • IRQ41是硬连线的,用于按下电源按钮。
    • IRQ42用于45向 4 个可能的 CPU 发送调试器信号。
    • IRQ46494 个可能的 CPU 的 SMP 处理器间中断 (IPI)。

  • 第 3 级 IRQ50专门用于HEART自身的计数器/比较计时器。它以 12.5MHz(我认为是 80ns)运行。它有一个计数寄存器和比较寄存器。从 Linux 的clockevent角度来看,我认为这是一个更好的分辨率定时器,可用作系统定时器(52 位计数器,24 位比较)。

  • 级别 4 用于错误 IRQ:

    • IRQ是 XIO 总线(51以星形拓扑排列的高速总线,由ASIC 提供服务)上588 个可用小部件中的每一个的错误 IRQ 。XtalkXBOW
    • IRQ59624 个可能的 CPU 的总线错误 IRQ。
    • IRQ63HEART自身的异常错误 IRQ。

HEART提供了几个用于处理中断的寄存器。每个寄存器为 64 位宽,每个中断一位:

  • HEART_ISR- 只读寄存器,用于获取挂起的中断列表。
  • HEART_SET_ISR- 只写寄存器设置一个特定的中断位。
  • HEART_CLR_ISR- 只写寄存器清除特定中断位
  • HEAR_IMR(x)- 读/写寄存器,用于设置或清除特定 CPU 上特定中断的中断掩码,由 . 表示x


我将以下代码用于基本的 IRQ ack/mask/unmasking 操作


这些基本操作是使用struct irq_chip3.1x 系列 Linux 内核中的访问器实现的,我使用和保护对HEART寄存器的访问。我不能 100% 确定我是否应该在这些访问器中使用这些锁定功能。spin_lock_irqsavespin_unlock_irqrestore



为了处理所有中断,标准的 Linux/MIPS 平台调度函数采取以下动作:

  • IP7-> 调用do_IRQ()处理 CPU 定时器 IRQ。
  • IP6-> 调用以向系统日志ip30_do_error_irq()报告任何错误。HEART
  • IP5-> 调用do_IRQ()处理分配给HEART定时器的clockevent IRQ。
  • IP4, IP3, 和IP2-> 调用ip30_do_heart_irq()处理HEART从 0 到 49 的所有 IRQ。


这是当前用于的代码ip30_do_heart_irq()



在 SMP 支持方面,与其他 Linux/MIPS 平台不同,我没有类似于硬件中的邮箱寄存器的东西来存储应该采取什么样的 IPI 操作。原始代码使用ip30_ipi_mailbox由 CPUID 索引的全局 int 数组 ( ) 来指定要传递给其他处理器的 IPI 操作。

此外,即使HEART设计为最多支持 4 个处理器,SGI 也只生产过双 CPU 模块。因此,IRQ 44- 4548-4961-62从未实际用于任何事情。

给定这些全局变量:


这是当前用于向其他 CPU 发送 IPI 的代码:


为了响应 IPI,每个 CPU 调用request_irq其初始化代码并注册一个中断处理程序。这是处理程序中当前用于服务 IPI 中断的代码:




这就是背景信息。

我当前的内核配置除了帧缓冲区和“Impact”视频驱动程序之外的所有内容都被剥离了。没有 PCI,没有块层,没有网络,没有串行,没有键盘/鼠标。我有一个大约 7 年历史的 initramfs,我正在加载它,如果一切正常,应该放到 bash 提示符下。然而,因为它加载到 RAM 中,它能够相当快地暴露内存损坏,结果我要么得到上述 SIGSEGV 或 SIGBUS 错误。

由于 IOC3 PCI 设备,目前无法选择使用远程 GDB 或内置 KGDB。IOC3 是一个多功能 PCI 设备,它声称是一个单功能设备,其背后是键盘/鼠标、串行端口、实时时钟和以太网的硬件位。目前还不存在绕过 IOC3 并直接访问远程 GDB 的串行端口的代码,而且 KGDB 也不知道如何与 IOC3 上的标准 i8042 键盘控制器通信。

我添加了一个标准 PCI 串行卡(基于 Moschip),但该驱动程序显然不是字节序安全的,因此探测串行端口会使内核恐慌。


我希望,回答以下问题将使我能够更好地识别错误代码并专注于使其正常工作,从而使我走上让 SMP 正常工作的正确道路:

  • 我是否正确使用自旋锁?
  • 我是否使用了正确的自旋锁变体?
  • 我是否需要在任何地方添加同步调用(即smp_rmb(),smp_wmb()等)?
  • 我的问题可能出在这个核心平台支持代码之外(例如在视频驱动程序中)吗?
  • 我可以查看随机破坏内存的未知硬件错误吗?
  • 上述任何代码都可以更好地实现吗?(其中大部分是从 Linux 2.6.17 的原始端口到 Octane 的代码,刚刚更新以更符合内核中其他事物的工作方式)

任何可以让我走上正确道路的信息都将不胜感激。我的希望是让 SMP 进入可用状态(效率无关紧要,我只需要它工作),因此我可以开始着手将其分解为补丁,并在某个时候将其包含在主线内核中。如果我不能让 SMP 工作,我将放弃它的支持并专注于让单处理器代码向上游发送。

0 投票
2 回答
124 浏览

winapi - 我应该使用 OpenGL 版本和风格

我有一些 OpenGL 问题。

我知道 OGL 是 90 年代早期的 SGI API。早在 90 年代,我就使用 OGL 为 DEC Alpha 平台开发了几个应用程序,但从那以后就没有使用过 API。

随着 SGI 早已不复存在,它似乎有点不同。我的问题:

  1. OpenGL现在开源了吗?
  2. 我注意到许多不同的版本以及来自不同开发人员的不同 API。这是真的?
  3. CAD 和图形的首选版本/风格是什么?我应该下载什么?我将使用 WINAPI 和 VS6 VS2003 和 VS 2010 等...
0 投票
1 回答
1897 浏览

postgresql - 未定义的偏移量:C:\wamp\www\index.php 中的 1

我编辑了文件“www / index.php”Wamp并复制了每行MySql适应PostgreSQL版本

我有错误通知:未定义的偏移量:第 64 行 C:\wamp\www\index.php 中的 1

我的代码是(第 63 64 65 行)

0 投票
1 回答
61 浏览

c++ - 在 SGI STL 的实现中,vector 的 push_back 函数不使用默认参数

最近看了SGI STL源码,遇到一个小问题。为什么sgi stl在vector的push_back上使用重载函数而不是默认参数。这是关于push_back的SGI STL源码。

但我不知道为什么不使用默认参数作为休闲。

例外的是,_M_insert_aux 函数也有重载函数作为休耕。*__position = _Tp()使用默认构造函数。我不知道为什么不使用默认参数

0 投票
0 回答
49 浏览

sgi - 如何通过网络安装 Irix 操作系统

我刚从 eBay 上买了一台 Irix 机器。它有2个硬盘。它有一些来自最后一个用户的奇怪变量。我可以使用哪些程序将 irix 操作系统安装到我的计算机上?

0 投票
1 回答
188 浏览

c++ - 如何理解向量 pop_back 的实现?

我目前在想为什么STL以这种方式实现vector pop_back。为什么我们先移动结束指针前言,然后使用结束指针释放最后一个元素的空间?

0 投票
0 回答
43 浏览

c++ - 呼叫操作员 STL 在这里使用是什么意思?

我最近在查看 SGI STL 的源代码,发现它在许多地方使用了我无法理解的调用运算符,例如:

最后有一个调用操作(is_POD())。

我知道is_POD是一种类型,它的定义如下:

如我所见,is_POD是一个类型但它没有重载()操作,那它怎么调用()呢?</p>

这个地方的调用功能是什么意思?

非常感谢!

0 投票
1 回答
54 浏览

c++ - 如何理解这个模板在 STL 源代码中的用法?

我目前正在查看SGI STL的源代码,特别是距离算法。

正如我所看到的,为了最大限度地提高效率,SGI 使用了很多内联模板来最大限度地减少运行时间。但我真的不明白一件事。

对于算法距离,SGI定义了一个模板:

然后,它定义了算法距离的公共接口,如

在你对我的知识做出所有判断之前,我想说我认为理解 STL 的设计模式并且我理解每一行的含义,我的意思是语法。

但据我所知,我只是不知道为什么 SGI 没有像这样实现算法距离

据我所知,函数调用会消耗一定的时间,但这里的 iterator_category 是内联函数,与大多数主流编译器中的宏具有相同的效果。

使用 iterator_category() 的唯一不足可能是编译器由于 pass-by-const-reference 而生成的临时对象。

我对吗?或者有什么我还不认识的天才设计模式,有空告诉我!