Exemplo n.º 1
0
        public void GeneratePTX()
        {
            // test compilation
            using (var context = new Context())
            {
                context.EnableAlgorithms();

                using (Backend b = new PTXBackend(context, PTXArchitecture.SM_50, PTXInstructionSet.ISA_50, TargetPlatform.X64))
                {
                    //using (var unit = context.CreateCompileUnit(b, CompileUnitFlags.None))
                    //{

                    /*
                     * var compiledKernel = b.Compile(
                     *  unit,
                     *  typeof(GPU_test_ILGPU).GetMethod(nameof(MyKernel), BindingFlags.Public | BindingFlags.Static));
                     *
                     * System.IO.File.WriteAllBytes("MyKernel.ptx", compiledKernel.GetBuffer());
                     */

                    var methods        = typeof(Impl_ILGPU).GetMethods(BindingFlags.Static | BindingFlags.Public);
                    var method         = methods.FirstOrDefault(f => f.Name == nameof(MyKernel));//.GetMethod(nameof(MyKernel), BindingFlags.Static);
                    var compiledKernel = b.Compile(method, default);

                    var ptxKernel = compiledKernel as PTXCompiledKernel;
                    System.IO.File.WriteAllText("MyKernel.ptx", ptxKernel.PTXAssembly);
                    //}
                }
            }
        }