diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index 48a093512362c4493b0e170706048248e6d5e346..95e9283c92473e9dbc1e842a926a4e9015007b78 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -688,33 +688,39 @@ def create_some_context(interactive=True, answers=None): if not answer: platform = platforms[0] else: + platform = None try: - choice = int(answer) + int_choice = int(answer) except ValueError: + pass + else: + if 0 <= int_choice < len(platforms): + platform = platforms[int_choice] + + if platform is None: answer = answer.lower() - platform = None for i, pf in enumerate(platforms): if answer in pf.name.lower(): platform = pf if platform is None: raise RuntimeError("input did not match any platform") - else: - platform = platforms[choice] - devices = platform.get_devices() def parse_device(choice): try: - choice = int(choice) + int_choice = int(choice) except ValueError: - choice = choice.lower() - for i, dev in enumerate(devices): - if choice in dev.name.lower(): - return dev - raise RuntimeError("input did not match any platform") + pass else: - return devices[choice] + if 0 <= int_choice < len(devices): + return devices[int_choice] + + choice = choice.lower() + for i, dev in enumerate(devices): + if choice in dev.name.lower(): + return dev + raise RuntimeError("input did not match any platform") if not devices: raise Error("no devices found")