小编Noc*_*nal的帖子

在PE中导入表(.exe)

我找到了"导入表"字段的指针.这是8字节大小,分为虚拟地址和大小.但是,虚拟地址字段中的值很大,并且误导了我提取与导入表相关的条目的下落相关信息的努力.值是否指向偏移量,如果是,则(.exe)文件在到达所需偏移量之前完成.

portable-executable

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

OpenCL:奇怪的内核行为

因此,我正在试着让一些代码在OpenCL中运行.

由于我没有得到最初的预期结果,我一直在尝试各种方法来弄清楚出了什么问题.所以我想出了下面附带的代码,并且在成功执行后它没有产生预期的结果.

此代码的最初愿景是执行指定数量的线程并将线程号复制到数组中.

Threads: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Run Code Online (Sandbox Code Playgroud)

然而,我得到的结果.

Threads: 0 0 0 3 0 0 0 7 0 0 0 11 0 0 0 15
Run Code Online (Sandbox Code Playgroud)

结果我得到了他们的模式.所以每一个

(n % 4)
Run Code Online (Sandbox Code Playgroud)

它似乎在我的数组中放了一个数字.我开始考虑是否由于某种原因将代码视为int并转换为char.

操作系统: - (雪豹)

gcc main.c -o threadsopencl -std=c99 -framework OpenCL



#ifdef __APPLE__
#include <OpenCL/opencl.h>
#else
#include <CL/cl.h>
#endif

#include <stdlib.h>     // warning: implicit declaration of function ‘malloc’
#include <stdio.h>      // …
Run Code Online (Sandbox Code Playgroud)

c gpu gpgpu opencl amd-processor

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

解释GDB寄存器(SSE寄存器)

我已经使用GDB一天了,我已经积累了很好的理解.但是,当我使用GDB和打印寄存器在最后一个分号设置断点时,我无法完全解释存储在XMM寄存器中的数据的含义.

我不知道数据是否为(MSB> LSB)格式,反之亦然.

    __m128i S = _mm_load_si128((__m128i*)Array16Bytes);

}
Run Code Online (Sandbox Code Playgroud)

所以这就是我得到的结果.

(gdb) print $xmm0
$1 = {
  v4_float = {1.2593182e-07, -4.1251766e-18, -5.43431603e-31, -2.73406277e-14}, 
  v2_double = {4.6236050467459811e-58, -3.7422963639201271e-245}, 
  v16_int8 = {52, 7, 55, -32, -94, -104, 49, 49, -115, 48, 90, -120, -88, -10, 67, 50}, 
  v8_int16 = {13319, 14304, -23912, 12593, -29392, 23176, -22282, 17202}, 
  v4_int32 = {872888288, -1567084239, -1926210936, -1460255950}, 
  v2_int64 = {3749026652749312305, -8273012972482837710}, 
  uint128 = 0x340737e0a29831318d305a88a8f64332
}
Run Code Online (Sandbox Code Playgroud)

那么有人会指导我如何解释数据.

unix x86 gdb sse

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

CUDA cudaMalloc

我已经开始编写新的CUDA应用程序。但是我一路上走了个有趣的弯路。第一次在变量x上调用cudaMalloc失败。但是,当我第二次调用它时,它将返回cudaSuccess。最近升级到CUDA 4.0 SDK,这是一个非常奇怪的错误。

我什至进行了一些测试,看来cudaMalloc的第一个调用失败了。

c++ cuda gpu gpgpu

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

C++对齐/移位问题

我有一个字符串:

"quic"

传递给一个函数,其中构成字符串的位存储在无符号的__int64中.导致以下输出:

0111010001101000011001010010000001110001011101010110100101100011

但是,当我传递包含这些值的字符串时:

0xDE,0x10,0x9C,0x58,0xE8,0xA4,0xA6,0x30,'\ 0'

输出不如我预期的那样正确:

1111111111111111111111111111111111111111111111111010011000110000

我使用与第一个字符串相同的代码,其中包含:

(((unsigned __int64)Message [0])<< 56)| (((unsigned __int64)Message [1])<< 48)|
(((unsigned __int64)消息[2])<< 40)| (((unsigned __int64)Message [3])<< 32)|
(((unsigned __int64)Message [4])<< 24)| (((unsigned __int64)Message [5])<< 16)|
(((unsigned __int64)Message [6])<< 8)| (((unsigned __int64)Message [7]));

c++

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

CUDA在设备上静态分配数据

我一直在尝试分配一个可以被每个内核函数访问的变量.我的尝试是下面附带的代码,但它不会编译,因为内核无法访问dArray.在C++中,您可以将变量放在顶部,或者在整个程序中声明要在每个范围内访问的静态.

__global__ void StoreThreadNumber()
{
    dArray[threadIdx.x] = threadIdx.x;
}

int main( int argc, char** argv)
{
    unsigned __int8 Array[16] = { 0 };
    unsigned __int8 dArray[16];

    for( __int8 Position = 0; Position < 16; Position++)
        cout << Array[Position] << " ";
    cout << endl;

    cudaMalloc((void**) dArray, 16*sizeof(__int8));
    cudaMemcpy( dArray, Array, 16*sizeof(__int8), cudaMemcpyHostToDevice);

    StoreThreadNumber<<<1, 16>>>();

    cudaMemcpy( Array, dArray, 16*sizeof(__int8), cudaMemcpyDeviceToHost);

    for( __int8 Position = 0; Position < 16; Position++)
        cout << Array[Position] << " ";
    cout << endl;

    cudaFree(dArray);
}
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing cuda nvcc

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

哪种编程风格更好?从优化的角度来看

有一个32/64位的大整数,我正在修改几个位的位置.

风格1

Integer64 = Modify(Integer64);
Run Code Online (Sandbox Code Playgroud)

风格2

Modify(Integer64);
Run Code Online (Sandbox Code Playgroud)

风格3

Using the same style as the 1st, but inline function
Run Code Online (Sandbox Code Playgroud)
  • 1)返回64位修改值
  • 2)创建备份缓冲区并复制原始值.然后将计算存储到原始输入值的位置
  • 3rd)Modify是一个内联函数.

我也相信样式2更能描述代码中的特定步骤.

从执行角度来看,哪种方式最好?

c++

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

标签 统计

c++ ×4

cuda ×2

gpgpu ×2

gpu ×2

amd-processor ×1

c ×1

gdb ×1

nvcc ×1

opencl ×1

parallel-processing ×1

portable-executable ×1

sse ×1

unix ×1

x86 ×1