From 785b2f5d2409c4ac32bfd1dcdaea501ad2dd3889 Mon Sep 17 00:00:00 2001 From: Evghenii Date: Mon, 6 Jan 2014 14:00:36 +0100 Subject: [PATCH] added examples --- examples/aobench/Makefile | 2 +- examples/deferred/deferred_shading | Bin 124988 -> 0 bytes examples/deferred/main_cu.cpp | 139 --- examples/mandelbrot/avx.out | Bin 40753 -> 0 bytes examples/mandelbrot/avx1.out | Bin 37393 -> 0 bytes examples/mandelbrot/out.o | Bin 10776 -> 0 bytes examples/mandelbrot/out.ptx | 843 ------------------ examples/mandelbrot/out.s | Bin 9256 -> 0 bytes examples/mandelbrot/out1.o | Bin 7336 -> 0 bytes examples/mandelbrot_tasks/Makefile | 2 +- examples/rt/Makefile | 2 +- examples/sort/sort | Bin 132221 -> 0 bytes examples/stencil/a.out | Bin 27015 -> 0 bytes examples/stencil/drvapi_error_string.h | 370 -------- examples/stencil/err | 0 examples/stencil/info | 5 - examples/stencil/stencil.cu | 62 -- examples/stencil/stencil.ptx | 267 ------ examples/stencil/stencil0.ptx | 224 ----- examples/stencil/stencil2.ptx | 247 ----- examples/stencil/stencil_cu.cpp | 317 ------- examples/stencil/stencil_cu.o | Bin 18464 -> 0 bytes examples/stencil/stencil_parallel.cpp | 87 -- examples/volume_rendering/volume_ispc.bc | Bin 455740 -> 0 bytes examples/volume_rendering/volume_ispc_avx.bc | Bin 10228 -> 0 bytes .../volume_rendering/volume_ispc_nvptx64.bc | Bin 19100 -> 0 bytes 26 files changed, 3 insertions(+), 2564 deletions(-) delete mode 100755 examples/deferred/deferred_shading delete mode 100644 examples/deferred/main_cu.cpp delete mode 100755 examples/mandelbrot/avx.out delete mode 100755 examples/mandelbrot/avx1.out delete mode 100644 examples/mandelbrot/out.o delete mode 100644 examples/mandelbrot/out.ptx delete mode 100644 examples/mandelbrot/out.s delete mode 100644 examples/mandelbrot/out1.o delete mode 100755 examples/sort/sort delete mode 100755 examples/stencil/a.out delete mode 100644 examples/stencil/drvapi_error_string.h delete mode 100644 examples/stencil/err delete mode 100644 examples/stencil/info delete mode 100644 examples/stencil/stencil.cu delete mode 100644 examples/stencil/stencil.ptx delete mode 100644 examples/stencil/stencil0.ptx delete mode 100644 examples/stencil/stencil2.ptx delete mode 100644 examples/stencil/stencil_cu.cpp delete mode 100644 examples/stencil/stencil_cu.o delete mode 100644 examples/stencil/stencil_parallel.cpp delete mode 100644 examples/volume_rendering/volume_ispc.bc delete mode 100644 examples/volume_rendering/volume_ispc_avx.bc delete mode 100644 examples/volume_rendering/volume_ispc_nvptx64.bc diff --git a/examples/aobench/Makefile b/examples/aobench/Makefile index 28f0f051..c8122c07 100644 --- a/examples/aobench/Makefile +++ b/examples/aobench/Makefile @@ -2,7 +2,7 @@ EXAMPLE=ao CPP_SRC=ao.cpp ao_serial.cpp ISPC_SRC=ao.ispc -ISPC_IA_TARGETS=avx1-i32x8 +ISPC_IA_TARGETS=sse2-i32x4,sse4-i32x4,avx1-i32x8,avx2-i32x8 ISPC_ARM_TARGETS=neon include ../common.mk diff --git a/examples/deferred/deferred_shading b/examples/deferred/deferred_shading deleted file mode 100755 index 8cecdec6d178257237daac4e8e40e3234ca09a34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124988 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 EPu&cm&Hw-a diff --git a/examples/deferred/main_cu.cpp b/examples/deferred/main_cu.cpp deleted file mode 100644 index 4f2be879..00000000 --- a/examples/deferred/main_cu.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* - Copyright (c) 2011, Intel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef _MSC_VER -#define ISPC_IS_WINDOWS -#define NOMINMAX -#elif defined(__linux__) -#define ISPC_IS_LINUX -#elif defined(__APPLE__) -#define ISPC_IS_APPLE -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef ISPC_IS_WINDOWS - #define WIN32_LEAN_AND_MEAN - #include -#endif -#include "deferred.h" -#include "kernels_ispc.h" -#include "../timing.h" - -/////////////////////////////////////////////////////////////////////////// - -int main(int argc, char** argv) { - if (argc != 2) { - printf("usage: deferred_shading \n"); - return 1; - } - - InputData *input = CreateInputDataFromFile(argv[1]); - if (!input) { - printf("Failed to load input file \"%s\"!\n", argv[1]); - return 1; - } - - Framebuffer framebuffer(input->header.framebufferWidth, - input->header.framebufferHeight); - - InitDynamicC(input); -#ifdef __cilk - InitDynamicCilk(input); -#endif // __cilk - - int nframes = 5; - double ispcCycles = 1e30; - for (int i = 0; i < 5; ++i) { - framebuffer.clear(); - reset_and_start_timer(); - for (int j = 0; j < nframes; ++j) - ispc::RenderStatic(input->header, input->arrays, - VISUALIZE_LIGHT_COUNT, - framebuffer.r, framebuffer.g, framebuffer.b); - double mcycles = get_elapsed_mcycles() / nframes; - ispcCycles = std::min(ispcCycles, mcycles); - } - printf("[ispc static + tasks]:\t\t[%.3f] million cycles to render " - "%d x %d image\n", ispcCycles, - input->header.framebufferWidth, input->header.framebufferHeight); - WriteFrame("deferred-ispc-static.ppm", input, framebuffer); - -#ifdef __cilk - double dynamicCilkCycles = 1e30; - for (int i = 0; i < 5; ++i) { - framebuffer.clear(); - reset_and_start_timer(); - for (int j = 0; j < nframes; ++j) - DispatchDynamicCilk(input, &framebuffer); - double mcycles = get_elapsed_mcycles() / nframes; - dynamicCilkCycles = std::min(dynamicCilkCycles, mcycles); - } - printf("[ispc + Cilk dynamic]:\t\t[%.3f] million cycles to render image\n", - dynamicCilkCycles); - WriteFrame("deferred-ispc-dynamic.ppm", input, framebuffer); -#endif // __cilk - - double serialCycles = 1e30; - for (int i = 0; i < 5; ++i) { - framebuffer.clear(); - reset_and_start_timer(); - for (int j = 0; j < nframes; ++j) - DispatchDynamicC(input, &framebuffer); - double mcycles = get_elapsed_mcycles() / nframes; - serialCycles = std::min(serialCycles, mcycles); - } - printf("[C++ serial dynamic, 1 core]:\t[%.3f] million cycles to render image\n", - serialCycles); - WriteFrame("deferred-serial-dynamic.ppm", input, framebuffer); - -#ifdef __cilk - printf("\t\t\t\t(%.2fx speedup from static ISPC, %.2fx from Cilk+ISPC)\n", - serialCycles/ispcCycles, serialCycles/dynamicCilkCycles); -#else - printf("\t\t\t\t(%.2fx speedup from ISPC + tasks)\n", serialCycles/ispcCycles); -#endif // __cilk - - DeleteInputData(input); - - return 0; -} diff --git a/examples/mandelbrot/avx.out b/examples/mandelbrot/avx.out deleted file mode 100755 index 5434d8a890842c5fc62a3a30dffe16acb9f3a604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40753 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 D)_>bq diff --git a/examples/mandelbrot/avx1.out b/examples/mandelbrot/avx1.out deleted file mode 100755 index 59cfd29f93a8a1f0fe7dfc4fe27bece7e87c54ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37393 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 R|A-~G?f=>{seWwx{~Lu9g<}8! diff --git a/examples/mandelbrot/out.ptx b/examples/mandelbrot/out.ptx deleted file mode 100644 index d14a7ee8..00000000 --- a/examples/mandelbrot/out.ptx +++ /dev/null @@ -1,843 +0,0 @@ -// -// Generated by LLVM NVPTX Back-End -// - -.version 3.1 -.target sm_35, texmode_independent -.address_size 64 - - // .globl __vselect_i8 - // @__vselect_i8 -.func (.param .align 1 .b8 func_retval0[1]) __vselect_i8( - .param .align 1 .b8 __vselect_i8_param_0[1], - .param .align 1 .b8 __vselect_i8_param_1[1], - .param .align 4 .b8 __vselect_i8_param_2[4] -) -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u32 %r0, [__vselect_i8_param_2]; - setp.eq.s32 %p0, %r0, 0; - ld.param.u8 %rc0, [__vselect_i8_param_0]; - ld.param.u8 %rc1, [__vselect_i8_param_1]; - selp.b16 %rc0, %rc0, %rc1, %p0; - st.param.b8 [func_retval0+0], %rc0; - ret; -} - - // .globl __vselect_i16 -.func (.param .align 2 .b8 func_retval0[2]) __vselect_i16( - .param .align 2 .b8 __vselect_i16_param_0[2], - .param .align 2 .b8 __vselect_i16_param_1[2], - .param .align 4 .b8 __vselect_i16_param_2[4] -) // @__vselect_i16 -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u32 %r0, [__vselect_i16_param_2]; - setp.eq.s32 %p0, %r0, 0; - ld.param.u16 %rs0, [__vselect_i16_param_0]; - ld.param.u16 %rs1, [__vselect_i16_param_1]; - selp.b16 %rs0, %rs0, %rs1, %p0; - st.param.b16 [func_retval0+0], %rs0; - ret; -} - - // .globl __vselect_i64 -.func (.param .align 8 .b8 func_retval0[8]) __vselect_i64( - .param .align 8 .b8 __vselect_i64_param_0[8], - .param .align 8 .b8 __vselect_i64_param_1[8], - .param .align 4 .b8 __vselect_i64_param_2[4] -) // @__vselect_i64 -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u32 %r0, [__vselect_i64_param_2]; - setp.eq.s32 %p0, %r0, 0; - ld.param.u64 %rl0, [__vselect_i64_param_0]; - ld.param.u64 %rl1, [__vselect_i64_param_1]; - selp.b64 %rl0, %rl0, %rl1, %p0; - st.param.b64 [func_retval0+0], %rl0; - ret; -} - - // .globl __aos_to_soa4_float1 -.func __aos_to_soa4_float1( - .param .align 4 .b8 __aos_to_soa4_float1_param_0[4], - .param .align 4 .b8 __aos_to_soa4_float1_param_1[4], - .param .align 4 .b8 __aos_to_soa4_float1_param_2[4], - .param .align 4 .b8 __aos_to_soa4_float1_param_3[4], - .param .b64 __aos_to_soa4_float1_param_4, - .param .b64 __aos_to_soa4_float1_param_5, - .param .b64 __aos_to_soa4_float1_param_6, - .param .b64 __aos_to_soa4_float1_param_7 -) // @__aos_to_soa4_float1 -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u64 %rl0, [__aos_to_soa4_float1_param_4]; - ld.param.u64 %rl1, [__aos_to_soa4_float1_param_5]; - ld.param.u64 %rl2, [__aos_to_soa4_float1_param_6]; - ld.param.u64 %rl3, [__aos_to_soa4_float1_param_7]; - ld.param.f32 %f0, [__aos_to_soa4_float1_param_0]; - ld.param.f32 %f1, [__aos_to_soa4_float1_param_1]; - ld.param.f32 %f2, [__aos_to_soa4_float1_param_2]; - ld.param.f32 %f3, [__aos_to_soa4_float1_param_3]; - st.f32 [%rl0], %f0; - st.f32 [%rl1], %f1; - st.f32 [%rl2], %f2; - st.f32 [%rl3], %f3; - ret; -} - - // .globl __soa_to_aos4_float1 -.func __soa_to_aos4_float1( - .param .align 4 .b8 __soa_to_aos4_float1_param_0[4], - .param .align 4 .b8 __soa_to_aos4_float1_param_1[4], - .param .align 4 .b8 __soa_to_aos4_float1_param_2[4], - .param .align 4 .b8 __soa_to_aos4_float1_param_3[4], - .param .b64 __soa_to_aos4_float1_param_4, - .param .b64 __soa_to_aos4_float1_param_5, - .param .b64 __soa_to_aos4_float1_param_6, - .param .b64 __soa_to_aos4_float1_param_7 -) // @__soa_to_aos4_float1 -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u64 %rl0, [__soa_to_aos4_float1_param_4]; - ld.param.u64 %rl1, [__soa_to_aos4_float1_param_5]; - ld.param.u64 %rl2, [__soa_to_aos4_float1_param_6]; - ld.param.u64 %rl3, [__soa_to_aos4_float1_param_7]; - ld.param.f32 %f0, [__soa_to_aos4_float1_param_0]; - ld.param.f32 %f1, [__soa_to_aos4_float1_param_1]; - ld.param.f32 %f2, [__soa_to_aos4_float1_param_2]; - ld.param.f32 %f3, [__soa_to_aos4_float1_param_3]; - st.f32 [%rl0], %f0; - st.f32 [%rl1], %f1; - st.f32 [%rl2], %f2; - st.f32 [%rl3], %f3; - ret; -} - - // .globl __aos_to_soa3_float1 -.func __aos_to_soa3_float1( - .param .align 4 .b8 __aos_to_soa3_float1_param_0[4], - .param .align 4 .b8 __aos_to_soa3_float1_param_1[4], - .param .align 4 .b8 __aos_to_soa3_float1_param_2[4], - .param .b64 __aos_to_soa3_float1_param_3, - .param .b64 __aos_to_soa3_float1_param_4, - .param .b64 __aos_to_soa3_float1_param_5 -) // @__aos_to_soa3_float1 -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u64 %rl0, [__aos_to_soa3_float1_param_3]; - ld.param.u64 %rl1, [__aos_to_soa3_float1_param_4]; - ld.param.u64 %rl2, [__aos_to_soa3_float1_param_5]; - ld.param.f32 %f0, [__aos_to_soa3_float1_param_0]; - ld.param.f32 %f1, [__aos_to_soa3_float1_param_1]; - ld.param.f32 %f2, [__aos_to_soa3_float1_param_2]; - st.f32 [%rl0], %f0; - st.f32 [%rl1], %f1; - st.f32 [%rl2], %f2; - ret; -} - - // .globl __soa_to_aos3_float1 -.func __soa_to_aos3_float1( - .param .align 4 .b8 __soa_to_aos3_float1_param_0[4], - .param .align 4 .b8 __soa_to_aos3_float1_param_1[4], - .param .align 4 .b8 __soa_to_aos3_float1_param_2[4], - .param .b64 __soa_to_aos3_float1_param_3, - .param .b64 __soa_to_aos3_float1_param_4, - .param .b64 __soa_to_aos3_float1_param_5 -) // @__soa_to_aos3_float1 -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.u64 %rl0, [__soa_to_aos3_float1_param_3]; - ld.param.u64 %rl1, [__soa_to_aos3_float1_param_4]; - ld.param.u64 %rl2, [__soa_to_aos3_float1_param_5]; - ld.param.f32 %f0, [__soa_to_aos3_float1_param_0]; - ld.param.f32 %f1, [__soa_to_aos3_float1_param_1]; - ld.param.f32 %f2, [__soa_to_aos3_float1_param_2]; - st.f32 [%rl0], %f0; - st.f32 [%rl1], %f1; - st.f32 [%rl2], %f2; - ret; -} - - // .globl __rsqrt_varying_double -.func (.param .align 8 .b8 func_retval0[8]) __rsqrt_varying_double( - .param .align 8 .b8 __rsqrt_varying_double_param_0[8] -) // @__rsqrt_varying_double -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: - ld.param.f64 %fl0, [__rsqrt_varying_double_param_0]; - rsqrt.approx.f64 %fl0, %fl0; - st.param.f64 [func_retval0+0], %fl0; - ret; -} - - // .globl mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E_ -.func mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E_( - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_0, - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_1, - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_2, - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_3, - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_4, - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_5, - .param .b32 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_6, - .param .b64 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_7, - .param .align 4 .b8 mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_8[4] -) // @mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E_ -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: // %allocas - ld.param.f32 %f0, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_0]; - ld.param.f32 %f1, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_1]; - ld.param.f32 %f3, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_2]; - ld.param.f32 %f2, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_3]; - ld.param.u32 %r0, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_4]; - ld.param.u32 %r1, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_5]; - ld.param.u32 %r2, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_6]; - ld.param.u64 %rl0, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_7]; - ld.param.u32 %r3, [mandelbrot_ispc___unfunfunfunfuniuniuniun_3C_uni_3E__param_8]; - setp.lt.s32 %p0, %r3, 0; - sub.f32 %f3, %f3, %f0; - cvt.rn.f32.s32 %f4, %r0; - sub.f32 %f2, %f2, %f1; - cvt.rn.f32.s32 %f5, %r1; - div.rn.f32 %f2, %f2, %f5; - div.rn.f32 %f3, %f3, %f4; - @%p0 bra BB8_9; -// BB#1: // %for_test110.preheader - setp.lt.s32 %p0, %r1, 1; - @%p0 bra BB8_45; -// BB#2: // %outer_not_in_extras140.preheader.lr.ph - setp.gt.s32 %p0, %r2, 0; - mov.u32 %r3, 0; - selp.b32 %r4, -1, 0, %p0; - shl.b32 %r5, %r0, 2; - mov.u32 %r6, %r3; -BB8_3: // %outer_not_in_extras140.preheader - // =>This Loop Header: Depth=1 - // Child Loop BB8_41 Depth 2 - // Child Loop BB8_43 Depth 2 - // Child Loop BB8_38 Depth 2 - // Child Loop BB8_33 Depth 3 - setp.lt.s32 %p0, %r0, 1; - @%p0 bra BB8_4; -// BB#31: // %foreach_full_body120.lr.ph - // in Loop: Header=BB8_3 Depth=1 - setp.lt.s32 %p0, %r4, 0; - mov.u32 %r7, %r0; - mov.u32 %r8, %r3; - @%p0 bra BB8_32; - bra.uni BB8_43; -BB8_32: // in Loop: Header=BB8_3 Depth=1 - mov.u64 %rl1, 0; - cvt.rn.f32.s32 %f4, %r6; - fma.rn.f32 %f4, %f2, %f4, %f1; - mul.lo.s32 %r7, %r6, %r0; -BB8_38: // %for_loop.i380.lr.ph.us - // Parent Loop BB8_3 Depth=1 - // => This Loop Header: Depth=2 - // Child Loop BB8_33 Depth 3 - cvt.u32.u64 %r8, %rl1; - cvt.rn.f32.s32 %f5, %r8; - fma.rn.f32 %f5, %f3, %f5, %f0; - mov.u32 %r10, 0; - mov.u32 %r12, %r4; - mov.u32 %r11, %r10; - mov.u32 %r9, %r10; - mov.f32 %f7, %f5; - mov.f32 %f6, %f4; -BB8_33: // %for_loop.i380.us - // Parent Loop BB8_3 Depth=1 - // Parent Loop BB8_38 Depth=2 - // => This Inner Loop Header: Depth=3 - mul.f32 %f8, %f7, %f7; - fma.rn.f32 %f9, %f6, %f6, %f8; - setp.gtu.f32 %p0, %f9, 0f40800000; - selp.b32 %r13, %r12, 0, %p0; - or.b32 %r11, %r13, %r11; - shr.u32 %r13, %r11, 31; - shr.u32 %r14, %r12, 31; - setp.eq.s32 %p0, %r13, %r14; - @%p0 bra BB8_34; - bra.uni BB8_35; -BB8_34: // in Loop: Header=BB8_33 Depth=3 - mov.u32 %r12, %r10; - bra.uni BB8_36; -BB8_35: // %not_all_continued_or_breaked.i394.us - // in Loop: Header=BB8_33 Depth=3 - mul.f32 %f9, %f6, %f6; - not.b32 %r13, %r11; - and.b32 %r12, %r12, %r13; - sub.f32 %f8, %f8, %f9; - add.f32 %f8, %f5, %f8; - add.f32 %f7, %f7, %f7; - fma.rn.f32 %f6, %f6, %f7, %f4; - mov.f32 %f7, %f8; -BB8_36: // %for_step.i363.us - // in Loop: Header=BB8_33 Depth=3 - setp.ne.s32 %p0, %r12, 0; - selp.u32 %r13, 1, 0, %p0; - add.s32 %r9, %r9, %r13; - setp.lt.s32 %p0, %r9, %r2; - selp.b32 %r12, %r12, 0, %p0; - setp.lt.s32 %p0, %r12, 0; - @%p0 bra BB8_33; -// BB#37: // %mandel___vyfvyfvyi.exit395.us - // in Loop: Header=BB8_38 Depth=2 - add.s32 %r8, %r8, %r7; - shl.b32 %r8, %r8, 2; - cvt.s64.s32 %rl2, %r8; - add.s64 %rl2, %rl2, %rl0; - st.u32 [%rl2], %r9; - add.s64 %rl1, %rl1, 1; - cvt.u32.u64 %r8, %rl1; - setp.eq.s32 %p0, %r8, %r0; - @%p0 bra BB8_44; - bra.uni BB8_38; -BB8_43: // %mandel___vyfvyfvyi.exit395 - // Parent Loop BB8_3 Depth=1 - // => This Inner Loop Header: Depth=2 - cvt.s64.s32 %rl1, %r8; - add.s64 %rl1, %rl1, %rl0; - mov.u32 %r9, 0; - st.u32 [%rl1], %r9; - add.s32 %r8, %r8, 4; - add.s32 %r7, %r7, -1; - setp.eq.s32 %p0, %r7, 0; - @%p0 bra BB8_44; - bra.uni BB8_43; -BB8_4: // %partial_inner_all_outer156 - // in Loop: Header=BB8_3 Depth=1 - @%p0 bra BB8_44; -// BB#5: // %partial_inner_only197 - // in Loop: Header=BB8_3 Depth=1 - setp.gt.s32 %p0, %r0, 0; - mov.u32 %r8, 0; - fma.rn.f32 %f4, %f3, 0f00000000, %f0; - cvt.rn.f32.s32 %f5, %r6; - fma.rn.f32 %f5, %f2, %f5, %f1; - selp.b32 %r7, %r4, 0, %p0; - setp.lt.s32 %p1, %r7, 0; - mov.u32 %r10, %r4; - mov.u32 %r9, %r8; - mov.u32 %r7, %r8; - mov.f32 %f7, %f4; - mov.f32 %f6, %f5; - @%p1 bra BB8_41; - bra.uni BB8_6; -BB8_41: // %for_loop.i - // Parent Loop BB8_3 Depth=1 - // => This Inner Loop Header: Depth=2 - selp.b32 %r11, %r10, 0, %p0; - mul.f32 %f8, %f7, %f7; - fma.rn.f32 %f9, %f6, %f6, %f8; - setp.gtu.f32 %p1, %f9, 0f40800000; - selp.b32 %r12, %r10, 0, %p1; - or.b32 %r9, %r12, %r9; - selp.b32 %r12, %r9, 0, %p0; - shr.u32 %r12, %r12, 31; - shr.u32 %r11, %r11, 31; - setp.eq.s32 %p1, %r12, %r11; - @%p1 bra BB8_42; - bra.uni BB8_39; -BB8_42: // in Loop: Header=BB8_41 Depth=2 - mov.u32 %r10, %r8; - bra.uni BB8_40; -BB8_39: // %not_all_continued_or_breaked.i - // in Loop: Header=BB8_41 Depth=2 - mul.f32 %f9, %f6, %f6; - not.b32 %r11, %r9; - and.b32 %r10, %r10, %r11; - sub.f32 %f8, %f8, %f9; - add.f32 %f8, %f4, %f8; - add.f32 %f7, %f7, %f7; - fma.rn.f32 %f6, %f6, %f7, %f5; - mov.f32 %f7, %f8; -BB8_40: // %for_step.i - // in Loop: Header=BB8_41 Depth=2 - setp.ne.s32 %p1, %r10, 0; - selp.u32 %r11, 1, 0, %p1; - add.s32 %r7, %r7, %r11; - setp.lt.s32 %p1, %r7, %r2; - selp.b32 %r10, %r10, 0, %p1; - selp.b32 %r11, %r10, 0, %p0; - setp.gt.s32 %p1, %r11, -1; - @%p1 bra BB8_7; - bra.uni BB8_41; -BB8_6: // in Loop: Header=BB8_3 Depth=1 - mov.u32 %r7, %r8; -BB8_7: // %mandel___vyfvyfvyi.exit - // in Loop: Header=BB8_3 Depth=1 - setp.lt.s32 %p0, %r0, 1; - @%p0 bra BB8_44; -// BB#8: // %pl_dolane.i - // in Loop: Header=BB8_3 Depth=1 - mul.lo.s32 %r8, %r6, %r0; - shl.b32 %r8, %r8, 2; - cvt.s64.s32 %rl1, %r8; - add.s64 %rl1, %rl1, %rl0; - st.u32 [%rl1], %r7; -BB8_44: // %foreach_reset128 - // in Loop: Header=BB8_3 Depth=1 - add.s32 %r6, %r6, 1; - add.s32 %r3, %r3, %r5; - setp.eq.s32 %p0, %r6, %r1; - @%p0 bra BB8_45; - bra.uni BB8_3; -BB8_9: // %for_test.preheader - setp.lt.s32 %p0, %r1, 1; - @%p0 bra BB8_45; -// BB#10: // %outer_not_in_extras.preheader.lr.ph - setp.gt.s32 %p0, %r2, 0; - mov.u32 %r3, 0; - selp.b32 %r4, -1, 0, %p0; - shl.b32 %r5, %r0, 2; - mov.u32 %r6, %r3; -BB8_11: // %outer_not_in_extras.preheader - // =>This Loop Header: Depth=1 - // Child Loop BB8_23 Depth 2 - // Child Loop BB8_20 Depth 2 - // Child Loop BB8_19 Depth 2 - // Child Loop BB8_14 Depth 3 - setp.lt.s32 %p0, %r0, 1; - @%p0 bra BB8_28; -// BB#12: // %foreach_full_body.lr.ph - // in Loop: Header=BB8_11 Depth=1 - setp.lt.s32 %p0, %r4, 0; - mov.u32 %r7, %r0; - mov.u32 %r8, %r3; - @%p0 bra BB8_13; - bra.uni BB8_20; -BB8_13: // in Loop: Header=BB8_11 Depth=1 - mov.u64 %rl1, 0; - cvt.rn.f32.s32 %f4, %r6; - fma.rn.f32 %f4, %f2, %f4, %f1; - mul.lo.s32 %r7, %r6, %r0; -BB8_19: // %for_loop.i281.lr.ph.us - // Parent Loop BB8_11 Depth=1 - // => This Loop Header: Depth=2 - // Child Loop BB8_14 Depth 3 - cvt.u32.u64 %r8, %rl1; - cvt.rn.f32.s32 %f5, %r8; - fma.rn.f32 %f5, %f3, %f5, %f0; - mov.u32 %r10, 0; - mov.u32 %r12, %r4; - mov.u32 %r11, %r10; - mov.u32 %r9, %r10; - mov.f32 %f7, %f5; - mov.f32 %f6, %f4; -BB8_14: // %for_loop.i281.us - // Parent Loop BB8_11 Depth=1 - // Parent Loop BB8_19 Depth=2 - // => This Inner Loop Header: Depth=3 - mul.f32 %f8, %f7, %f7; - fma.rn.f32 %f9, %f6, %f6, %f8; - setp.gtu.f32 %p0, %f9, 0f40800000; - selp.b32 %r13, %r12, 0, %p0; - or.b32 %r11, %r13, %r11; - shr.u32 %r13, %r11, 31; - shr.u32 %r14, %r12, 31; - setp.eq.s32 %p0, %r13, %r14; - @%p0 bra BB8_15; - bra.uni BB8_16; -BB8_15: // in Loop: Header=BB8_14 Depth=3 - mov.u32 %r12, %r10; - bra.uni BB8_17; -BB8_16: // %not_all_continued_or_breaked.i295.us - // in Loop: Header=BB8_14 Depth=3 - mul.f32 %f9, %f6, %f6; - not.b32 %r13, %r11; - and.b32 %r12, %r12, %r13; - sub.f32 %f8, %f8, %f9; - add.f32 %f8, %f5, %f8; - add.f32 %f7, %f7, %f7; - fma.rn.f32 %f6, %f6, %f7, %f4; - mov.f32 %f7, %f8; -BB8_17: // %for_step.i264.us - // in Loop: Header=BB8_14 Depth=3 - setp.ne.s32 %p0, %r12, 0; - selp.u32 %r13, 1, 0, %p0; - add.s32 %r9, %r9, %r13; - setp.lt.s32 %p0, %r9, %r2; - selp.b32 %r12, %r12, 0, %p0; - setp.lt.s32 %p0, %r12, 0; - @%p0 bra BB8_14; -// BB#18: // %mandel___vyfvyfvyi.exit296.us - // in Loop: Header=BB8_19 Depth=2 - add.s32 %r8, %r8, %r7; - shl.b32 %r8, %r8, 2; - cvt.s64.s32 %rl2, %r8; - add.s64 %rl2, %rl2, %rl0; - st.u32 [%rl2], %r9; - add.s64 %rl1, %rl1, 1; - cvt.u32.u64 %r8, %rl1; - setp.eq.s32 %p0, %r8, %r0; - @%p0 bra BB8_27; - bra.uni BB8_19; -BB8_20: // %mandel___vyfvyfvyi.exit296 - // Parent Loop BB8_11 Depth=1 - // => This Inner Loop Header: Depth=2 - cvt.s64.s32 %rl1, %r8; - add.s64 %rl1, %rl1, %rl0; - mov.u32 %r9, 0; - st.u32 [%rl1], %r9; - add.s32 %r8, %r8, 4; - add.s32 %r7, %r7, -1; - setp.eq.s32 %p0, %r7, 0; - @%p0 bra BB8_27; - bra.uni BB8_20; -BB8_28: // %partial_inner_all_outer - // in Loop: Header=BB8_11 Depth=1 - @%p0 bra BB8_27; -// BB#29: // %partial_inner_only - // in Loop: Header=BB8_11 Depth=1 - setp.gt.s32 %p0, %r0, 0; - mov.u32 %r8, 0; - fma.rn.f32 %f4, %f3, 0f00000000, %f0; - cvt.rn.f32.s32 %f5, %r6; - fma.rn.f32 %f5, %f2, %f5, %f1; - selp.b32 %r7, %r4, 0, %p0; - setp.lt.s32 %p1, %r7, 0; - mov.u32 %r10, %r4; - mov.u32 %r9, %r8; - mov.u32 %r7, %r8; - mov.f32 %f7, %f4; - mov.f32 %f6, %f5; - @%p1 bra BB8_23; - bra.uni BB8_30; -BB8_23: // %for_loop.i332 - // Parent Loop BB8_11 Depth=1 - // => This Inner Loop Header: Depth=2 - selp.b32 %r11, %r10, 0, %p0; - mul.f32 %f8, %f7, %f7; - fma.rn.f32 %f9, %f6, %f6, %f8; - setp.gtu.f32 %p1, %f9, 0f40800000; - selp.b32 %r12, %r10, 0, %p1; - or.b32 %r9, %r12, %r9; - selp.b32 %r12, %r9, 0, %p0; - shr.u32 %r12, %r12, 31; - shr.u32 %r11, %r11, 31; - setp.eq.s32 %p1, %r12, %r11; - @%p1 bra BB8_24; - bra.uni BB8_21; -BB8_24: // in Loop: Header=BB8_23 Depth=2 - mov.u32 %r10, %r8; - bra.uni BB8_22; -BB8_21: // %not_all_continued_or_breaked.i346 - // in Loop: Header=BB8_23 Depth=2 - mul.f32 %f9, %f6, %f6; - not.b32 %r11, %r9; - and.b32 %r10, %r10, %r11; - sub.f32 %f8, %f8, %f9; - add.f32 %f8, %f4, %f8; - add.f32 %f7, %f7, %f7; - fma.rn.f32 %f6, %f6, %f7, %f5; - mov.f32 %f7, %f8; -BB8_22: // %for_step.i313 - // in Loop: Header=BB8_23 Depth=2 - setp.ne.s32 %p1, %r10, 0; - selp.u32 %r11, 1, 0, %p1; - add.s32 %r7, %r7, %r11; - setp.lt.s32 %p1, %r7, %r2; - selp.b32 %r10, %r10, 0, %p1; - selp.b32 %r11, %r10, 0, %p0; - setp.gt.s32 %p1, %r11, -1; - @%p1 bra BB8_25; - bra.uni BB8_23; -BB8_30: // in Loop: Header=BB8_11 Depth=1 - mov.u32 %r7, %r8; -BB8_25: // %mandel___vyfvyfvyi.exit347 - // in Loop: Header=BB8_11 Depth=1 - setp.lt.s32 %p0, %r0, 1; - @%p0 bra BB8_27; -// BB#26: // %pl_dolane.i452 - // in Loop: Header=BB8_11 Depth=1 - mul.lo.s32 %r8, %r6, %r0; - shl.b32 %r8, %r8, 2; - cvt.s64.s32 %rl1, %r8; - add.s64 %rl1, %rl1, %rl0; - st.u32 [%rl1], %r7; -BB8_27: // %foreach_reset - // in Loop: Header=BB8_11 Depth=1 - add.s32 %r6, %r6, 1; - add.s32 %r3, %r3, %r5; - setp.eq.s32 %p0, %r6, %r1; - @%p0 bra BB8_45; - bra.uni BB8_11; -BB8_45: // %for_exit - ret; -} - - // .globl mandelbrot_ispc -.func mandelbrot_ispc( - .param .b32 mandelbrot_ispc_param_0, - .param .b32 mandelbrot_ispc_param_1, - .param .b32 mandelbrot_ispc_param_2, - .param .b32 mandelbrot_ispc_param_3, - .param .b32 mandelbrot_ispc_param_4, - .param .b32 mandelbrot_ispc_param_5, - .param .b32 mandelbrot_ispc_param_6, - .param .b64 mandelbrot_ispc_param_7 -) // @mandelbrot_ispc -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: // %allocas - ld.param.u32 %r0, [mandelbrot_ispc_param_5]; - setp.lt.s32 %p0, %r0, 1; - @%p0 bra BB9_18; -// BB#1: // %outer_not_in_extras.preheader.lr.ph - ld.param.f32 %f0, [mandelbrot_ispc_param_0]; - ld.param.f32 %f1, [mandelbrot_ispc_param_1]; - ld.param.f32 %f3, [mandelbrot_ispc_param_2]; - ld.param.f32 %f2, [mandelbrot_ispc_param_3]; - ld.param.u32 %r1, [mandelbrot_ispc_param_4]; - ld.param.u32 %r2, [mandelbrot_ispc_param_6]; - ld.param.u64 %rl0, [mandelbrot_ispc_param_7]; - sub.f32 %f3, %f3, %f0; - cvt.rn.f32.s32 %f4, %r1; - sub.f32 %f2, %f2, %f1; - cvt.rn.f32.s32 %f5, %r0; - div.rn.f32 %f2, %f2, %f5; - div.rn.f32 %f3, %f3, %f4; - setp.gt.s32 %p0, %r2, 0; - mov.u32 %r3, 0; - selp.b32 %r4, -1, 0, %p0; -BB9_2: // %outer_not_in_extras.preheader - // =>This Loop Header: Depth=1 - // Child Loop BB9_13 Depth 2 - // Child Loop BB9_4 Depth 2 - // Child Loop BB9_9 Depth 3 - setp.lt.s32 %p0, %r1, 1; - @%p0 bra BB9_19; -// BB#3: // %foreach_full_body.lr.ph - // in Loop: Header=BB9_2 Depth=1 - mov.u64 %rl1, 0; - cvt.rn.f32.s32 %f4, %r3; - fma.rn.f32 %f4, %f2, %f4, %f1; - mul.lo.s32 %r5, %r3, %r1; -BB9_4: // %foreach_full_body - // Parent Loop BB9_2 Depth=1 - // => This Loop Header: Depth=2 - // Child Loop BB9_9 Depth 3 - setp.lt.s32 %p0, %r4, 0; - cvt.u32.u64 %r6, %rl1; - cvt.rn.f32.s32 %f5, %r6; - fma.rn.f32 %f5, %f3, %f5, %f0; - mov.u32 %r8, 0; - mov.u32 %r10, %r4; - mov.u32 %r9, %r8; - mov.u32 %r7, %r8; - mov.f32 %f7, %f5; - mov.f32 %f6, %f4; - @%p0 bra BB9_9; - bra.uni BB9_5; -BB9_9: // %for_loop.i281 - // Parent Loop BB9_2 Depth=1 - // Parent Loop BB9_4 Depth=2 - // => This Inner Loop Header: Depth=3 - mul.f32 %f8, %f7, %f7; - fma.rn.f32 %f9, %f6, %f6, %f8; - setp.gtu.f32 %p0, %f9, 0f40800000; - selp.b32 %r11, %r10, 0, %p0; - or.b32 %r9, %r11, %r9; - shr.u32 %r11, %r9, 31; - shr.u32 %r12, %r10, 31; - setp.eq.s32 %p0, %r11, %r12; - @%p0 bra BB9_10; - bra.uni BB9_7; -BB9_10: // in Loop: Header=BB9_9 Depth=3 - mov.u32 %r10, %r8; - bra.uni BB9_8; -BB9_7: // %not_all_continued_or_breaked.i295 - // in Loop: Header=BB9_9 Depth=3 - mul.f32 %f9, %f6, %f6; - not.b32 %r11, %r9; - and.b32 %r10, %r10, %r11; - sub.f32 %f8, %f8, %f9; - add.f32 %f8, %f5, %f8; - add.f32 %f7, %f7, %f7; - fma.rn.f32 %f6, %f6, %f7, %f4; - mov.f32 %f7, %f8; -BB9_8: // %for_step.i264 - // in Loop: Header=BB9_9 Depth=3 - setp.ne.s32 %p0, %r10, 0; - selp.u32 %r11, 1, 0, %p0; - add.s32 %r7, %r7, %r11; - setp.lt.s32 %p0, %r7, %r2; - selp.b32 %r10, %r10, 0, %p0; - setp.gt.s32 %p0, %r10, -1; - @%p0 bra BB9_6; - bra.uni BB9_9; -BB9_5: // in Loop: Header=BB9_4 Depth=2 - mov.u32 %r7, %r8; -BB9_6: // %mandel___vyfvyfvyi.exit296 - // in Loop: Header=BB9_4 Depth=2 - add.s32 %r6, %r6, %r5; - shl.b32 %r6, %r6, 2; - cvt.s64.s32 %rl2, %r6; - add.s64 %rl2, %rl2, %rl0; - st.u32 [%rl2], %r7; - add.s64 %rl1, %rl1, 1; - cvt.u32.u64 %r6, %rl1; - setp.eq.s32 %p0, %r6, %r1; - @%p0 bra BB9_17; - bra.uni BB9_4; -BB9_19: // %partial_inner_all_outer - // in Loop: Header=BB9_2 Depth=1 - @%p0 bra BB9_17; -// BB#20: // %partial_inner_only - // in Loop: Header=BB9_2 Depth=1 - setp.gt.s32 %p0, %r1, 0; - mov.u32 %r6, 0; - fma.rn.f32 %f4, %f3, 0f00000000, %f0; - cvt.rn.f32.s32 %f5, %r3; - fma.rn.f32 %f5, %f2, %f5, %f1; - selp.b32 %r5, %r4, 0, %p0; - setp.lt.s32 %p1, %r5, 0; - mov.u32 %r8, %r4; - mov.u32 %r7, %r6; - mov.u32 %r5, %r6; - mov.f32 %f7, %f4; - mov.f32 %f6, %f5; - @%p1 bra BB9_13; - bra.uni BB9_21; -BB9_13: // %for_loop.i332 - // Parent Loop BB9_2 Depth=1 - // => This Inner Loop Header: Depth=2 - selp.b32 %r9, %r8, 0, %p0; - mul.f32 %f8, %f7, %f7; - fma.rn.f32 %f9, %f6, %f6, %f8; - setp.gtu.f32 %p1, %f9, 0f40800000; - selp.b32 %r10, %r8, 0, %p1; - or.b32 %r7, %r10, %r7; - selp.b32 %r10, %r7, 0, %p0; - shr.u32 %r10, %r10, 31; - shr.u32 %r9, %r9, 31; - setp.eq.s32 %p1, %r10, %r9; - @%p1 bra BB9_14; - bra.uni BB9_11; -BB9_14: // in Loop: Header=BB9_13 Depth=2 - mov.u32 %r8, %r6; - bra.uni BB9_12; -BB9_11: // %not_all_continued_or_breaked.i346 - // in Loop: Header=BB9_13 Depth=2 - mul.f32 %f9, %f6, %f6; - not.b32 %r9, %r7; - and.b32 %r8, %r8, %r9; - sub.f32 %f8, %f8, %f9; - add.f32 %f8, %f4, %f8; - add.f32 %f7, %f7, %f7; - fma.rn.f32 %f6, %f6, %f7, %f5; - mov.f32 %f7, %f8; -BB9_12: // %for_step.i313 - // in Loop: Header=BB9_13 Depth=2 - setp.ne.s32 %p1, %r8, 0; - selp.u32 %r9, 1, 0, %p1; - add.s32 %r5, %r5, %r9; - setp.lt.s32 %p1, %r5, %r2; - selp.b32 %r8, %r8, 0, %p1; - selp.b32 %r9, %r8, 0, %p0; - setp.gt.s32 %p1, %r9, -1; - @%p1 bra BB9_15; - bra.uni BB9_13; -BB9_21: // in Loop: Header=BB9_2 Depth=1 - mov.u32 %r5, %r6; -BB9_15: // %mandel___vyfvyfvyi.exit347 - // in Loop: Header=BB9_2 Depth=1 - setp.lt.s32 %p0, %r1, 1; - @%p0 bra BB9_17; -// BB#16: // %pl_dolane.i - // in Loop: Header=BB9_2 Depth=1 - mul.lo.s32 %r6, %r3, %r1; - shl.b32 %r6, %r6, 2; - cvt.s64.s32 %rl1, %r6; - add.s64 %rl1, %rl1, %rl0; - st.u32 [%rl1], %r5; -BB9_17: // %foreach_reset - // in Loop: Header=BB9_2 Depth=1 - add.s32 %r3, %r3, 1; - setp.eq.s32 %p0, %r3, %r0; - @%p0 bra BB9_18; - bra.uni BB9_2; -BB9_18: // %for_exit - ret; -} - diff --git a/examples/mandelbrot/out.s b/examples/mandelbrot/out.s deleted file mode 100644 index 434a1fb560b5f445476f798770e737657d9507fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9256 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 diff --git a/examples/mandelbrot/out1.o b/examples/mandelbrot/out1.o deleted file mode 100644 index 61d76b884a4797085e31e385954734859333a9f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7336 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 diff --git a/examples/mandelbrot_tasks/Makefile b/examples/mandelbrot_tasks/Makefile index cfbad4c1..51866b32 100644 --- a/examples/mandelbrot_tasks/Makefile +++ b/examples/mandelbrot_tasks/Makefile @@ -2,7 +2,7 @@ EXAMPLE=mandelbrot_tasks CPP_SRC=mandelbrot_tasks.cpp mandelbrot_tasks_serial.cpp ISPC_SRC=mandelbrot_tasks.ispc -ISPC_IA_TARGETS=avx1-i32x16 +ISPC_IA_TARGETS=sse2-i32x4,sse4-i32x8,avx1-i32x16,avx2-i32x16 ISPC_ARM_TARGETS=neon include ../common.mk diff --git a/examples/rt/Makefile b/examples/rt/Makefile index 0c72f104..e52b02e4 100644 --- a/examples/rt/Makefile +++ b/examples/rt/Makefile @@ -2,7 +2,7 @@ EXAMPLE=rt CPP_SRC=rt.cpp rt_serial.cpp ISPC_SRC=rt.ispc -ISPC_IA_TARGETS=avx1-i32x8 +ISPC_IA_TARGETS=sse2-i32x4,sse4-i32x8,avx1-i32x8,avx2-i32x8 ISPC_ARM_TARGETS=neon include ../common.mk diff --git a/examples/sort/sort b/examples/sort/sort deleted file mode 100755 index 51e36ea7b7b20a3cf67c7a5c683e38b6807c2329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132221 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≧?yDI>wERZ_>Wyhzc>{k*g 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 diff --git a/examples/stencil/a.out b/examples/stencil/a.out deleted file mode 100755 index db6400a6db1157dff6d30f8fa7c3d928b6ea0040..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27015 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 -#include -#include - -// Error Code string definitions here -typedef struct -{ - char const *error_string; - int error_id; -} s_CudaErrorStr; - -/** - * Error codes - */ -static s_CudaErrorStr sCudaDrvErrorString[] = -{ - /** - * The API call returned with no errors. In the case of query calls, this - * can also mean that the operation being queried is complete (see - * ::cuEventQuery() and ::cuStreamQuery()). - */ - { "CUDA_SUCCESS", 0 }, - - /** - * This indicates that one or more of the parameters passed to the API call - * is not within an acceptable range of values. - */ - { "CUDA_ERROR_INVALID_VALUE", 1 }, - - /** - * The API call failed because it was unable to allocate enough memory to - * perform the requested operation. - */ - { "CUDA_ERROR_OUT_OF_MEMORY", 2 }, - - /** - * This indicates that the CUDA driver has not been initialized with - * ::cuInit() or that initialization has failed. - */ - { "CUDA_ERROR_NOT_INITIALIZED", 3 }, - - /** - * This indicates that the CUDA driver is in the process of shutting down. - */ - { "CUDA_ERROR_DEINITIALIZED", 4 }, - - /** - * This indicates profiling APIs are called while application is running - * in visual profiler mode. - */ - { "CUDA_ERROR_PROFILER_DISABLED", 5 }, - /** - * This indicates profiling has not been initialized for this context. - * Call cuProfilerInitialize() to resolve this. - */ - { "CUDA_ERROR_PROFILER_NOT_INITIALIZED", 6 }, - /** - * This indicates profiler has already been started and probably - * cuProfilerStart() is incorrectly called. - */ - { "CUDA_ERROR_PROFILER_ALREADY_STARTED", 7 }, - /** - * This indicates profiler has already been stopped and probably - * cuProfilerStop() is incorrectly called. - */ - { "CUDA_ERROR_PROFILER_ALREADY_STOPPED", 8 }, - /** - * This indicates that no CUDA-capable devices were detected by the installed - * CUDA driver. - */ - { "CUDA_ERROR_NO_DEVICE (no CUDA-capable devices were detected)", 100 }, - - /** - * This indicates that the device ordinal supplied by the user does not - * correspond to a valid CUDA device. - */ - { "CUDA_ERROR_INVALID_DEVICE (device specified is not a valid CUDA device)", 101 }, - - - /** - * This indicates that the device kernel image is invalid. This can also - * indicate an invalid CUDA module. - */ - { "CUDA_ERROR_INVALID_IMAGE", 200 }, - - /** - * This most frequently indicates that there is no context bound to the - * current thread. This can also be returned if the context passed to an - * API call is not a valid handle (such as a context that has had - * ::cuCtxDestroy() invoked on it). This can also be returned if a user - * mixes different API versions (i.e. 3010 context with 3020 API calls). - * See ::cuCtxGetApiVersion() for more details. - */ - { "CUDA_ERROR_INVALID_CONTEXT", 201 }, - - /** - * This indicated that the context being supplied as a parameter to the - * API call was already the active context. - * \deprecated - * This error return is deprecated as of CUDA 3.2. It is no longer an - * error to attempt to push the active context via ::cuCtxPushCurrent(). - */ - { "CUDA_ERROR_CONTEXT_ALREADY_CURRENT", 202 }, - - /** - * This indicates that a map or register operation has failed. - */ - { "CUDA_ERROR_MAP_FAILED", 205 }, - - /** - * This indicates that an unmap or unregister operation has failed. - */ - { "CUDA_ERROR_UNMAP_FAILED", 206 }, - - /** - * This indicates that the specified array is currently mapped and thus - * cannot be destroyed. - */ - { "CUDA_ERROR_ARRAY_IS_MAPPED", 207 }, - - /** - * This indicates that the resource is already mapped. - */ - { "CUDA_ERROR_ALREADY_MAPPED", 208 }, - - /** - * This indicates that there is no kernel image available that is suitable - * for the device. This can occur when a user specifies code generation - * options for a particular CUDA source file that do not include the - * corresponding device configuration. - */ - { "CUDA_ERROR_NO_BINARY_FOR_GPU", 209 }, - - /** - * This indicates that a resource has already been acquired. - */ - { "CUDA_ERROR_ALREADY_ACQUIRED", 210 }, - - /** - * This indicates that a resource is not mapped. - */ - { "CUDA_ERROR_NOT_MAPPED", 211 }, - - /** - * This indicates that a mapped resource is not available for access as an - * array. - */ - { "CUDA_ERROR_NOT_MAPPED_AS_ARRAY", 212 }, - - /** - * This indicates that a mapped resource is not available for access as a - * pointer. - */ - { "CUDA_ERROR_NOT_MAPPED_AS_POINTER", 213 }, - - /** - * This indicates that an uncorrectable ECC error was detected during - * execution. - */ - { "CUDA_ERROR_ECC_UNCORRECTABLE", 214 }, - - /** - * This indicates that the ::CUlimit passed to the API call is not - * supported by the active device. - */ - { "CUDA_ERROR_UNSUPPORTED_LIMIT", 215 }, - - /** - * This indicates that the ::CUcontext passed to the API call can - * only be bound to a single CPU thread at a time but is already - * bound to a CPU thread. - */ - { "CUDA_ERROR_CONTEXT_ALREADY_IN_USE", 216 }, - - /** - * This indicates that peer access is not supported across the given - * devices. - */ - { "CUDA_ERROR_PEER_ACCESS_UNSUPPORTED", 217}, - - /** - * This indicates that the device kernel source is invalid. - */ - { "CUDA_ERROR_INVALID_SOURCE", 300 }, - - /** - * This indicates that the file specified was not found. - */ - { "CUDA_ERROR_FILE_NOT_FOUND", 301 }, - - /** - * This indicates that a link to a shared object failed to resolve. - */ - { "CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND", 302 }, - - /** - * This indicates that initialization of a shared object failed. - */ - { "CUDA_ERROR_SHARED_OBJECT_INIT_FAILED", 303 }, - - /** - * This indicates that an OS call failed. - */ - { "CUDA_ERROR_OPERATING_SYSTEM", 304 }, - - - /** - * This indicates that a resource handle passed to the API call was not - * valid. Resource handles are opaque types like ::CUstream and ::CUevent. - */ - { "CUDA_ERROR_INVALID_HANDLE", 400 }, - - - /** - * This indicates that a named symbol was not found. Examples of symbols - * are global/constant variable names, texture names }, and surface names. - */ - { "CUDA_ERROR_NOT_FOUND", 500 }, - - - /** - * This indicates that asynchronous operations issued previously have not - * completed yet. This result is not actually an error, but must be indicated - * differently than ::CUDA_SUCCESS (which indicates completion). Calls that - * may return this value include ::cuEventQuery() and ::cuStreamQuery(). - */ - { "CUDA_ERROR_NOT_READY", 600 }, - - - /** - * An exception occurred on the device while executing a kernel. Common - * causes include dereferencing an invalid device pointer and accessing - * out of bounds shared memory. The context cannot be used }, so it must - * be destroyed (and a new one should be created). All existing device - * memory allocations from this context are invalid and must be - * reconstructed if the program is to continue using CUDA. - */ - { "CUDA_ERROR_LAUNCH_FAILED", 700 }, - - /** - * This indicates that a launch did not occur because it did not have - * appropriate resources. This error usually indicates that the user has - * attempted to pass too many arguments to the device kernel, or the - * kernel launch specifies too many threads for the kernel's register - * count. Passing arguments of the wrong size (i.e. a 64-bit pointer - * when a 32-bit int is expected) is equivalent to passing too many - * arguments and can also result in this error. - */ - { "CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES", 701 }, - - /** - * This indicates that the device kernel took too long to execute. This can - * only occur if timeouts are enabled - see the device attribute - * ::CU_DEVICE_ATTRIBUTE_KERNEL_EXEC_TIMEOUT for more information. The - * context cannot be used (and must be destroyed similar to - * ::CUDA_ERROR_LAUNCH_FAILED). All existing device memory allocations from - * this context are invalid and must be reconstructed if the program is to - * continue using CUDA. - */ - { "CUDA_ERROR_LAUNCH_TIMEOUT", 702 }, - - /** - * This error indicates a kernel launch that uses an incompatible texturing - * mode. - */ - { "CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING", 703 }, - - /** - * This error indicates that a call to ::cuCtxEnablePeerAccess() is - * trying to re-enable peer access to a context which has already - * had peer access to it enabled. - */ - { "CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED", 704 }, - - /** - * This error indicates that ::cuCtxDisablePeerAccess() is - * trying to disable peer access which has not been enabled yet - * via ::cuCtxEnablePeerAccess(). - */ - { "CUDA_ERROR_PEER_ACCESS_NOT_ENABLED", 705 }, - - /** - * This error indicates that the primary context for the specified device - * has already been initialized. - */ - { "CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE", 708 }, - - /** - * This error indicates that the context current to the calling thread - * has been destroyed using ::cuCtxDestroy }, or is a primary context which - * has not yet been initialized. - */ - { "CUDA_ERROR_CONTEXT_IS_DESTROYED", 709 }, - - /** - * A device-side assert triggered during kernel execution. The context - * cannot be used anymore, and must be destroyed. All existing device - * memory allocations from this context are invalid and must be - * reconstructed if the program is to continue using CUDA. - */ - { "CUDA_ERROR_ASSERT", 710 }, - - /** - * This error indicates that the hardware resources required to enable - * peer access have been exhausted for one or more of the devices - * passed to ::cuCtxEnablePeerAccess(). - */ - { "CUDA_ERROR_TOO_MANY_PEERS", 711 }, - - /** - * This error indicates that the memory range passed to ::cuMemHostRegister() - * has already been registered. - */ - { "CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED", 712 }, - - /** - * This error indicates that the pointer passed to ::cuMemHostUnregister() - * does not correspond to any currently registered memory region. - */ - { "CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED", 713 }, - - /** - * This error indicates that the attempted operation is not permitted. - */ - { "CUDA_ERROR_NOT_PERMITTED", 800 }, - - /** - * This error indicates that the attempted operation is not supported - * on the current system or device. - */ - { "CUDA_ERROR_NOT_SUPPORTED", 801 }, - - /** - * This indicates that an unknown internal error has occurred. - */ - { "CUDA_ERROR_UNKNOWN", 999 }, - { NULL, -1 } -}; - -// This is just a linear search through the array, since the error_id's are not -// always ocurring consecutively -const char * getCudaDrvErrorString(CUresult error_id) -{ - int index = 0; - while (sCudaDrvErrorString[index].error_id != error_id && - sCudaDrvErrorString[index].error_id != -1) - { - index++; - } - if (sCudaDrvErrorString[index].error_id == error_id) - return (const char *)sCudaDrvErrorString[index].error_string; - else - return (const char *)"CUDA_ERROR not found!"; -} - -#endif diff --git a/examples/stencil/err b/examples/stencil/err deleted file mode 100644 index e69de29b..00000000 diff --git a/examples/stencil/info b/examples/stencil/info deleted file mode 100644 index 4fc9105f..00000000 --- a/examples/stencil/info +++ /dev/null @@ -1,5 +0,0 @@ -I have been working with sort example, attempting to use ISPC_USE_OMP for tasking and adding example for sort_paralle.cpp which uses __gnu_parallel::sort to compare apples with apples, but clang has no support for OpenMP. - -The reason to use ISPC_USE_OMP is to control thread-affinity on multi-socket systems. For bandwidth bound throughput, the tasking system based on pthread make it messy to control thread-affinity and w/o this for bandwidth bound work-loads performance may suffer.. - -I used sort example to begin with diff --git a/examples/stencil/stencil.cu b/examples/stencil/stencil.cu deleted file mode 100644 index 63b051e8..00000000 --- a/examples/stencil/stencil.cu +++ /dev/null @@ -1,62 +0,0 @@ -#define programCount 32 -#define programIndex threadIdx.x -#define taskIndex blockIdx.x - -__device__ static void -stencil_step( int x0, int x1, - int y0, int y1, - int z0, int z1, - int Nx, int Ny, int Nz, - const double coef[4], const double vsq[], - const double Ain[], double Aout[]) { - const int Nxy = Nx * Ny; - - -#if 0 - foreach (z = z0 ... z1, y = y0 ... y1, x = x0 ... x1) { -#else - const double coef0 = coef[0]; - const double coef1 = coef[1]; - const double coef2 = coef[2]; - const double coef3 = coef[3]; - for ( int z = z0; z < z1; z++) - for ( int y = y0 ; y < y1; y++) - for ( int xb = x0; xb < x1; xb += programCount) - { - const int x = xb + programIndex; - -#endif - int index = (z * Nxy) + (y * Nx) + x; -#define A_cur(x, y, z) Ain[index + (x) + ((y) * Nx) + ((z) * Nxy)] -#define A_next(x, y, z) Aout[index + (x) + ((y) * Nx) + ((z) * Nxy)] - double div = - coef0 * A_cur(0, 0, 0) + - coef1 * (A_cur(+1, 0, 0) + A_cur(-1, 0, 0) + - A_cur(0, +1, 0) + A_cur(0, -1, 0) + - A_cur(0, 0, +1) + A_cur(0, 0, -1)) + - coef2 * (A_cur(+2, 0, 0) + A_cur(-2, 0, 0) + - A_cur(0, +2, 0) + A_cur(0, -2, 0) + - A_cur(0, 0, +2) + A_cur(0, 0, -2)) + - coef3 * (A_cur(+3, 0, 0) + A_cur(-3, 0, 0) + - A_cur(0, +3, 0) + A_cur(0, -3, 0) + - A_cur(0, 0, +3) + A_cur(0, 0, -3)); - - if (x < x1) - A_next(0, 0, 0) = 2.0 * A_cur(0, 0, 0) - A_next(0, 0, 0) + - vsq[index] * div; - } -} - - -extern "C" -__global__ void -stencil_step_task( int x0, int x1, - int y0, int y1, - int z0, - int Nx, int Ny, int Nz, - const double coef[4], const double vsq[], - const double Ain[], double Aout[]) { - stencil_step(x0, x1, y0, y1, z0+taskIndex, z0+taskIndex+1, - Nx, Ny, Nz, coef, vsq, Ain, Aout); -} - diff --git a/examples/stencil/stencil.ptx b/examples/stencil/stencil.ptx deleted file mode 100644 index e3dcd1ca..00000000 --- a/examples/stencil/stencil.ptx +++ /dev/null @@ -1,267 +0,0 @@ -// -// Generated by NVIDIA NVVM Compiler -// Compiler built on Thu Jul 18 02:37:37 2013 (1374107857) -// Cuda compilation tools, release 5.5, V5.5.0 -// - -.version 3.2 -.target sm_35 -.address_size 64 - - .file 1 "/home/evghenii/soft/ispc-code/ispc/examples/stencil/stencil.cu", 1383254912, 2112 - .file 2 "/usr/local/cuda-5.5/bin/..//include/cuda_device_runtime_api.h", 1375338991, 7655 - -.weak .func (.param .b32 func_retval0) cudaMalloc( - .param .b64 cudaMalloc_param_0, - .param .b64 cudaMalloc_param_1 -) -{ - .reg .s32 %r<2>; - - - mov.u32 %r1, 30; - st.param.b32 [func_retval0+0], %r1; - .loc 2 66 3 - ret; -} - -.weak .func (.param .b32 func_retval0) cudaFuncGetAttributes( - .param .b64 cudaFuncGetAttributes_param_0, - .param .b64 cudaFuncGetAttributes_param_1 -) -{ - .reg .s32 %r<2>; - - - mov.u32 %r1, 30; - st.param.b32 [func_retval0+0], %r1; - .loc 2 71 3 - ret; -} - -.visible .entry stencil_step_task( - .param .u32 stencil_step_task_param_0, - .param .u32 stencil_step_task_param_1, - .param .u32 stencil_step_task_param_2, - .param .u32 stencil_step_task_param_3, - .param .u32 stencil_step_task_param_4, - .param .u32 stencil_step_task_param_5, - .param .u32 stencil_step_task_param_6, - .param .u32 stencil_step_task_param_7, - .param .u64 stencil_step_task_param_8, - .param .u64 stencil_step_task_param_9, - .param .u64 stencil_step_task_param_10, - .param .u64 stencil_step_task_param_11 -) -{ - .reg .pred %p<8>; - .reg .s32 %r<54>; - .reg .s64 %rd<36>; - .reg .f64 %fd<48>; - - - ld.param.u32 %r19, [stencil_step_task_param_0]; - ld.param.u32 %r20, [stencil_step_task_param_1]; - ld.param.u32 %r21, [stencil_step_task_param_2]; - ld.param.u32 %r22, [stencil_step_task_param_3]; - ld.param.u32 %r23, [stencil_step_task_param_4]; - ld.param.u32 %r24, [stencil_step_task_param_5]; - ld.param.u32 %r25, [stencil_step_task_param_6]; - ld.param.u64 %rd4, [stencil_step_task_param_8]; - ld.param.u64 %rd1, [stencil_step_task_param_9]; - ld.param.u64 %rd2, [stencil_step_task_param_10]; - ld.param.u64 %rd3, [stencil_step_task_param_11]; - cvta.to.global.u64 %rd5, %rd4; - .loc 1 59 1 - mov.u32 %r26, %ctaid.x; - add.s32 %r51, %r26, %r23; - add.s32 %r27, %r51, 1; - .loc 1 18 1 - ld.global.f64 %fd1, [%rd5]; - .loc 1 19 1 - ld.global.f64 %fd2, [%rd5+8]; - .loc 1 20 1 - ld.global.f64 %fd3, [%rd5+16]; - .loc 1 21 1 - ld.global.f64 %fd4, [%rd5+24]; - .loc 1 22 1 - setp.ge.s32 %p1, %r51, %r27; - @%p1 bra BB2_11; - - mul.lo.s32 %r28, %r25, %r24; - shl.b32 %r29, %r28, 1; - neg.s32 %r30, %r29; - shl.b32 %r2, %r30, 3; - cvta.to.global.u64 %rd6, %rd2; - cvta.to.global.u64 %rd31, %rd3; - cvta.to.global.u64 %rd32, %rd1; - -BB2_2: - .loc 1 23 1 - setp.ge.s32 %p2, %r21, %r22; - @%p2 bra BB2_10; - - mov.u32 %r52, %r21; - -BB2_4: - .loc 1 24 1 - mov.u32 %r4, %r52; - setp.ge.s32 %p3, %r19, %r20; - @%p3 bra BB2_9; - - .loc 1 29 1 - mul.lo.s32 %r32, %r51, %r28; - mad.lo.s32 %r5, %r4, %r24, %r32; - .loc 1 32 1 - add.s32 %r6, %r24, %r5; - add.s32 %r7, %r5, %r28; - shl.b32 %r33, %r24, 1; - add.s32 %r8, %r5, %r33; - mad.lo.s32 %r9, %r24, -2, %r5; - add.s32 %r10, %r5, %r29; - mad.lo.s32 %r11, %r28, -2, %r5; - add.s32 %r12, %r24, %r8; - mad.lo.s32 %r13, %r28, 3, %r5; - mov.u32 %r53, %r19; - -BB2_6: - .loc 1 26 1 - mov.u32 %r14, %r53; - mov.u32 %r35, %tid.x; - add.s32 %r36, %r35, %r14; - .loc 1 29 1 - add.s32 %r15, %r36, %r5; - mul.wide.s32 %rd7, %r15, 8; - add.s64 %rd8, %rd6, %rd7; - .loc 1 32 1 - ld.global.f64 %fd5, [%rd8]; - ld.global.f64 %fd7, [%rd8+-8]; - ld.global.f64 %fd8, [%rd8+8]; - add.f64 %fd9, %fd8, %fd7; - add.s32 %r37, %r6, %r36; - mul.wide.s32 %rd9, %r37, 8; - add.s64 %rd10, %rd6, %rd9; - .loc 1 32 1 - ld.global.f64 %fd10, [%rd10]; - add.f64 %fd11, %fd9, %fd10; - .loc 1 22 1 - neg.s32 %r39, %r33; - shl.b32 %r40, %r39, 3; - cvt.s64.s32 %rd11, %r40; - add.s64 %rd12, %rd10, %rd11; - .loc 1 32 1 - ld.global.f64 %fd12, [%rd12]; - add.f64 %fd13, %fd11, %fd12; - add.s32 %r41, %r7, %r36; - mul.wide.s32 %rd13, %r41, 8; - add.s64 %rd14, %rd6, %rd13; - .loc 1 32 1 - ld.global.f64 %fd14, [%rd14]; - add.f64 %fd15, %fd13, %fd14; - cvt.s64.s32 %rd15, %r2; - add.s64 %rd16, %rd14, %rd15; - .loc 1 32 1 - ld.global.f64 %fd16, [%rd16]; - add.f64 %fd17, %fd15, %fd16; - mul.f64 %fd18, %fd2, %fd17; - fma.rn.f64 %fd19, %fd1, %fd5, %fd18; - ld.global.f64 %fd20, [%rd8+-16]; - ld.global.f64 %fd21, [%rd8+16]; - add.f64 %fd22, %fd21, %fd20; - add.s32 %r42, %r8, %r36; - mul.wide.s32 %rd17, %r42, 8; - add.s64 %rd18, %rd6, %rd17; - .loc 1 32 1 - ld.global.f64 %fd23, [%rd18]; - add.f64 %fd24, %fd22, %fd23; - add.s32 %r43, %r9, %r36; - mul.wide.s32 %rd19, %r43, 8; - add.s64 %rd20, %rd6, %rd19; - .loc 1 32 1 - ld.global.f64 %fd25, [%rd20]; - add.f64 %fd26, %fd24, %fd25; - add.s32 %r44, %r10, %r36; - mul.wide.s32 %rd21, %r44, 8; - add.s64 %rd22, %rd6, %rd21; - .loc 1 32 1 - ld.global.f64 %fd27, [%rd22]; - add.f64 %fd28, %fd26, %fd27; - add.s32 %r45, %r11, %r36; - mul.wide.s32 %rd23, %r45, 8; - add.s64 %rd24, %rd6, %rd23; - .loc 1 32 1 - ld.global.f64 %fd29, [%rd24]; - add.f64 %fd30, %fd28, %fd29; - fma.rn.f64 %fd31, %fd3, %fd30, %fd19; - ld.global.f64 %fd32, [%rd8+-24]; - ld.global.f64 %fd33, [%rd8+24]; - add.f64 %fd34, %fd33, %fd32; - add.s32 %r46, %r12, %r36; - mul.wide.s32 %rd25, %r46, 8; - add.s64 %rd26, %rd6, %rd25; - .loc 1 32 1 - ld.global.f64 %fd35, [%rd26]; - add.f64 %fd36, %fd34, %fd35; - add.s64 %rd27, %rd12, %rd11; - .loc 1 32 1 - ld.global.f64 %fd37, [%rd27]; - add.f64 %fd38, %fd36, %fd37; - add.s32 %r47, %r13, %r36; - mul.wide.s32 %rd28, %r47, 8; - add.s64 %rd29, %rd6, %rd28; - .loc 1 32 1 - ld.global.f64 %fd39, [%rd29]; - add.f64 %fd40, %fd38, %fd39; - add.s64 %rd30, %rd16, %rd15; - .loc 1 32 1 - ld.global.f64 %fd41, [%rd30]; - add.f64 %fd42, %fd40, %fd41; - fma.rn.f64 %fd6, %fd4, %fd42, %fd31; - .loc 1 44 1 - setp.ge.s32 %p4, %r36, %r20; - @%p4 bra BB2_8; - - mul.wide.s32 %rd33, %r15, 8; - add.s64 %rd34, %rd31, %rd33; - .loc 1 45 1 - ld.global.f64 %fd43, [%rd34]; - add.f64 %fd44, %fd5, %fd5; - sub.f64 %fd45, %fd44, %fd43; - add.s64 %rd35, %rd32, %rd33; - .loc 1 45 1 - ld.global.f64 %fd46, [%rd35]; - fma.rn.f64 %fd47, %fd46, %fd6, %fd45; - st.global.f64 [%rd34], %fd47; - -BB2_8: - .loc 1 24 19 - add.s32 %r16, %r14, 32; - .loc 1 24 1 - setp.lt.s32 %p5, %r16, %r20; - mov.u32 %r53, %r16; - @%p5 bra BB2_6; - -BB2_9: - .loc 1 23 18 - add.s32 %r17, %r4, 1; - .loc 1 23 1 - setp.lt.s32 %p6, %r17, %r22; - mov.u32 %r52, %r17; - @%p6 bra BB2_4; - -BB2_10: - .loc 1 22 18 - add.s32 %r51, %r51, 1; - .loc 1 59 1 - add.s32 %r49, %r23, %r26; - add.s32 %r50, %r49, 1; - .loc 1 22 1 - setp.lt.s32 %p7, %r51, %r50; - @%p7 bra BB2_2; - -BB2_11: - .loc 1 61 2 - ret; -} - - diff --git a/examples/stencil/stencil0.ptx b/examples/stencil/stencil0.ptx deleted file mode 100644 index f06a11d9..00000000 --- a/examples/stencil/stencil0.ptx +++ /dev/null @@ -1,224 +0,0 @@ -// -// Generated by NVIDIA NVVM Compiler -// Compiler built on Thu Jul 18 02:37:37 2013 (1374107857) -// Cuda compilation tools, release 5.5, V5.5.0 -// - -.version 3.2 -.target sm_35 -.address_size 64 - - .file 1 "/home/evghenii/soft/ispc-code/ispc/examples/stencil/stencil.cu", 1383254912, 2112 - -) -{ - .reg .s32 %r<2>; - - - mov.u32 %r1, 30; - st.param.b32 [func_retval0+0], %r1; - ret; -} - -.weak .func (.param .b32 func_retval0) cudaFuncGetAttributes( - .param .b64 cudaFuncGetAttributes_param_0, - .param .b64 cudaFuncGetAttributes_param_1 -) -{ - .reg .s32 %r<2>; - - - mov.u32 %r1, 30; - st.param.b32 [func_retval0+0], %r1; - ret; -} - -.visible .entry stencil_step_task( - .param .u32 stencil_step_task_param_0, - .param .u32 stencil_step_task_param_1, - .param .u32 stencil_step_task_param_2, - .param .u32 stencil_step_task_param_3, - .param .u32 stencil_step_task_param_4, - .param .u32 stencil_step_task_param_5, - .param .u32 stencil_step_task_param_6, - .param .u32 stencil_step_task_param_7, - .param .u64 stencil_step_task_param_8, - .param .u64 stencil_step_task_param_9, - .param .u64 stencil_step_task_param_10, - .param .u64 stencil_step_task_param_11 -) -{ - .reg .pred %p<8>; - .reg .s32 %r<54>; - .reg .s64 %rd<36>; - .reg .f64 %fd<48>; - - - ld.param.u32 %r19, [stencil_step_task_param_0]; - ld.param.u32 %r20, [stencil_step_task_param_1]; - ld.param.u32 %r21, [stencil_step_task_param_2]; - ld.param.u32 %r22, [stencil_step_task_param_3]; - ld.param.u32 %r23, [stencil_step_task_param_4]; - ld.param.u32 %r24, [stencil_step_task_param_5]; - ld.param.u32 %r25, [stencil_step_task_param_6]; - ld.param.u64 %rd4, [stencil_step_task_param_8]; - ld.param.u64 %rd1, [stencil_step_task_param_9]; - ld.param.u64 %rd2, [stencil_step_task_param_10]; - ld.param.u64 %rd3, [stencil_step_task_param_11]; - cvta.to.global.u64 %rd5, %rd4; - mov.u32 %r26, %ctaid.x; - add.s32 %r51, %r26, %r23; - add.s32 %r27, %r51, 1; - ld.global.f64 %fd1, [%rd5]; - ld.global.f64 %fd2, [%rd5+8]; - ld.global.f64 %fd3, [%rd5+16]; - ld.global.f64 %fd4, [%rd5+24]; - setp.ge.s32 %p1, %r51, %r27; - @%p1 bra BB2_11; - - mul.lo.s32 %r28, %r25, %r24; - shl.b32 %r29, %r28, 1; - neg.s32 %r30, %r29; - shl.b32 %r2, %r30, 3; - cvta.to.global.u64 %rd6, %rd2; - cvta.to.global.u64 %rd31, %rd3; - cvta.to.global.u64 %rd32, %rd1; - -BB2_2: - setp.ge.s32 %p2, %r21, %r22; - @%p2 bra BB2_10; - - mov.u32 %r52, %r21; - -BB2_4: - mov.u32 %r4, %r52; - setp.ge.s32 %p3, %r19, %r20; - @%p3 bra BB2_9; - - mul.lo.s32 %r32, %r51, %r28; - mad.lo.s32 %r5, %r4, %r24, %r32; - add.s32 %r6, %r24, %r5; - add.s32 %r7, %r5, %r28; - shl.b32 %r33, %r24, 1; - add.s32 %r8, %r5, %r33; - mad.lo.s32 %r9, %r24, -2, %r5; - add.s32 %r10, %r5, %r29; - mad.lo.s32 %r11, %r28, -2, %r5; - add.s32 %r12, %r24, %r8; - mad.lo.s32 %r13, %r28, 3, %r5; - mov.u32 %r53, %r19; - -BB2_6: - mov.u32 %r14, %r53; - mov.u32 %r35, %tid.x; - add.s32 %r36, %r35, %r14; - add.s32 %r15, %r36, %r5; - mul.wide.s32 %rd7, %r15, 8; - add.s64 %rd8, %rd6, %rd7; - ld.global.f64 %fd5, [%rd8]; - ld.global.f64 %fd7, [%rd8+-8]; - ld.global.f64 %fd8, [%rd8+8]; - add.f64 %fd9, %fd8, %fd7; - add.s32 %r37, %r6, %r36; - mul.wide.s32 %rd9, %r37, 8; - add.s64 %rd10, %rd6, %rd9; - ld.global.f64 %fd10, [%rd10]; - add.f64 %fd11, %fd9, %fd10; - neg.s32 %r39, %r33; - shl.b32 %r40, %r39, 3; - cvt.s64.s32 %rd11, %r40; - add.s64 %rd12, %rd10, %rd11; - ld.global.f64 %fd12, [%rd12]; - add.f64 %fd13, %fd11, %fd12; - add.s32 %r41, %r7, %r36; - mul.wide.s32 %rd13, %r41, 8; - add.s64 %rd14, %rd6, %rd13; - ld.global.f64 %fd14, [%rd14]; - add.f64 %fd15, %fd13, %fd14; - cvt.s64.s32 %rd15, %r2; - add.s64 %rd16, %rd14, %rd15; - ld.global.f64 %fd16, [%rd16]; - add.f64 %fd17, %fd15, %fd16; - mul.f64 %fd18, %fd2, %fd17; - fma.rn.f64 %fd19, %fd1, %fd5, %fd18; - ld.global.f64 %fd20, [%rd8+-16]; - ld.global.f64 %fd21, [%rd8+16]; - add.f64 %fd22, %fd21, %fd20; - add.s32 %r42, %r8, %r36; - mul.wide.s32 %rd17, %r42, 8; - add.s64 %rd18, %rd6, %rd17; - ld.global.f64 %fd23, [%rd18]; - add.f64 %fd24, %fd22, %fd23; - add.s32 %r43, %r9, %r36; - mul.wide.s32 %rd19, %r43, 8; - add.s64 %rd20, %rd6, %rd19; - ld.global.f64 %fd25, [%rd20]; - add.f64 %fd26, %fd24, %fd25; - add.s32 %r44, %r10, %r36; - mul.wide.s32 %rd21, %r44, 8; - add.s64 %rd22, %rd6, %rd21; - ld.global.f64 %fd27, [%rd22]; - add.f64 %fd28, %fd26, %fd27; - add.s32 %r45, %r11, %r36; - mul.wide.s32 %rd23, %r45, 8; - add.s64 %rd24, %rd6, %rd23; - ld.global.f64 %fd29, [%rd24]; - add.f64 %fd30, %fd28, %fd29; - fma.rn.f64 %fd31, %fd3, %fd30, %fd19; - ld.global.f64 %fd32, [%rd8+-24]; - ld.global.f64 %fd33, [%rd8+24]; - add.f64 %fd34, %fd33, %fd32; - add.s32 %r46, %r12, %r36; - mul.wide.s32 %rd25, %r46, 8; - add.s64 %rd26, %rd6, %rd25; - ld.global.f64 %fd35, [%rd26]; - add.f64 %fd36, %fd34, %fd35; - add.s64 %rd27, %rd12, %rd11; - ld.global.f64 %fd37, [%rd27]; - add.f64 %fd38, %fd36, %fd37; - add.s32 %r47, %r13, %r36; - mul.wide.s32 %rd28, %r47, 8; - add.s64 %rd29, %rd6, %rd28; - ld.global.f64 %fd39, [%rd29]; - add.f64 %fd40, %fd38, %fd39; - add.s64 %rd30, %rd16, %rd15; - ld.global.f64 %fd41, [%rd30]; - add.f64 %fd42, %fd40, %fd41; - fma.rn.f64 %fd6, %fd4, %fd42, %fd31; - setp.ge.s32 %p4, %r36, %r20; - @%p4 bra BB2_8; - - mul.wide.s32 %rd33, %r15, 8; - add.s64 %rd34, %rd31, %rd33; - ld.global.f64 %fd43, [%rd34]; - add.f64 %fd44, %fd5, %fd5; - sub.f64 %fd45, %fd44, %fd43; - add.s64 %rd35, %rd32, %rd33; - ld.global.f64 %fd46, [%rd35]; - fma.rn.f64 %fd47, %fd46, %fd6, %fd45; - st.global.f64 [%rd34], %fd47; - -BB2_8: - add.s32 %r16, %r14, 32; - setp.lt.s32 %p5, %r16, %r20; - mov.u32 %r53, %r16; - @%p5 bra BB2_6; - -BB2_9: - add.s32 %r17, %r4, 1; - setp.lt.s32 %p6, %r17, %r22; - mov.u32 %r52, %r17; - @%p6 bra BB2_4; - -BB2_10: - add.s32 %r51, %r51, 1; - add.s32 %r49, %r23, %r26; - add.s32 %r50, %r49, 1; - setp.lt.s32 %p7, %r51, %r50; - @%p7 bra BB2_2; - -BB2_11: - ret; -} - - diff --git a/examples/stencil/stencil2.ptx b/examples/stencil/stencil2.ptx deleted file mode 100644 index 3e5dfd92..00000000 --- a/examples/stencil/stencil2.ptx +++ /dev/null @@ -1,247 +0,0 @@ -// -// Generated by LLVM NVPTX Back-End -// - -.version 3.1 -.target sm_20, texmode_independent -.address_size 64 - - // .globl stencil_step_task - // @stencil_step_task -.entry stencil_step_task( - .param .u32 stencil_step_task_param_0, - .param .u32 stencil_step_task_param_1, - .param .u32 stencil_step_task_param_2, - .param .u32 stencil_step_task_param_3, - .param .u32 stencil_step_task_param_4, - .param .u32 stencil_step_task_param_5, - .param .u32 stencil_step_task_param_6, - .param .u32 stencil_step_task_param_7, - .param .u64 .ptr .align 8 stencil_step_task_param_8, - .param .u64 .ptr .align 8 stencil_step_task_param_9, - .param .u64 .ptr .align 8 stencil_step_task_param_10, - .param .u64 .ptr .align 8 stencil_step_task_param_11 -) -{ - .reg .pred %p<396>; - .reg .s16 %rc<396>; - .reg .s16 %rs<396>; - .reg .s32 %r<396>; - .reg .s64 %rl<396>; - .reg .f32 %f<396>; - .reg .f64 %fl<396>; - -// BB#0: // %allocas - mov.u32 %r12, %ctaid.x; - ld.param.u32 %r13, [stencil_step_task_param_4]; - add.s32 %r16, %r12, %r13; - add.s32 %r0, %r16, 1; - setp.ge.s32 %p0, %r16, %r0; - @%p0 bra BB0_11; -// BB#1: // %for_test28.i.preheader.lr.ph - ld.param.u32 %r0, [stencil_step_task_param_0]; - ld.param.u32 %r1, [stencil_step_task_param_1]; - ld.param.u32 %r2, [stencil_step_task_param_2]; - ld.param.u32 %r3, [stencil_step_task_param_3]; - ld.param.u32 %r4, [stencil_step_task_param_5]; - ld.param.u32 %r5, [stencil_step_task_param_6]; - mul.lo.s32 %r5, %r5, %r4; - ld.param.u64 %rl3, [stencil_step_task_param_8]; - ld.f64 %fl0, [%rl3]; - ld.f64 %fl1, [%rl3+8]; - ld.param.u64 %rl0, [stencil_step_task_param_9]; - ld.f64 %fl2, [%rl3+16]; - ld.param.u64 %rl1, [stencil_step_task_param_10]; - ld.param.u64 %rl2, [stencil_step_task_param_11]; - ld.f64 %fl3, [%rl3+24]; - shl.b32 %r6, %r4, 1; - mul.lo.s32 %r7, %r4, 3; - mul.lo.s32 %r8, %r4, -3; - shl.b32 %r9, %r5, 1; - mul.lo.s32 %r10, %r5, 3; - mul.lo.s32 %r11, %r5, -3; - add.s32 %r12, %r12, %r13; - neg.s32 %r13, %r9; - neg.s32 %r14, %r6; - mov.u32 %r32, WARP_SZ; -BB0_2: // %for_test28.i.preheader - // =>This Loop Header: Depth=1 - // Child Loop BB0_9 Depth 2 - // Child Loop BB0_5 Depth 3 - mov.u32 %r15, %r16; - setp.ge.s32 %p0, %r2, %r3; - @%p0 bra BB0_10; -// BB#3: // %for_test35.i.preheader.lr.ph - // in Loop: Header=BB0_2 Depth=1 - setp.lt.s32 %p0, %r0, %r1; - @%p0 bra BB0_4; - bra.uni BB0_10; -BB0_4: // in Loop: Header=BB0_2 Depth=1 - mul.lo.s32 %r16, %r15, %r5; - mov.u32 %r17, %r2; -BB0_9: // %for_loop37.i.lr.ph.us - // Parent Loop BB0_2 Depth=1 - // => This Loop Header: Depth=2 - // Child Loop BB0_5 Depth 3 - mad.lo.s32 %r18, %r17, %r4, %r16; - add.s32 %r19, %r18, %r4; - add.s32 %r20, %r18, %r6; - sub.s32 %r21, %r18, %r4; - add.s32 %r22, %r18, %r7; - add.s32 %r23, %r18, %r14; - add.s32 %r24, %r18, %r5; - add.s32 %r25, %r18, %r8; - add.s32 %r26, %r18, %r9; - sub.s32 %r27, %r18, %r5; - add.s32 %r28, %r18, %r10; - add.s32 %r29, %r18, %r13; - add.s32 %r30, %r18, %r11; - mov.u32 %r31, %r0; -BB0_5: // %for_loop37.i.us - // Parent Loop BB0_2 Depth=1 - // Parent Loop BB0_9 Depth=2 - // => This Inner Loop Header: Depth=3 - mov.u32 %r33, %tid.x; - add.s32 %r34, %r32, -1; - and.b32 %r33, %r34, %r33; - add.s32 %r33, %r33, %r31; - setp.ge.s32 %p0, %r33, %r1; - @%p0 bra BB0_7; -// BB#6: // %pl_dolane.i.us - // in Loop: Header=BB0_5 Depth=3 - add.s32 %r34, %r18, %r33; - shl.b32 %r34, %r34, 3; - add.s32 %r35, %r34, -8; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl4, [%rl3]; - add.s32 %r35, %r34, 8; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl5, [%rl3]; - add.s32 %r35, %r34, -16; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl6, [%rl3]; - add.s32 %r35, %r34, 16; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl9, [%rl3]; - add.s32 %r35, %r19, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl8, [%rl3]; - add.s32 %r35, %r34, -24; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl7, [%rl3]; - add.s32 %r35, %r34, 24; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl10, [%rl3]; - add.s32 %r35, %r20, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl13, [%rl3]; - add.s32 %r35, %r21, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl12, [%rl3]; - add.s32 %r35, %r22, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl11, [%rl3]; - add.s32 %r35, %r23, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl16, [%rl3]; - add.s32 %r35, %r24, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl15, [%rl3]; - add.s32 %r35, %r25, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl14, [%rl3]; - add.s32 %r35, %r26, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl19, [%rl3]; - add.s32 %r35, %r27, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl18, [%rl3]; - add.s32 %r35, %r28, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl17, [%rl3]; - add.s32 %r35, %r29, %r33; - shl.b32 %r35, %r35, 3; - cvt.s64.s32 %rl3, %r35; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl24, [%rl3]; - cvt.s64.s32 %rl4, %r34; - add.s64 %rl3, %rl4, %rl1; - ld.f64 %fl21, [%rl3]; - add.s32 %r33, %r30, %r33; - shl.b32 %r33, %r33, 3; - cvt.s64.s32 %rl3, %r33; - add.s64 %rl3, %rl3, %rl1; - ld.f64 %fl20, [%rl3]; - add.s64 %rl3, %rl4, %rl2; - ld.f64 %fl23, [%rl3]; - add.s64 %rl4, %rl4, %rl0; - ld.f64 %fl22, [%rl4]; - add.f64 %fl25, %fl21, %fl21; - sub.f64 %fl23, %fl25, %fl23; - add.f64 %fl6, %fl6, %fl9; - add.f64 %fl6, %fl6, %fl13; - add.f64 %fl6, %fl6, %fl16; - add.f64 %fl6, %fl6, %fl19; - add.f64 %fl6, %fl6, %fl24; - add.f64 %fl4, %fl4, %fl5; - add.f64 %fl4, %fl4, %fl8; - add.f64 %fl4, %fl4, %fl12; - add.f64 %fl4, %fl4, %fl15; - add.f64 %fl4, %fl4, %fl18; - mul.f64 %fl5, %fl0, %fl21; - fma.rn.f64 %fl4, %fl1, %fl4, %fl5; - fma.rn.f64 %fl4, %fl2, %fl6, %fl4; - add.f64 %fl5, %fl7, %fl10; - add.f64 %fl5, %fl5, %fl11; - add.f64 %fl5, %fl5, %fl14; - add.f64 %fl5, %fl5, %fl17; - add.f64 %fl5, %fl5, %fl20; - fma.rn.f64 %fl4, %fl3, %fl5, %fl4; - fma.rn.f64 %fl4, %fl4, %fl22, %fl23; - st.f64 [%rl3], %fl4; -BB0_7: // %safe_if_after_true.i.us - // in Loop: Header=BB0_5 Depth=3 - add.s32 %r31, %r32, %r31; - setp.lt.s32 %p0, %r31, %r1; - @%p0 bra BB0_5; -// BB#8: // %for_exit38.i.us - // in Loop: Header=BB0_9 Depth=2 - add.s32 %r17, %r17, 1; - setp.eq.s32 %p0, %r17, %r3; - @%p0 bra BB0_10; - bra.uni BB0_9; -BB0_10: // %for_exit31.i - // in Loop: Header=BB0_2 Depth=1 - add.s32 %r16, %r15, 1; - setp.ne.s32 %p0, %r15, %r12; - @%p0 bra BB0_2; -BB0_11: // %stencil_step___uniuniuniuniuniuniuniuniuniun_3C_Cund_3E_un_3C_Cund_3E_un_3C_Cund_3E_un_3C_und_3E_.exit - ret; -} - diff --git a/examples/stencil/stencil_cu.cpp b/examples/stencil/stencil_cu.cpp deleted file mode 100644 index 3f06e841..00000000 --- a/examples/stencil/stencil_cu.cpp +++ /dev/null @@ -1,317 +0,0 @@ -/* - Copyright (c) 2010-2011, Intel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifdef _MSC_VER -#define _CRT_SECURE_NO_WARNINGS -#define NOMINMAX -#pragma warning (disable: 4244) -#pragma warning (disable: 4305) -#endif - -#include -#include -#include -#include "../timing.h" -#include "stencil_ispc.h" -using namespace ispc; - -#include -#include -#include -#include "drvapi_error_string.h" - -#define checkCudaErrors(err) __checkCudaErrors (err, __FILE__, __LINE__) -// These are the inline versions for all of the SDK helper functions -void __checkCudaErrors(CUresult err, const char *file, const int line) { - if(CUDA_SUCCESS != err) { - std::cerr << "checkCudeErrors() Driver API error = " << err << "\"" - << getCudaDrvErrorString(err) << "\" from file <" << file - << ", line " << line << "\n"; - exit(-1); - } -} - -/**********************/ -/* Basic CUDriver API */ -CUcontext context; - -void createContext(const int deviceId = 0) -{ - CUdevice device; - int devCount; - checkCudaErrors(cuInit(0)); - checkCudaErrors(cuDeviceGetCount(&devCount)); - assert(devCount > 0); - checkCudaErrors(cuDeviceGet(&device, deviceId < devCount ? deviceId : 0)); - - char name[128]; - checkCudaErrors(cuDeviceGetName(name, 128, device)); - std::cout << "Using CUDA Device [0]: " << name << "\n"; - - int devMajor, devMinor; - checkCudaErrors(cuDeviceComputeCapability(&devMajor, &devMinor, device)); - std::cout << "Device Compute Capability: " - << devMajor << "." << devMinor << "\n"; - if (devMajor < 2) { - std::cerr << "ERROR: Device 0 is not SM 2.0 or greater\n"; - exit(1); - } - - // Create driver context - checkCudaErrors(cuCtxCreate(&context, 0, device)); -} -void destroyContext() -{ - checkCudaErrors(cuCtxDestroy(context)); -} - -CUmodule loadModule(const char * module) -{ - CUmodule cudaModule; - checkCudaErrors(cuModuleLoadData(&cudaModule, module)); - return cudaModule; -} -void unloadModule(CUmodule &cudaModule) -{ - checkCudaErrors(cuModuleUnload(cudaModule)); -} - -CUfunction getFunction(CUmodule &cudaModule, const char * function) -{ - CUfunction cudaFunction; - checkCudaErrors(cuModuleGetFunction(&cudaFunction, cudaModule, function)); - return cudaFunction; -} - -CUdeviceptr deviceMalloc(const size_t size) -{ - CUdeviceptr d_buf; - checkCudaErrors(cuMemAlloc(&d_buf, size)); - return d_buf; -} -void deviceFree(CUdeviceptr d_buf) -{ - checkCudaErrors(cuMemFree(d_buf)); -} -void memcpyD2H(void * h_buf, CUdeviceptr d_buf, const size_t size) -{ - checkCudaErrors(cuMemcpyDtoH(h_buf, d_buf, size)); -} -void memcpyH2D(CUdeviceptr d_buf, void * h_buf, const size_t size) -{ - checkCudaErrors(cuMemcpyHtoD(d_buf, h_buf, size)); -} -#define deviceLaunch(func,nbx,nby,nbz,params) \ - checkCudaErrors( \ - cuLaunchKernel( \ - (func), \ - (nbx), (nby), (nbz), \ - 32, 1, 1, \ - 0, NULL, (params), NULL \ - )); - -typedef CUdeviceptr devicePtr; - - -/**************/ - -extern "C" -{ - - void *CUDAAlloc(void **handlePtr, int64_t size, int32_t alignment) - { - return NULL; - } - void CUDALaunch( - void **handlePtr, - const char * module_name, - const char * module, - const char * func_name, - void **func_args, - int countx, int county, int countz) - { - assert(module_name != NULL); - assert(module != NULL); - assert(func_name != NULL); - assert(func_args != NULL); - CUmodule cudaModule = loadModule(module); - CUfunction cudaFunction = getFunction(cudaModule, func_name); - deviceLaunch(cudaFunction, countx, county, countz, func_args); - unloadModule(cudaModule); - } - void CUDASync(void *handle) - { - checkCudaErrors(cuStreamSynchronize(0)); - } - void ISPCSync(void *handle) - { - checkCudaErrors(cuStreamSynchronize(0)); - } - void CUDAFree(void *handle) - { - } -} - - -extern void loop_stencil_serial(int t0, int t1, int x0, int x1, - int y0, int y1, int z0, int z1, - int Nx, int Ny, int Nz, - const double coef[5], - const double vsq[], - double Aeven[], double Aodd[]); - - -void InitData(int Nx, int Ny, int Nz, double *A[2], double *vsq) { - int offset = 0; - for (int z = 0; z < Nz; ++z) - for (int y = 0; y < Ny; ++y) - for (int x = 0; x < Nx; ++x, ++offset) { - A[0][offset] = (x < Nx / 2) ? x / double(Nx) : y / double(Ny); - A[1][offset] = 0; - vsq[offset] = x*y*z / double(Nx * Ny * Nz); - } -} - - -int main() { - int Nx = 256, Ny = 256, Nz = 256; - int width = 4; - double *Aserial[2], *Aispc[2]; - Aserial[0] = new double [Nx * Ny * Nz]; - Aserial[1] = new double [Nx * Ny * Nz]; - Aispc[0] = new double [Nx * Ny * Nz]; - Aispc[1] = new double [Nx * Ny * Nz]; - double *vsq = new double [Nx * Ny * Nz]; - - double coeff[4] = { 0.5, -.25, .125, -.0625 }; - - /*******************/ - createContext(); - /*******************/ - - const size_t bufsize = sizeof(double)*Nx*Ny*Nz; - devicePtr d_Aispc0 = deviceMalloc(bufsize); - devicePtr d_Aispc1 = deviceMalloc(bufsize); - devicePtr d_vsq = deviceMalloc(bufsize); - devicePtr d_coeff = deviceMalloc(4*sizeof(double)); - - - InitData(Nx, Ny, Nz, Aispc, vsq); - - // - // Compute the image using the ispc implementation on one core; report - // the minimum time of three runs. - // - double minTimeISPC = 1e30; - for (int i = 0; i < 3; ++i) { - reset_and_start_timer(); - loop_stencil_ispc(0, 6, width, Nx - width, width, Ny - width, - width, Nz - width, Nx, Ny, Nz, coeff, vsq, - Aispc[0], Aispc[1]); - double dt = get_elapsed_mcycles(); - minTimeISPC = std::min(minTimeISPC, dt); - } - - printf("[stencil ispc 1 core]:\t\t[%.3f] million cycles\n", minTimeISPC); - - InitData(Nx, Ny, Nz, Aispc, vsq); - - memcpyH2D(d_Aispc0, Aispc[0], bufsize); - memcpyH2D(d_Aispc1, Aispc[1], bufsize); - memcpyH2D(d_vsq, vsq, bufsize); - memcpyH2D(d_coeff, coeff, 4*sizeof(double)); - // - // Compute the image using the ispc implementation with tasks; report - // the minimum time of three runs. - // - double minTimeISPCTasks = 1e30; - for (int i = 0; i < 3; ++i) { - reset_and_start_timer(); - loop_stencil_ispc_tasks(0, 6, width, Nx - width, width, Ny - width, - width, Nz - width, Nx, Ny, Nz, (double*)d_coeff, (double*)d_vsq, - (double*)d_Aispc0, (double*)d_Aispc1); - double dt = get_elapsed_mcycles(); - minTimeISPCTasks = std::min(minTimeISPCTasks, dt); - } - memcpyD2H(Aispc[1], d_Aispc1, bufsize); - //memcpyD2H(Aispc[1], d_vsq, bufsize); - - printf("[stencil ispc + tasks]:\t\t[%.3f] million cycles\n", minTimeISPCTasks); - - InitData(Nx, Ny, Nz, Aserial, vsq); - - // - // And run the serial implementation 3 times, again reporting the - // minimum time. - // - double minTimeSerial = 1e30; - for (int i = 0; i < 3; ++i) { - reset_and_start_timer(); - loop_stencil_serial(0, 6, width, Nx-width, width, Ny - width, - width, Nz - width, Nx, Ny, Nz, coeff, vsq, - Aserial[0], Aserial[1]); - double dt = get_elapsed_mcycles(); - minTimeSerial = std::min(minTimeSerial, dt); - } - - printf("[stencil serial]:\t\t[%.3f] million cycles\n", minTimeSerial); - - printf("\t\t\t\t(%.2fx speedup from ISPC, %.2fx speedup from ISPC + tasks)\n", - minTimeSerial / minTimeISPC, minTimeSerial / minTimeISPCTasks); - - // Check for agreement - int offset = 0; - int nerr = 0; - for (int z = 0; z < Nz; ++z) - for (int y = 0; y < Ny; ++y) - for (int x = 0; x < Nx; ++x, ++offset) { - - double error = fabsf((Aserial[1][offset] - Aispc[1][offset]) / - Aserial[1][offset]); - if (error > 1e-3) - { - if (nerr < 100) - printf("Error @ (%d,%d,%d): ispc = %g, serial = %g error= %g\n", - x, y, z, Aispc[1][offset], Aserial[1][offset], error); - nerr++; - } - } - - fprintf(stderr, " nerr= %d frac= %g \n", nerr, 1.0*nerr/(1.0*Nx*Ny*Nz)); - - /*******************/ - destroyContext(); - /*******************/ - - return 0; -} diff --git a/examples/stencil/stencil_cu.o b/examples/stencil/stencil_cu.o deleted file mode 100644 index 90b014c6a6ff571d572a9eb4be61fde79c2b2a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18464 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 diff --git a/examples/stencil/stencil_parallel.cpp b/examples/stencil/stencil_parallel.cpp deleted file mode 100644 index 30ded2cd..00000000 --- a/examples/stencil/stencil_parallel.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - Copyright (c) 2010-2011, Intel Corporation - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of Intel Corporation nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER - OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - - -static void -stencil_step(int x0, int x1, - int y0, int y1, - int z0, int z1, - int Nx, int Ny, int Nz, - const float coef[4], const float vsq[], - const float Ain[], float Aout[]) { - int Nxy = Nx * Ny; - -#pragma omp parallel for - for (int z = z0; z < z1; ++z) { - for (int y = y0; y < y1; ++y) { - for (int x = x0; x < x1; ++x) { - int index = (z * Nxy) + (y * Nx) + x; -#define A_cur(x, y, z) Ain[index + (x) + ((y) * Nx) + ((z) * Nxy)] -#define A_next(x, y, z) Aout[index + (x) + ((y) * Nx) + ((z) * Nxy)] - float div = coef[0] * A_cur(0, 0, 0) + - coef[1] * (A_cur(+1, 0, 0) + A_cur(-1, 0, 0) + - A_cur(0, +1, 0) + A_cur(0, -1, 0) + - A_cur(0, 0, +1) + A_cur(0, 0, -1)) + - coef[2] * (A_cur(+2, 0, 0) + A_cur(-2, 0, 0) + - A_cur(0, +2, 0) + A_cur(0, -2, 0) + - A_cur(0, 0, +2) + A_cur(0, 0, -2)) + - coef[3] * (A_cur(+3, 0, 0) + A_cur(-3, 0, 0) + - A_cur(0, +3, 0) + A_cur(0, -3, 0) + - A_cur(0, 0, +3) + A_cur(0, 0, -3)); - - A_next(0, 0, 0) = 2 * A_cur(0, 0, 0) - A_next(0, 0, 0) + - vsq[index] * div; - } - } - } -} - - -void loop_stencil_parallel(int t0, int t1, - int x0, int x1, - int y0, int y1, - int z0, int z1, - int Nx, int Ny, int Nz, - const float coef[4], - const float vsq[], - float Aeven[], float Aodd[]) -{ - for (int t = t0; t < t1; ++t) { - if ((t & 1) == 0) - stencil_step(x0, x1, y0, y1, z0, z1, Nx, Ny, Nz, coef, vsq, - Aeven, Aodd); - else - stencil_step(x0, x1, y0, y1, z0, z1, Nx, Ny, Nz, coef, vsq, - Aodd, Aeven); - } -} diff --git a/examples/volume_rendering/volume_ispc.bc b/examples/volume_rendering/volume_ispc.bc deleted file mode 100644 index 4a7c47b9f51b97b46f977e621b22e3afd51ab36d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455740 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