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)
def test_make_env_gpu(): env = cldrive.make_env(devtype="gpu") assert env.device_type == "GPU"
def test_make_env_cpu(): env = cldrive.make_env(devtype="cpu") assert env.device_type == "CPU"
def test_make_env_not_found(): with pytest.raises(LookupError): cldrive.make_env(platform="not a real plat", device="not a real dev")
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)
# 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(
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()