标签: intel

有英特尔线程构建模块的经验吗?

英特尔的线程构建模块(TBB)开源库看起来非常有趣.即使有一篇关于这个主题的O'Reilly书,我也听不到有很多人在使用它.我有兴趣将它用于Unix(Mac,Linux等)环境中的一些多级并行应用程序(MPI +线程).对于它的价值,我对高性能计算/数值方法的各种应用感兴趣.

有没有人有TBB的经验?它运作良好吗?它是否相当便携(包括GCC和其他编译器)?这个范例是否适用于您编写的程序?我应该研究其他图书馆吗?

c++ multithreading intel tbb

25
推荐指数
3
解决办法
6095
查看次数

如何在intel图形上为"monitor plugged"创建回调?

我有一个带有intel图形的eeepc.我想将一个脚本挂钩到通过VGA插入监视器的事件.怎么做?

linux intel udev xorg

25
推荐指数
2
解决办法
2万
查看次数

ASM:MASM,NASM,FASM?

我已经完成了ARM汇编编程,我想学习英特尔汇编程序.我一直听到所提到的所有这些不同的F/M/N/ASM-但我不确定它们与我希望实现的目标有什么关系?

有人可以帮我确定一下我需要学习如何在英特尔架构上编程低级别吗?我不太明白"不同的汇编程序"如何关联,x86,IA64,AMD64/x86-64等更是如此?

如果它有任何帮助,我最熟悉Eclipse和Visual Studio 08/10 IDE.

assembly intel masm nasm fasm

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

今天x86上有多少指令?

我试图通过迄今为止所有的sse补充,从旧的386基本指令学习最新的x86汇编.

我读了一些像SSE5这样的东西有170个新指令 - 我被催促知道它们目前有多少.

有些人可能会说它很难计算(因为它们中的一些很接近,但是在不同的类型参数上工作),但我认为它们可以通过一些合理的假设来计算如何将倍数计算为1.那么有人可以提供答案吗?

最好的答案是每个处理器扩展中有多少指令的表.

64-bit x86 assembly intel amd-processor

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

英特尔MKL与AMD数学核心库

有没有人有为英特尔数学核心库AMD数学核心库编程的经验?我正在构建一台用于高性能统计计算的个人计算机,并且正在讨论要购买的组件.AMD数学核心库的吸引力在于它是免费的,但我在学术界,所以MKL并不昂贵.但我有兴趣听到以下的想法:

  1. 哪个提供更好的API?
  2. 这平均每美元提供更好的性能,包括许可和硬件成本.
  3. AMCL-GPU,我应该考虑的一个因素?

math optimization hpc intel amd-processor

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

为什么50个线程比4个快?

DWORD WINAPI MyThreadFunction(LPVOID lpParam) {
    volatile auto x = 1;
    for (auto i = 0; i < 800000000 / MAX_THREADS; ++i) {
        x += i / 3;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此函数在MAX_THREADS线程中运行.
我已经使用Concand Visualizer 和Intel运行了Intel Core 2 Duo,Windows 7,MS Visual Studio 2012上的测试.(4个线程)在7.1秒内完成,但是(50个线程)在5.8秒内完成,同时有更多的上下文切换. 我在英特尔酷睿i5,Mac OS 10.7.5上运行了相同的测试,并得到了相同的结果.MAX_THREADS=4MAX_THREADS=50
test1test2test1test2

c++ cpu multithreading intel

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

如何实现AVX2中的收集指令?

假设我正在使用AVX2的VGATHERDPS - 这应该使用8个DWORD索引加载8个单精度浮点数.

当要加载的数据存在于不同的缓存行中时会发生什么?指令是作为硬件循环实现的,它逐个获取缓存行吗?或者,它是否可以立即向多个缓存行发出负载?

我读了几篇论述前者的文章(这是对我更有意义的文章),但我想更多地了解这一点.

链接到一篇论文:http://arxiv.org/pdf/1401.7494.pdf

ram intel simd avx avx2

23
推荐指数
2
解决办法
5205
查看次数

VAO和元素数组缓冲区状态

我最近写一些的OpenGL 3.3代码与顶点数组对象(VAO)并测试它以后英特尔图形适配器,我发现,我感到失望,该元件阵列缓冲器结合显然不是VAO状态的一部分,作为呼叫:

glBindVertexArray(my_vao);
glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_INTEGER, 0);
Run Code Online (Sandbox Code Playgroud)

没有效果,而:

glBindVertexArray(my_vao);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, my_index_buffer); // ?
glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_INTEGER, 0);
Run Code Online (Sandbox Code Playgroud)

渲染几何体.我认为这是在英特尔执行的OpenGL(因为它是在GL_ARB_vertex_array_object即使在GL_OES_vertex_array_object明确提出(和)该元素阵列的一个单纯的错误保存状态的一部分),但随后在移动的NVIDIA Quadro 4200发生这不好玩.

它是我的代码中的驱动程序错误,规格错误或错误吗?代码在GeForce 260和480上完美运行.

有没有类似的经历?

什么也奇怪的是,GL_EXT_direct_state_access不具有结合元件阵列缓冲器到VAO的函数(但是它确实有功能来指定顶点ATTRIB阵列,因此阵列缓冲器).GPU制造商是否违反规范并欺骗我们,或者是什么?

编辑:

我原本不打算显示任何源代码,因为我认为这里没有必要.但是根据要求,这是重现问题的最小测试用例:

static GLuint n_vertex_buffer_object, p_index_buffer_object_list[3];
static GLuint p_vao[2];

bool InitGLObjects()
{
    const float p_quad_verts_colors[] = {
        1, 0, 0, -1, 1, 0,
        1, 0, 0, 1, 1, 0,
        1, 0, 0, 1, -1, 0,
        1, 0, 0, -1, -1, 0, // red quad
        0, 0, 1, -1, 1, 0,
        0, 0, 1, …
Run Code Online (Sandbox Code Playgroud)

opengl nvidia intel vertex-array opengl-3

22
推荐指数
2
解决办法
2万
查看次数

英特尔8086汇编中CS和IP寄存器的用途是什么?

因此,正如问题所述,在英特尔8086中CS和IP寄存器的目的是什么

我找到了这个解释:

代码段(CS)是一个16位寄存器,包含带有处理器指令的64 KB段的地址.处理器使用CS段来访问指令指针(IP)寄存器引用的指令.CS寄存器不能直接更改.CS寄存器在远跳,远程调用和远程返回指令期间自动更新.

这对于IP:

指令指针(IP)是一个16位寄存器.

我真的不明白这基本上意味着什么,所以如果有人能提供更"生动"的解释,那就太棒了:)

x86 intel x86-16

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

为什么同一个程序中同一个C循环的相同副本需要大量但始终不同的执行时间?

我希望我将问题简化为一个简单且可重复的测试用例.源(在此处)包含10个相同的简单循环副本.每个循环的形式如下:

#define COUNT (1000 * 1000 * 1000)
volatile uint64_t counter = 0;

void loopN(void) {
  for (int j = COUNT; j != 0; j--) {
    uint64_t val = counter;
    val = val + 1;
    counter = val;
  }
  return;
}
Run Code Online (Sandbox Code Playgroud)

变量的'volatile'很重要,因为它强制值在每次迭代时从内存中读取和写入.使用'-falign-loops = 64'将每个循环对齐到64个字节,并生成相同的程序集,除了对全局的相对偏移量:

   400880:       48 8b 15 c1 07 20 00    mov    0x2007c1(%rip),%rdx  # 601048 <counter>
   400887:       48 83 c2 01             add    $0x1,%rdx
   40088b:       83 e8 01                sub    $0x1,%eax
   40088e:       48 89 15 b3 07 20 00 …
Run Code Online (Sandbox Code Playgroud)

c assembly loops intel memory-alignment

22
推荐指数
2
解决办法
1385
查看次数