예제 #1
0
def create_some_context():
    platforms = Driver.get_platforms()

    for vendor in ["AMD Accelerated Parallel Processing"]:
        platform = next((pl for pl in platforms if pl.name == vendor), None)
        if platform is not None:
            break

    assert platform is not None
    device = platform.get_devices(type=Driver.device_type.GPU)[0]

    context = Driver.Context([device])
    queue = Driver.CommandQueue(context, profiling=True)

    return context, queue
예제 #2
0
 def reserve(self, numOfStreams):
     self.streams.extend([Driver.CommandQueue(context, profiling=True)] *
                         numOfStreams)
예제 #3
0
def autoinit():
    global context
    if context is not None:
        return

    def finishUp():
        clearCaches()

    import atexit
    atexit.register(finishUp)

    platforms = Driver.get_platforms()
    if len(platforms) == 0:
        raise RuntimeError("No OpenCL enabled platform found")

    amd = "AMD Accelerated Parallel Processing"

    global platform
    for vendor in [amd]:
        platform = next((pl for pl in platforms if pl.name == vendor), None)
        if platform is not None:
            break

    if platform is None:
        platform = platforms[0]

    devices = platform.get_devices(type=Driver.device_type.GPU)
    if len(devices) == 0:
        raise RuntimeError("No OpenCL enabled devices found")

    if Config.deviceIdx >= len(devices):
        raise RuntimeError("Invalid OpenCL config device index")

    global device
    device = devices[Config.deviceIdx]

    context = Driver.Context([device])

    global queue
    queue = Driver.CommandQueue(context, profiling=True)

    addinfo = " %sCU" % device.max_compute_units if platform.name == amd else ""
    print("[%s]: Using device #%s (%s%s)" %
          (Config.libname, Config.deviceIdx, device.name, addinfo))

    if Config.systemLog:
        clVersion = device.version
        print("[%s]: Created OpenCL context (Using driver version: %s)" %
              (Config.libname, clVersion))

    global memoryPool
    memoryPool = Driver.MemoryPool(context)

    global globalRng
    globalRng = Random.PhiloxGenerator(context, queue)

    if Config.systemLog:
        print("[%s]: Created global rng (%s)" %
              (Config.libname, globalRng.__class__.__name__))

    global streamManager
    streamManager = StreamManager()

    global globalFills
    globalFills = GPUArrayFills()