我希望能够在由PCI ID识别的多GPU系统上将OpenCL设备与系统中的GPU相匹配.
例如,如果我的系统有多个GPU,可能来自不同的供应商,我可以通过枚举PCI总线列出设备.这给了我PCI供应商,设备和总线ID.如果我根据某些选择标准选择其中一个(GPU)PCI设备用于OpenCL计算,我该如何将其与OpenCL设备相匹配?
我可以使用clGetDeviceIDs()在OpenCL中枚举GPU设备,但没有明显的方法可以将OpenCL设备与PCI设备相匹配.OpenCL函数clGetDeviceInfo()提供对PCI供应商ID和设备名称的访问,但不提供对PCI设备或总线ID的访问.我可以尝试将PCI设备名称与OpenCL设备名称匹配,但是您可能有多个相同类型的设备,并且名称并不总是相同.
为什么这有必要?假设我知道程序X在GPU A上运行CUDA或其他东西.我想避免使用GPU A进行OpenCL操作,因此我选择GPU B.然后我需要弄清楚哪个OpenCL设备是GPU A,哪个是GPU B. PCI ID似乎是识别GPU设备的唯一一致且跨平台的方式.
顺便说一下,CUDA API确实为您提供了PCI,总线和插槽ID(CU_DEVICE_ATTRIBUTE_PCI_BUS_ID,CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID),但CUDA仅适用于NVidia设备.
理想情况下,我需要使用C或C++的解决方案.
我正在尝试通过 Windows 中的匿名管道从子进程接收数据。我知道如何使用标准 I/O 流来执行此操作,但这些流正用于其他目的。我还知道如何在 Linux 或 OSX 中使用fork(),pipe()和 来执行此操作execv()。
在 Windows 中,您可以使用 来创建管道CreatePipe()并使用 使其一端不可继承SetHandleInformation()。然后,对于 stdout 和 stderr,您可以通过STARTUPINFO、 withhStdOutput或hStdErrorset 来传递 to ,CreateProcess()将另一端传递给子级。在调用CreateProcess()最接近的父级之后,它是管道子级末端的句柄。MSDN 上的使用重定向输入和输出创建子进程对此进行了详细解释。HANDLE但是,除了通过 stderr、stdout 或 stdin 之外,我还没有找到将 a 传递给子级的方法。
我尝试过将其转换HANDLE为字符串,如下所示:
std::ostringstream str;
str << hex << "0x" << handle;
std::string handleArg = str.str();
Run Code Online (Sandbox Code Playgroud)
然后将其作为命令行参数传递并将其转换回 a HANDLE,这只是void *子进程中的 a 。尽管子进程显然继承了管道, …
在本页面
http://www.exclusivecard.co.uk/offers.php
我有几个猫头鹰旋转木马在运行.您会注意到,当您第一次加载页面时,旋转木马中的所有优惠都会以全宽闪烁,直到jquery启动,然后调整所有内容的大小.反正有没有阻止这个?我发布了一些我正在使用的代码
HTML
<?php $k='1'; do { ?>
<div id="owlslide<?php echo $k;?>">
<?php do { ?>
<div class="owlItem ">
<-- some other stuff -->
</div>
<?php } while();?>
</div>
<?php $i++; } while();?>
Run Code Online (Sandbox Code Playgroud)
Jquery(猫头鹰)
$(document).ready(function(){
<?php $i='1'; do { ?>
$("#owlslide<?php echo $i;?>").owlCarousel({
autoPlay: false, //Set AutoPlay to 3 seconds
paginationNumbers: true,
itemsCustom : [
[0, 1],
[450, 1],
[600, 2],
[700, 2],
[1000, 3],
[1200, 4],
[1400, 4],
[1600, 5]
],
});
<?php $i++; }while($cara = mysql_fetch_assoc($catCara)); ?> …Run Code Online (Sandbox Code Playgroud)