为AMD OpenCL添加优化传递与编写LLVM传递一样,与编写LLVM传递相同.我应该有什么额外的知识来实现这个目标?我们是否需要一些额外的库来优化OpenCL内核?
CUDA同时具有运行时API和驱动程序API.什么相当于AMD?如果我以某种方式修改llvm中的IL,我可以获得更多控制吗?
我的应用程序需要在位向量上执行OR和XOR等位向量操作.
e.g suppose array A = 000100101 (a.k.a bit vector)
B = 100101010
A . B = 100101111
Run Code Online (Sandbox Code Playgroud)
CUDA是否支持布尔变量?例如bool,如果是,如何存储和操作?它是否也支持位向量操作?我在CUDA编程指南中找不到答案.
我将使用OpenCL并行化加密/解密过程.
为此,我只想使用现有的openSSL加密库函数,而不是创建自己的算法,如AES,DES.
所以我打算从OpenCL内核调用openSSL加密函数.你能否澄清我的疑问,是否有可能?
有没有办法在C/C++中并行减少CPU上的数组?我最近了解到使用openmp是不可能的.还有其他选择吗?
我正在研究二元矩阵.我的两个数组正在重叠.(我检查了地址).这种情况只发生在少数几种矩阵上.因此我得到错误的结果.我尝试使用new来分配数组,但是当我这样做时会出现分段错误.有没有办法可以避免重叠记忆?我正在使用g ++编译器.
这就是我声明数组的方式
bool A[size0][size0],B[size0][size0],C[size0][size0];
Run Code Online (Sandbox Code Playgroud)
在下一步中,我将所有这些初始化.A和B是操作数,C将保存结果.
我在下一阶段使用自定义乘法算法.这是一个片段
for(I=0;I<cnm;I++){
bool Tab[m][size];
bool Ctemp[size][size];
int count=0;
for(uint i=0;i<pow(2.0,m*1.0);i++){
for(uint j=0;j<n;j++){
Tab[i][j]=0; //Initialize
if(i==0){
Tab[i][j] = 0;
}
else{
int dec;
//h is calculated here
dec=gray_map[i-1]^gray_map[i]; //gray_map returns gray code
Tab[i][j] = Tab[i-1][j] ^ B[h][j];
}
....
....
}
}
.....
.....
//Rest of the code
Run Code Online (Sandbox Code Playgroud)
根据我的观察Tab和C重叠.我通过打印来检查内存地址.它们在第二级的第六次迭代中重叠以进行循环(n = 9,m = 3,大小= 9,cnm = 3).我C之间没有使用过,我只在外循环中使用它.