我在Fortran中有一个代码,它使用DGESVD
MKL并在8核上运行英特尔编译器.代码通过OpenMP加速.另外我知道OpenMP和MKL有自己的设置来设置线程数(omp_num_threads
和mkl_num_threads
).我想知道最佳线程数.我应该OMP_NUM_THREADS=1
在调用LAPACK例程之前设置吗?OpenMP线程的数量是否会影响MKL线程数?
假设我有两大功能.在单独的内核中编写它们并按顺序调用它们会更好吗,还是最好只编写一个内核?(我不想回读数据并在主机和设备之间强制形成).如果我想多次调用内核,速度会怎样?
有关大小和用法的cl_Type和常规类型(如cl_float和float)之间有什么区别.cl_float可以在内核中使用吗?
谢谢
我在主机上有一个向量,我想将它减半并发送到设备.做一个基准测试表明它CL_MEM_ALLOC_HOST_PTR
比CL_MEM_USE_HOST_PTR
速度更快,速度更快CL_MEM_COPY_HOST_PTR
.此外,设备上的内存分析不会显示设备上创建的缓冲区大小有任何差异.这与Khronos-clCreateBuffer上提到的标志的文档不同.有谁知道发生了什么?