首页 文章
  • 5 votes
     answers
     views

    找到循环排序数组中的最小元素[重复]

    这个问题在这里已有答案: Need an algorithm for a special array (linear field) 3个答案 我已经尝试了以下代码来找出循环排序数组中的最小元素 . 但是当low = 1和high = 2时它会失败,因为mid总是1而且[mid] = a [1]总是大于a [high] . 我想在这里使用二进制搜索来找到解决方案 . //finding the ...
  • 5 votes
     answers
     views

    C:两个不同的二进制搜索实现,一个陷入无限循环

    这里有两个“健忘”二分搜索的实现,因为它们在完成之前不会检查完全匹配 . 1) int bsearch1(int A[], int n, int target) { int low = 0, high = n - 1, mid = 0; while (low < high) { mid = (low + high) >> 1; ...
  • 17 votes
     answers
     views

    将最大堆转换为二叉搜索树

    我们给出了一个2m-1个不同的,可比较的元素的数组,从1开始索引 . 我们可以将数组视为完整的二叉树: Node is placed at index i. Left child is placed at 2i. Right child is placed at 2i+1. 例如,数组 [7 6 4 5 2 3 1] 是树 7 / \ 6 4 / \ ...
  • -1 votes
     answers
     views

    二进制搜索中的结束索引

    我在二进制搜索中有几个问题 . 在我的下面的代码中,我'm passing fun(array, 0, len-1) from main. Is it also okay to pass ' len ' as the end index? I think it'没关系,也验证了答案 . 我觉得唯一的区别是,在mid元素后面的数组部分会有一个较少的计算,而在mid元素之前的数组部分会有一个额外的...
  • 7 votes
     answers
     views

    优化的2x2矩阵乘法:慢速装配与快速SIMD

    Problem 我正在研究高性能矩阵乘法算法,如OpenBLAS或GotoBLAS,我正在尝试重现一些结果 . 这个问题涉及矩阵乘法算法的内核 . 具体来说,我正在研究计算 C += AB ,其中 A 和 B 是我CPU的峰值速度 double 类型的2x2矩阵 . 有两种方法可以做到这一点 . 一种方法是使用SIMD指令 . 第二种方法是使用SIMD寄存器直接在汇编代码中编码 . What I ...
  • 20 votes
     answers
     views

    复制BLAS矩阵乘法性能:我能匹配吗?

    Background 如果你一直关注我的帖子,我试图复制Kazushige Goto关于方阵乘法 C = AB 的开创性论文中的结果 . 我关于这个主题的最后一篇文章可以在here找到 . 在我的代码版本中,我遵循Goto的内存分层和打包策略,使用内核计算 2x8 块使用128位SSE3内在函数 . 我的CPU是i5-540M,超线程关闭 . 有关我的硬件的其他信息可以在另一个post中找到,并在...
  • 25 votes
     answers
     views

    为什么mulss在Haswell上只用了3个周期,与Agner的指令表不同?

    我是指令优化的新手 . 我对一个简单的函数dotp进行了简单的分析,该函数用于获取两个浮点数组的点积 . C代码如下: float dotp( const float x[], const float y[], const short n ) { short i; float suma; ...
  • 3 votes
     answers
     views

    C矩阵,分配不是所有元素都是零?

    我正在尝试编写一个小矩阵程序 . 使用双重指针不起作用所以我认为最简单的方法是使用#rows和#columns以及1d数组作为矩阵的结构 . 但是在我得到的矩阵启动中存在一些错误:索引(0,0)和(0.1)而不是0的奇怪值 . 这可能是:矩阵* mtrx = malloc(sizeof(矩阵)); mtrx-> m = malloc(r * c * sizeof(int)); matrix....
  • 12 votes
     answers
     views

    是否有任何可用的python路径查找库? [关闭]

    我正在使用python中的实时等距RPG,并希望将移动设备作为平台 . 我遇到困难的主要领域是我的寻路 . 我尝试了一些算法,包括A *和一些调整,以更好地适应我正在使用的 Map . 我对我的算法结果很满意 - 它们在确定性的同时给出了一些智能的错觉,并且在任一方向上都是一致的,这样两个以两个角色为目标的角色就会在中间碰撞 . 我的问题是虽然结果在PC上看起来很好,我可以要求所有的处理能力,在...
  • 0 votes
     answers
     views

    如何在连接的Wi-Fi用户的C程序中获取IP和MAC地址?

    我尝试创建可以安装到Wi-Fi路由器的客户端应用程序(OpenWRT态度调整12.09)应用程序必须用C编写并实现OpenWRT守护进程方法 . 当任何访客转向Wi-Fi并连接到我的SSID时,我需要在我的C程序中使用他的IP和MAC地址 . 如何为我的C程序中的任何新连接用户(设计)获取IP和MAC地址?我开始尝试对已经连接到路由器的任何IP使用arp命令: #include <stdio...
  • 9 votes
     answers
     views

    串行编程RS485

    我的任务是通过RS485 2线系统实现ModBus协议 . (实际上它是三根线,A / B和GND) . 虽然ModBus不是重点,但是之前的步骤......界面上的简单I / O. 我正在使用FTDI USB-RS485转换器将Linux主机(不可互换)连接到Windows主机(可与其他Linux主机互换,但我想避免这种情况) 编码应该是19200,8,n,1 . 但它似乎不起作用 . 我没有...
  • 2 votes
     answers
     views

    具有多个pics而不是rs485的RPI - CCS编译器

    我试图将rpi3视为主设备,pic为奴隶,rs485为网络媒体 . rpi在slave的id上循环,它逐个发送它们,并等待来自指定slave(pic)的回复 . 每个pic读取接收到的数据(地址)并将其与其地址进行比较,如果是一个,则pic必须回复rpi . 在rpi我使用pi4j java库,而在图片上我用CCS编译器编码 . 第一个问题是,当我从rpi发送图片中不存在的地址时,没有人回复rp...
  • 3 votes
     answers
     views

    与子进程stdout / stdin通信

    我正在尝试与进程通信(它本身写入stdin和stdout以在终端中与用户进行交互)并读取它的stdin并在C中写入它的stdout . 因此,我尝试以编程方式替换shell用户 . 一个美国式的例子:想象一下,我想出于某种原因在C中使用VIM . 然后我还需要编写命令(stdout)并从编辑器中读取东西(stdin) . 最初我认为这可能是一项微不足道的任务,但似乎没有标准方法 . int s...
  • 3 votes
     answers
     views

    C头文件和ABI

    我想知道C头文件和ABI如何相关 . 各种类型的大小是体系结构,甚至依赖于编译器 . 那么如何可靠地链接到C库? 对于更具体的问题:当使用Haskell的FFI时,甚至只使用像 CDouble 这样的Haskell类型来定义(复制C库接口的定义) . 我不知道二进制类型大小信息来自何处 . 使链接起作用的诀窍是什么?
  • 9 votes
     answers
     views

    每个cpu arch的真正ELF TLS ABI要求是什么?

    线程本地存储上的Ulrich Drepper's paper概述了几种不同cpu架构的TLS ABI,但我发现它不足以作为实现TLS的基础,原因有两个: 它省略了许多重要的拱门,如ARM,MIPS等(虽然包括一堆与Itanium完全无关的) 更重要的是,它将大量实现细节与ABI混合在一起,因此很难说出互操作性需要哪些属性,哪些只是其实现的一部分 . 例如,i386唯一的实际ABI要求是...
  • 18 votes
     answers
     views

    什么ABI,如果有的话,限制[u] intmax_t的大小?

    从1999版开始,ISO C标准定义了一个标准头 <stdint.h> ,其中定义了typedef intmax_t 和 uintmax_t 等 . 这些分别指定"a (signed|unsigned) integer type capable of representing any value of any (signed|unsigned) integer type&q...
  • 405 votes
     answers
     views

    什么是Linux的原生GUI API?

    我希望这不是一个愚蠢的问题,但它总是我想知道的 . Windows(Win32 API)和OS X(Cocoa)都有自己的API来处理窗口,事件和其他操作系统的东西 . 我从来没有真正得到关于Linux等价物的明确答案 . 我听说有人说GTK,但GTK是跨平台的,它怎么可能是原生的呢?
  • 7 votes
     answers
     views

    是否有原始的linux系统调用API / ABI文档

    系统调用有man(2)页面,但这些页面描述了位于系统调用之上的C库(glibc)的行为 . 原始系统调用API / ABI是否记录在某处(UseTheSourceLuke除外)?我在手册页中看到了一些内核/ libc之间的差异,但我并没有感觉到记录这些差异是最重要的 . 我真正要说的是:通过POLICY将C库视为稳定/记录的Linux API,并且内核的系统调用API / ABI被认为是不稳定的(...
  • 0 votes
     answers
     views

    使用SD_RECEIVE关闭套接字时会发生什么,但对等体发送数据包? (Winsock的)

    让's say I use winsock' s shutdown(s, SD_RECEIVE) 用于TCP .关机后,对端发送数据包会发生什么 . 根据MSDN,https://msdn.microsoft.com/en-us/library/windows/desktop/ms740481.aspx 对于TCP套接字,如果仍有等待接收的套接字上排队的数据,或者数据随后到达,则重置连接,因为...
  • -1 votes
     answers
     views

    c中使用TCP的服务器客户端

    客户端 - 服务器连接使用使用TCP(传输控制协议)的流套接字 我首先在服务器之前运行两个程序,然后使用这些命令运行客户端 cyse510@cyse510-VirtualBox:~/Desktop$ ./server 51717 cyse510@cyse510-VirtualBox:~/Desktop$ ./client 172.0.0.1 51717 我在客户端遇到此错误 ERROR连接:连...
  • 7 votes
     answers
     views

    连接到redis时,Unix套接字比tcp慢

    我正在开发高性能的Web服务器,它应该能够处理大约2k的同时连接和40k QPS,从而实现<7ms的resp时间 . 它的作用是查询Redis服务器(在同一主机上运行)并将响应返回给客户端 . 在测试期间,我观察到使用TCP STREAM_SOCKETs的实现比连接unix套接字更好 . 有大约1500个连接,TCP保持大约8ms,而unix套接字大约为50 . 服务器是用C语言编写的,它基...
  • 0 votes
     answers
     views

    通过引用传递时确保长期有效数据?如何使用指针加载我的结构而不知道它的内存是如何分配的?

    我很惊讶我没有找到已发布的问题 . Here是一个类似的但不是我得到的,因为它只讨论字符串文字 . 无论如何,来自Java和学习C更好一点 . 我喜欢C带来的选择,但我知道我必须小心内存管理 . 我已经创建了自己的计时器实用程序,以熟悉如何在C中执行操作并遇到了这个问题...这是一个代码示例(Windows控制台应用程序): HANDLE createHPTimer(char *timerNam...
  • 1 votes
     answers
     views

    将Rust指针传递给C时,我应该得到0x1吗?

    我看起来像是在堆上 - 当我打印它时我得到了 0x1 : use std::fmt; pub struct SndbDB {} impl SndbDB { fn new() -> SndbDB { SndbDB {} } } impl fmt::Display for SndbDB { fn fmt(&self, f: &mut ...
  • 229 votes
     answers
     views

    bool是原生C型吗?

    我注意到Linux内核代码使用bool,但我认为bool是C类型 . bool是标准C扩展(例如,ISO C90)还是GCC扩展?
  • 2 votes
     answers
     views

    c-fortran互操作性 - 带指针的派生类型

    我有很长的fortran代码,必须从python中使用 . 我决定做Fortran-> C-> Python接口 . 我遇到了一个问题:我在包含的Fortran模块中派生了类型 double precision, allocatable 输入成员 . 当我尝试用ifort编译时,我得到了(与gfortran类似): Each component of a derived type w...
  • 18 votes
     answers
     views

    在Xeon-Phi上运行Haskell

    有没有办法编译Haskell在Xeon Phi协处理器上运行? 英特尔的一些研究人员最近报道了Haskell Research Compiler(这是不公开的,这使得他们的结果基本上不可复制)并测量了Haskell Gap(显示在某些情况下Haskell性能超过C) . 它们通过名为Pillar的中间语言(类似于C--)描述编译路径并将其编译为C,以便他们可以使用icc创建可在Phi上执行的目标代...
  • 2 votes
     answers
     views

    将功能卸载到Intel Xeon Phi所需的时间

    卸载调用是否需要预定义的时间将函数的数据(参数)从主机传输到Intel MIC(Xeon Phi协处理器3120系列)? 具体来说,我为我想要在MIC上执行的功能卸载调用(“#pragma offload target(mic)”) . 该函数有15个参数(指针和变量),我已经确认了MIC上参数的正确传递 . 但是我已经简化了代码,目的是检查传递参数的时间,因此它只包含一个简单的“printf()...
  • 356 votes
     answers
     views

    静态链接与动态链接

    在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或读过以下内容,但我对这个问题的了解还不足以保证它的真实性 . 1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计 . 2)(1)如果使用使用配置文件数据优化程序热路径的配置文件编译器,则不成立,因为通过静态链接,编译器可以优化代码和库代码 . 通过动态链接,只需优化您的代码 . 如果大部分时间都花在运行库代码...
  • 9 votes
     answers
     views

    Intel Xeon Phi上的快速弹出窗口

    我正在使用英特尔至强®Pi®实现超快速弹出,因为它是各种生物信息学软件的性能热点 . 我已经实现了五段代码, #if defined(__MIC__) #include <zmmintrin.h> __attribute__((align(64))) static const uint32_t POPCOUNT_4bit[16] = {0, 1, 1, 2, 1, 2, 2, 3, 1...
  • 0 votes
     answers
     views

    OpenMP 4.0的卸载指令

    我正在测试一个带有三个Intel Xeon Phi卡的节点 . 我的想法是使用OpenMP 4.0指令卸载协处理器上的任务 . 代码如下(取自http://goo.gl/9Ztq0e): /*************************************************************************************************** * FIL...

热门问题