예제 #1
0
파일: clgen_fetch.py 프로젝트: BeauJoh/phd
def import_clgen_sample(session: session_t, path: Path,
                        cl_launchable: bool = False,
                        harnesses: List[cldriveParams] = [],
                        delete: bool = False) -> None:
  src = fs.read_file(path)
  hash_ = crypto.sha1_str(src)

  dupe = s.query(CLgenProgram).filter(CLgenProgram.hash == hash_).first()

  if dupe:
    print(f"warning: ignoring duplicate file {path}")
  elif not len(src):
    print(f"warning: ignoring empty file {path}")
  else:
    program = CLgenProgram(
        hash=hash_,
        runtime=len(src) / CLGEN_INFERENCE_CPS,
        src=src,
        linecount=len(src.split('\n')),
        cl_launchable=cl_launchable)
    s.add(program)
    s.commit()

    # Make test harnesses, if required
    if harnesses:
      env = cldrive.make_env()
      for params in harnesses:
        testcase = get_or_create(
            s, CLgenTestCase, program_id=program.id, params_id=params.id)
        s.flush()
        clgen_mkharness.mkharness(s, env, testcase)

    if delete:
      fs.rm(path)
예제 #2
0
def test_make_env_gpu():
    env = cldrive.make_env(devtype="gpu")
    assert env.device_type == "GPU"
예제 #3
0
def test_make_env_cpu():
    env = cldrive.make_env(devtype="cpu")
    assert env.device_type == "CPU"
예제 #4
0
def test_make_env_not_found():
    with pytest.raises(LookupError):
        cldrive.make_env(platform="not a real plat", device="not a real dev")
예제 #5
0
if __name__ == "__main__":
  parser = ArgumentParser()
  parser.add_argument(
      "-H", "--hostname", type=str, default="cc1",
      help="MySQL database hostname")
  parser.add_argument(
      "platform", metavar="<platform name>", help="OpenCL platform name")
  parser.add_argument(
      "device", metavar="<device name>", help="OpenCL device name")
  parser.add_argument(
      "--opt", action="store_true", help="Only test with optimizations on")
  parser.add_argument(
      "--no-opt", action="store_true", help="Only test with optimizations disabled")
  args = parser.parse_args()

  env = cldrive.make_env(platform=args.platform, device=args.device)
  platform_id, device_id = env.ids()

  optimizations = None
  if args.opt and args.no_opt:
    pass  # both flags
  elif args.opt:
    optimizations = 1
  elif args.no_opt:
    optimizations = 0

  db.init(args.hostname)  # initialize db engine

  with Session(commit=False) as session:
    testbed = get_testbed(session, args.platform, args.device)
    devname = util.device_str(testbed.device)
예제 #6
0
파일: lib.py 프로젝트: pratik0509/cldrive
# along with cldrive.  If not, see <http://www.gnu.org/licenses/>.
#
import os
import sys
from io import StringIO
from pathlib import Path
from typing import List

import numpy as np
from numpy import testing as nptest

import cldrive

import pytest

ENV = cldrive.make_env()

def _platform_name():
    import pyopencl as cl
    _, queue = ENV.ctx_queue()
    device = queue.get_info(cl.command_queue_info.DEVICE)
    platform = device.get_info(cl.device_info.PLATFORM)
    return platform.get_info(cl.platform_info.NAME)


# test decorators
skip_on_pocl = pytest.mark.skipif(
    _platform_name() == "Portable Computing Language",
    reason="not supported on POCL")

needs_cpu = pytest.mark.skipif(
예제 #7
0
 def __init__(self, platform: str, device: str, flags: List[str]):
     self.device = device
     self.platform = platform
     self.flags = flags
     self.env = cldrive.make_env(self.platform, self.device)
     self.ids = self.env.ids()