diff --git a/projects/hip-tests/samples/0_Intro/module_api/Makefile b/projects/hip-tests/samples/0_Intro/module_api/Makefile new file mode 100644 index 0000000000..b58882b0fd --- /dev/null +++ b/projects/hip-tests/samples/0_Intro/module_api/Makefile @@ -0,0 +1,19 @@ +HIP_PATH?= $(wildcard /opt/rocm/hip) +ifeq (,$(HIP_PATH)) + HIP_PATH=../../.. +endif +HIPCC=$(HIP_PATH)/bin/hipcc + +all: vcpy_isa.compile runKernel.hip.out + +runKernel.cuda.out: runKernel.cpp + nvcc runKernel.cpp -o $@ + +vcpy_isa.compile: vcpy_isa.cpp + $(HIPCC) --genisa --target-isa=fiji vcpy_isa.cpp -o vcpy_isa.co + +runKernel.hip.out: runKernel.cpp + $(HIPCC) runKernel.cpp -o runKernel.hip.out + +clean: + rm -f *.co *.out diff --git a/projects/hip-tests/samples/0_Intro/module_api/runKernel.cpp b/projects/hip-tests/samples/0_Intro/module_api/runKernel.cpp new file mode 100644 index 0000000000..e4fa1b6d93 --- /dev/null +++ b/projects/hip-tests/samples/0_Intro/module_api/runKernel.cpp @@ -0,0 +1,105 @@ +/* +Copyright (c) 2015-2016 Advanced Micro Devices, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANNTY OF ANY KIND, EXPRESS OR +IMPLIED, INNCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANNY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +#include +#include +#include +#include +#include + +#define LEN 64 +#define SIZE LEN<<2 + +#ifdef __HIP_PLATFORM_HCC__ +#define fileName "vcpy_isa.co" +#define kernel_name "ZN12_GLOBAL__N_146_Z11hello_world16grid_launch_parmPfS0__functor19__cxxamp_trampolineEiiiiiiPKfPf" +#endif + +#ifdef __HIP_PLATFORM_NVCC__ +#define fileName "vcpy_isa.ptx" +#define kernel_name "hello_world" +#endif + +int main(){ + float *A, *B; + hipDeviceptr_t Ad, Bd; + A = new float[LEN]; + B = new float[LEN]; + + for(uint32_t i=0;iargBuffer(5); + uint32_t *ptr32_t = (uint32_t*)&argBuffer[0]; + memcpy(ptr32_t + 0, &one, sizeof(uint32_t)); + memcpy(ptr32_t + 1, &one, sizeof(uint32_t)); + memcpy(ptr32_t + 2, &one, sizeof(uint32_t)); + memcpy(ptr32_t + 3, &len, sizeof(uint32_t)); + memcpy(ptr32_t + 4, &one, sizeof(uint32_t)); + memcpy(ptr32_t + 5, &one, sizeof(uint32_t)); + memcpy(&argBuffer[3], &Ad, sizeof(void*)); + memcpy(&argBuffer[4], &Bd, sizeof(void*)); + + + + size_t size = argBuffer.size()*sizeof(void*); + + void *config[] = { + HIP_LAUNCH_PARAM_BUFFER_POINTER, &argBuffer[0], + HIP_LAUNCH_PARAM_BUFFER_SIZE, &size, + HIP_LAUNCH_PARAM_END + }; + + hipModuleLaunchKernel(Function, 1, 1, 1, LEN, 1, 1, 0, 0, NULL, (void**)&config); + + hipMemcpyDtoH(B, Bd, SIZE); + for(uint32_t i=LEN-4;i + +__global__ void hello_world(hipLaunchParm lp, float *a, float *b) +{ + int tx = hipThreadIdx_x; + b[tx] = a[tx]; +} + +int main(){} diff --git a/projects/hip-tests/samples/0_Intro/module_api/vcpy_isa.cu b/projects/hip-tests/samples/0_Intro/module_api/vcpy_isa.cu new file mode 100644 index 0000000000..d2a0838604 --- /dev/null +++ b/projects/hip-tests/samples/0_Intro/module_api/vcpy_isa.cu @@ -0,0 +1,6 @@ + +extern "C" __global__ void hello_world(float *a, float *b) +{ + int tx = threadIdx.x; + b[tx] = a[tx]; +} diff --git a/projects/hip-tests/samples/0_Intro/module_api/vcpy_isa.ptx b/projects/hip-tests/samples/0_Intro/module_api/vcpy_isa.ptx new file mode 100644 index 0000000000..62eb3f63df --- /dev/null +++ b/projects/hip-tests/samples/0_Intro/module_api/vcpy_isa.ptx @@ -0,0 +1,38 @@ +// +// Generated by NVIDIA NVVM Compiler +// +// Compiler Build ID: CL-19856038 +// Cuda compilation tools, release 7.5, V7.5.17 +// Based on LLVM 3.4svn +// + +.version 4.3 +.target sm_20 +.address_size 64 + + // .globl hello_world + +.visible .entry hello_world( + .param .u64 hello_world_param_0, + .param .u64 hello_world_param_1 +) +{ + .reg .f32 %f<2>; + .reg .b32 %r<2>; + .reg .b64 %rd<8>; + + + ld.param.u64 %rd1, [hello_world_param_0]; + ld.param.u64 %rd2, [hello_world_param_1]; + cvta.to.global.u64 %rd3, %rd2; + cvta.to.global.u64 %rd4, %rd1; + mov.u32 %r1, %tid.x; + mul.wide.s32 %rd5, %r1, 4; + add.s64 %rd6, %rd4, %rd5; + ld.global.f32 %f1, [%rd6]; + add.s64 %rd7, %rd3, %rd5; + st.global.f32 [%rd7], %f1; + ret; +} + +